mirror of
https://github.com/Motschen/Blur.git
synced 2025-12-15 11:15:09 +01:00
feat: use MidnightLib's new widget API for radius slider
This commit is contained in:
@@ -1,10 +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.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.*;
|
||||||
@@ -33,10 +41,6 @@ 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 _blur;
|
|
||||||
@Entry(category = STYLE, isSlider = true, min = 0, max = 20)
|
|
||||||
public static int radius = 5;
|
|
||||||
@Comment(category = STYLE, centered = true)
|
@Comment(category = STYLE, centered = true)
|
||||||
public static Comment _gradient;
|
public static Comment _gradient;
|
||||||
@Entry(category = STYLE)
|
@Entry(category = STYLE)
|
||||||
@@ -68,13 +72,6 @@ public class BlurConfig extends MidnightConfig {
|
|||||||
@Entry(category = ANIMATIONS)
|
@Entry(category = ANIMATIONS)
|
||||||
public static BlurConfig.Easing animationCurve = Easing.FLAT;
|
public static BlurConfig.Easing animationCurve = Easing.FLAT;
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeChanges(String modid) {
|
|
||||||
super.writeChanges(modid);
|
|
||||||
if (MinecraftClient.getInstance().options != null)
|
|
||||||
MinecraftClient.getInstance().options.getMenuBackgroundBlurriness().setValue(radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
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!
|
||||||
@@ -102,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());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
package eu.midnightdust.blur.mixin;
|
|
||||||
|
|
||||||
import eu.midnightdust.blur.Blur;
|
|
||||||
import eu.midnightdust.lib.config.MidnightConfig;
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
|
||||||
import org.spongepowered.asm.mixin.Final;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Mixin(value = MidnightConfig.EntryInfo.class, remap = false)
|
|
||||||
public abstract class MixinMidnightConfig$EntryInfo {
|
|
||||||
@Shadow @Final public String modid;
|
|
||||||
@Shadow @Final public String fieldName;
|
|
||||||
@Shadow Object value;
|
|
||||||
|
|
||||||
@Inject(at = @At(value = "TAIL"), method = "updateFieldValue")
|
|
||||||
private void blur$instantlyApplyRadius(CallbackInfo ci) {
|
|
||||||
if (Objects.equals(modid, Blur.MOD_ID) && Objects.equals(fieldName, "radius"))
|
|
||||||
MinecraftClient.getInstance().options.getMenuBackgroundBlurriness().setValue((int) value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
package eu.midnightdust.blur.mixin;
|
|
||||||
|
|
||||||
import eu.midnightdust.blur.config.BlurConfig;
|
|
||||||
import eu.midnightdust.lib.config.MidnightConfig;
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
|
||||||
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(MidnightConfig.class)
|
|
||||||
public abstract class MixinMidnightConfig {
|
|
||||||
@Inject(at = @At(value = "INVOKE", target = "Lcom/google/gson/Gson;fromJson(Ljava/io/Reader;Ljava/lang/Class;)Ljava/lang/Object;", shift = At.Shift.AFTER), remap = false, method = "loadValuesFromJson")
|
|
||||||
private static void blur$syncRadius(CallbackInfo ci) {
|
|
||||||
BlurConfig.radius = MinecraftClient.getInstance().options.getMenuBackgroundBlurrinessValue();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -28,9 +28,9 @@
|
|||||||
"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": "§7⛏ Generell",
|
"blur.midnightconfig._general": "⛏ Generell",
|
||||||
"blur.midnightconfig._advanced": "§7⚒ Fortgeschritten",
|
"blur.midnightconfig._advanced": "⚒ Fortgeschritten",
|
||||||
"blur.midnightconfig._blur": "§7▒ Unschärfe",
|
"blur.midnightconfig._blur": "▒ Unschärfe",
|
||||||
"blur.midnightconfig._gradient": "§7\uD83D\uDFE2 Farbverlauf",
|
"blur.midnightconfig._gradient": "\uD83D\uDFE2 Farbverlauf",
|
||||||
"blur.midnightconfig._animations": "§7\uD83D\uDCFD Animationen"
|
"blur.midnightconfig._animations": "\uD83D\uDCFD Animationen"
|
||||||
}
|
}
|
||||||
@@ -34,9 +34,9 @@
|
|||||||
"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": "§7⛏ General",
|
"blur.midnightconfig._general": "⛏ General",
|
||||||
"blur.midnightconfig._advanced": "§7⚒ Advanced",
|
"blur.midnightconfig._advanced": "⚒ Advanced",
|
||||||
"blur.midnightconfig._blur": "§7▒ Blur",
|
"blur.midnightconfig._blur": "▒ Blur",
|
||||||
"blur.midnightconfig._gradient": "§7\uD83D\uDFE2 Gradient",
|
"blur.midnightconfig._gradient": "\uD83D\uDFE2 Gradient",
|
||||||
"blur.midnightconfig._animations": "§7\uD83D\uDCFD Animations"
|
"blur.midnightconfig._animations": "\uD83D\uDCFD Animations"
|
||||||
}
|
}
|
||||||
@@ -8,8 +8,6 @@
|
|||||||
"MixinGameRenderer",
|
"MixinGameRenderer",
|
||||||
"MixinHandledScreen",
|
"MixinHandledScreen",
|
||||||
"MixinInGameHud",
|
"MixinInGameHud",
|
||||||
"MixinMidnightConfig",
|
|
||||||
"MixinMidnightConfig$EntryInfo",
|
|
||||||
"MixinMinecraftClient",
|
"MixinMinecraftClient",
|
||||||
"MixinScreen",
|
"MixinScreen",
|
||||||
"MixinTitleScreen",
|
"MixinTitleScreen",
|
||||||
|
|||||||
@@ -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.21.2"
|
"minecraft": ">=1.21.2",
|
||||||
|
"midnightlib": ">=1.7.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ yarn_mappings=1.21.4+build.1
|
|||||||
enabled_platforms=fabric,neoforge
|
enabled_platforms=fabric,neoforge
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version=5.2.0
|
mod_version=5.2.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
|
||||||
@@ -23,5 +23,5 @@ neoforge_version=21.4.10-beta
|
|||||||
yarn_mappings_patch_neoforge_version = 1.21+build.4
|
yarn_mappings_patch_neoforge_version = 1.21+build.4
|
||||||
|
|
||||||
# Libraries
|
# Libraries
|
||||||
midnightlib_version = 1.7.0+1.21.4
|
midnightlib_version = 1.7.3+1.21.4
|
||||||
modmenu_version = 11.0.2
|
modmenu_version = 11.0.2
|
||||||
|
|||||||
@@ -28,4 +28,11 @@ modId = "minecraft"
|
|||||||
mandatory = true
|
mandatory = true
|
||||||
versionRange = "[1.21.2,)"
|
versionRange = "[1.21.2,)"
|
||||||
ordering = "NONE"
|
ordering = "NONE"
|
||||||
|
side = "CLIENT"
|
||||||
|
|
||||||
|
[[dependencies.blur]]
|
||||||
|
modId = "midnightlib"
|
||||||
|
mandatory = true
|
||||||
|
versionRange = "[1.7.3,)"
|
||||||
|
ordering = "NONE"
|
||||||
side = "CLIENT"
|
side = "CLIENT"
|
||||||
Reference in New Issue
Block a user