mirror of
https://github.com/Motschen/Blur.git
synced 2025-12-18 04:35:10 +01:00
2.0.0 - AutoConfig and Fade Fix
This commit is contained in:
@@ -1,40 +1,25 @@
|
||||
package com.tterrag.blur;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.tterrag.blur.config.BlurConfig;
|
||||
import ladysnake.satin.api.event.ShaderEffectRenderCallback;
|
||||
import ladysnake.satin.api.managed.ManagedShaderEffect;
|
||||
import ladysnake.satin.api.managed.ShaderEffectManager;
|
||||
import ladysnake.satin.api.managed.uniform.Uniform1f;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.serializer.JanksonConfigSerializer;
|
||||
import net.fabricmc.api.ClientModInitializer;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
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.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
|
||||
public class Blur implements ClientModInitializer {
|
||||
public static BlurConfig BLUR_CONFIG;
|
||||
|
||||
public static final String MODID = "blur";
|
||||
public static final String MOD_NAME = "Blur";
|
||||
|
||||
static class ConfigJson {
|
||||
String[] blurExclusions = new String[]{ ChatScreen.class.getName() };
|
||||
int fadeTimeMillis = 200;
|
||||
int radius = 8;
|
||||
String gradientStartColor = "75000000";
|
||||
String gradientEndColor = "75000000";
|
||||
}
|
||||
|
||||
private long start;
|
||||
|
||||
public ConfigJson configs = new ConfigJson();
|
||||
public int colorFirst, colorSecond;
|
||||
|
||||
private final ManagedShaderEffect blur = ShaderEffectManager.getInstance().manage(new Identifier(MODID, "shaders/post/fade_in_blur.json"),
|
||||
@@ -45,19 +30,8 @@ public class Blur implements ClientModInitializer {
|
||||
|
||||
@Override
|
||||
public void onInitializeClient() {
|
||||
Path configFile = FabricLoader.getInstance().getConfigDir().resolve(Blur.MODID + ".json");
|
||||
try {
|
||||
if (!Files.exists(configFile)) {
|
||||
Files.createDirectories(configFile.getParent());
|
||||
Files.write(configFile, new GsonBuilder().setPrettyPrinting().create().toJson(configs).getBytes(), StandardOpenOption.CREATE_NEW);
|
||||
} else {
|
||||
configs = new Gson().fromJson(Files.newBufferedReader(configFile), ConfigJson.class);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
colorFirst = Integer.parseUnsignedInt(configs.gradientStartColor, 16);
|
||||
colorSecond = Integer.parseUnsignedInt(configs.gradientEndColor, 16);
|
||||
AutoConfig.register(BlurConfig.class, JanksonConfigSerializer::new);
|
||||
BLUR_CONFIG = AutoConfig.getConfigHolder(BlurConfig.class).getConfig();
|
||||
|
||||
ShaderEffectRenderCallback.EVENT.register((deltaTick) -> {
|
||||
if (start > 0) {
|
||||
@@ -67,23 +41,31 @@ 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(configs.blurExclusions, newGui.getClass().getName());
|
||||
boolean excluded = newGui == null || ArrayUtils.contains(BLUR_CONFIG.blurExclusions, newGui.getClass().getName());
|
||||
if (!excluded) {
|
||||
start = System.currentTimeMillis();
|
||||
blur.setUniformValue("Radius", (float) getRadius());
|
||||
colorFirst = Integer.parseUnsignedInt(BLUR_CONFIG.gradientStartColor, 16);
|
||||
colorSecond = Integer.parseUnsignedInt(BLUR_CONFIG.gradientEndColor, 16);
|
||||
if (doFade == true) {
|
||||
start = System.currentTimeMillis();
|
||||
doFade = false;
|
||||
}
|
||||
} else {
|
||||
start = -1;
|
||||
doFade = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getRadius() {
|
||||
return configs.radius;
|
||||
return BLUR_CONFIG.radius;
|
||||
}
|
||||
|
||||
private float getProgress() {
|
||||
return Math.min((System.currentTimeMillis() - start) / (float) configs.fadeTimeMillis, 1);
|
||||
return Math.min((System.currentTimeMillis() - start) / (float) BLUR_CONFIG.fadeTimeMillis, 1);
|
||||
}
|
||||
|
||||
public int getBackgroundColor(boolean second) {
|
||||
|
||||
26
src/main/java/com/tterrag/blur/config/BlurConfig.java
Normal file
26
src/main/java/com/tterrag/blur/config/BlurConfig.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package com.tterrag.blur.config;
|
||||
|
||||
import com.sun.org.apache.xerces.internal.xs.StringList;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.ConfigData;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.ConfigHolder;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.ConfigManager;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.annotation.Config;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.annotation.ConfigEntry;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.gui.registry.DefaultGuiRegistryAccess;
|
||||
import me.shedaniel.clothconfig2.api.ConfigScreen;
|
||||
import net.minecraft.client.gui.screen.ChatScreen;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Config(name = "blur")
|
||||
@SuppressWarnings("No GUI provider registered")
|
||||
public class BlurConfig implements ConfigData {
|
||||
@ConfigEntry.Gui.Excluded
|
||||
public String[] blurExclusions = new String[]{ ChatScreen.class.getName() };
|
||||
public int fadeTimeMillis = 200;
|
||||
public int radius = 8;
|
||||
public String gradientStartColor = "75000000";
|
||||
public String gradientEndColor = "75000000";
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.tterrag.blur.config;
|
||||
|
||||
import io.github.prospector.modmenu.api.ConfigScreenFactory;
|
||||
import io.github.prospector.modmenu.api.ModMenuApi;
|
||||
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
@SuppressWarnings("No GUI provider registered")
|
||||
public class ModMenuIntegration implements ModMenuApi {
|
||||
|
||||
@Override
|
||||
public ConfigScreenFactory<?> getModConfigScreenFactory() {
|
||||
return parent -> AutoConfig.getConfigScreen(BlurConfig.class, parent).get();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user