Blur 2.4.0 - Ingame-Configurable Exclusions & Fixes

- Made Blur exclusions configurable in-game
- ReplayMod and ProjectInception screens are excluded by default
- Update to MidnightLib 3.0.0
- Fix version in fabric.mod.json
This commit is contained in:
Motschen
2021-10-31 16:20:23 +01:00
parent 895448b13d
commit f792d34295
15 changed files with 208 additions and 148 deletions

View File

@@ -7,13 +7,17 @@ import ladysnake.satin.api.managed.ShaderEffectManager;
import ladysnake.satin.api.managed.uniform.Uniform1f;
import net.fabricmc.api.ClientModInitializer;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.Identifier;
import org.apache.commons.lang3.ArrayUtils;
import java.util.ArrayList;
import java.util.List;
public class Blur implements ClientModInitializer {
public static final String MODID = "blur";
public static List<String> defaultExclusions = new ArrayList<>();
private long start;
public int colorFirst, colorSecond;
@@ -26,6 +30,9 @@ public class Blur implements ClientModInitializer {
@Override
public void onInitializeClient() {
defaultExclusions.add(ChatScreen.class.getName());
defaultExclusions.add("com.replaymod.lib.de.johni0702.minecraft.gui.container.AbstractGuiOverlay$UserInputGuiScreen");
defaultExclusions.add("ai.arcblroth.projectInception.client.InceptionInterfaceScreen");
BlurConfig.init("blur", BlurConfig.class);
ShaderEffectRenderCallback.EVENT.register((deltaTick) -> {
@@ -39,7 +46,7 @@ public class Blur implements ClientModInitializer {
private boolean doFade = false;
public void onScreenChange(Screen newGui) {
if (MinecraftClient.getInstance().world != null) {
boolean excluded = newGui == null || ArrayUtils.contains(BlurConfig.blurExclusions, newGui.getClass().getName());
boolean excluded = newGui == null || BlurConfig.blurExclusions.contains(newGui.getClass().getName());
if (!excluded) {
blur.setUniformValue("Radius", (float) BlurConfig.radius);
colorFirst = Integer.parseUnsignedInt(String.valueOf(BlurConfig.gradientStartColor), 16);

View File

@@ -1,11 +1,13 @@
package com.tterrag.blur.config;
import com.tterrag.blur.Blur;
import eu.midnightdust.lib.config.MidnightConfig;
import net.minecraft.client.gui.screen.ChatScreen;
import java.util.List;
public class BlurConfig extends MidnightConfig {
@Entry
public static String[] blurExclusions = new String[]{ ChatScreen.class.getName() };
public static List<String> blurExclusions = Blur.defaultExclusions;
@Entry(min = 0, max = 5000, width = 4)
public static int fadeTimeMillis = 200;
@Entry(min = 0, max = 500, width = 3)
@@ -14,4 +16,6 @@ public class BlurConfig extends MidnightConfig {
public static int gradientStartColor = 75000000;
@Entry(min = 0, max = 99999999, width = 8)
public static int gradientEndColor = 75000000;
@Entry
public static boolean showScreenTitle = false;
}

View File

@@ -1,15 +0,0 @@
package com.tterrag.blur.config;
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@Environment(EnvType.CLIENT)
public class ModMenuIntegration implements ModMenuApi {
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory() {
return parent -> BlurConfig.getScreen(parent,"blur");
}
}

View File

@@ -1,7 +1,11 @@
package com.tterrag.blur.mixin;
import com.tterrag.blur.config.BlurConfig;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.TextColor;
import net.minecraft.util.Formatting;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@@ -22,24 +26,32 @@ public abstract class MixinScreen {
@Shadow @Nullable protected MinecraftClient client;
@Inject(at = @At("HEAD"), method = "render")
private void reloadShader(MatrixStack matrixStack, int i, int j, float f, CallbackInfo ci) {
if (this.getClass().toString().toLowerCase(Locale.ROOT).contains("midnight") && this.client != null) {
@Shadow protected TextRenderer textRenderer;
@Inject(at = @At("HEAD"), method = "tick")
private void blur$reloadShader(CallbackInfo ci) {
if (this.getClass().toString().toLowerCase(Locale.ROOT).contains("midnightconfigscreen") && this.client != null) {
Blur.INSTANCE.onScreenChange(this.client.currentScreen);
}
}
@Inject(at = @At("TAIL"), method = "render")
private void blur$showScreenTitle(MatrixStack matrixStack, int i, int j, float f, CallbackInfo ci) {
if (BlurConfig.showScreenTitle && this.client != null && this.client.currentScreen != null) {
this.textRenderer.drawWithShadow(matrixStack, this.client.currentScreen.getClass().getName(), 0, 0, 16777215, true);
}
}
@ModifyConstant(
method = "renderBackground(Lnet/minecraft/client/util/math/MatrixStack;I)V",
constant = @Constant(intValue = -1072689136))
private int getFirstBackgroundColor(int color) {
private int blur$getFirstBackgroundColor(int color) {
return Blur.INSTANCE.getBackgroundColor(false);
}
@ModifyConstant(
method = "renderBackground(Lnet/minecraft/client/util/math/MatrixStack;I)V",
constant = @Constant(intValue = -804253680))
private int getSecondBackgroundColor(int color) {
private int blur$getSecondBackgroundColor(int color) {
return Blur.INSTANCE.getBackgroundColor(true);
}
}

View File

@@ -1,7 +1,9 @@
{
"blur.midnightconfig.title": "Blur Konfiguration",
"blur.midnightconfig.blurExclusions": "Blur-Ausnahmen",
"blur.midnightconfig.fadeTimeMillis": "Überblendzeit (in Millisekunden)",
"blur.midnightconfig.radius": "Radius",
"blur.midnightconfig.gradientStartColor": "Farbverlauf-Anfangsfarbe",
"blur.midnightconfig.gradientEndColor": "Farbverlauf-Endfarbe"
"blur.midnightconfig.gradientEndColor": "Farbverlauf-Endfarbe",
"blur.midnightconfig.showScreenTitle": "Zeige Bildschirmtitel"
}

View File

@@ -1,8 +1,9 @@
{
"blur.midnightconfig.title": "Blur Config",
"blur.midnightconfig.blurExclusions": "§cBlur Exclusions are currently not configurable in-game!",
"blur.midnightconfig.blurExclusions": "Blur Exclusions",
"blur.midnightconfig.fadeTimeMillis": "Fade Time (in milliseconds)",
"blur.midnightconfig.radius": "Radius",
"blur.midnightconfig.gradientStartColor": "Gradient Start Color",
"blur.midnightconfig.gradientEndColor": "Gradient End Color"
"blur.midnightconfig.gradientEndColor": "Gradient End Color",
"blur.midnightconfig.showScreenTitle": "Show screen title"
}

View File

@@ -1,6 +1,6 @@
{
"blur.midnightconfig.title": "Definições de desfoque",
"blur.midnightconfig.blurExclusions": "Exclusões de desfoque não são configuráveis em jogo no momento.",
"blur.midnightconfig.blurExclusions": "Exclusões de desfoque",
"blur.midnightconfig.fadeTimeMillis": "Esmaecimento (em milissegundos)",
"blur.midnightconfig.radius": "Raio",
"blur.midnightconfig.gradientStartColor": "Cor de início do gradiente",

View File

@@ -1,6 +1,6 @@
{
"blur.midnightconfig.title": "Настройки Blur",
"blur.midnightconfig.blurExclusions": "В настоящее время исключения для размытия не настраиваются в игре.",
"blur.midnightconfig.blurExclusions": "Исключения размытия",
"blur.midnightconfig.fadeTimeMillis": "Время размытия (в милисекундах)",
"blur.midnightconfig.radius": "Радиус размытия",
"blur.midnightconfig.gradientStartColor": "Верхний цвет градиента",

View File

@@ -2,7 +2,7 @@
"schemaVersion": 1,
"id": "blur",
"name": "Blur (Fabric)",
"version": "2.3.0",
"version": "$version",
"environment": "client",
"license": "MIT",
"icon": "assets/blur/icon.png",