mirror of
https://github.com/Motschen/Blur.git
synced 2025-12-13 02: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;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import eu.midnightdust.blur.Blur;
|
||||
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.Objects;
|
||||
import java.util.function.Function;
|
||||
|
||||
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
|
||||
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)
|
||||
public static Comment _gradient;
|
||||
@Entry(category = STYLE)
|
||||
@@ -68,13 +72,6 @@ public class BlurConfig extends MidnightConfig {
|
||||
@Entry(category = ANIMATIONS)
|
||||
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 {
|
||||
// Based on https://gist.github.com/dev-hydrogen/21a66f83f0386123e0c0acf107254843
|
||||
// Thank you very much!
|
||||
@@ -102,4 +99,51 @@ public class BlurConfig extends MidnightConfig {
|
||||
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.gradientRotation": "Farbverlauf-Rotation",
|
||||
"blur.midnightconfig.excludedScreens": "Ausgeschlossene Bildschirme",
|
||||
"blur.midnightconfig._general": "§7⛏ Generell",
|
||||
"blur.midnightconfig._advanced": "§7⚒ Fortgeschritten",
|
||||
"blur.midnightconfig._blur": "§7▒ Unschärfe",
|
||||
"blur.midnightconfig._gradient": "§7\uD83D\uDFE2 Farbverlauf",
|
||||
"blur.midnightconfig._animations": "§7\uD83D\uDCFD Animationen"
|
||||
"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"
|
||||
}
|
||||
@@ -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.forceDisabledScreens": "Force-disabled Screens",
|
||||
"blur.midnightconfig.forceDisabledScreens.tooltip": "Screens where the vanilla blur effect should be force-disabled",
|
||||
"blur.midnightconfig._general": "§7⛏ General",
|
||||
"blur.midnightconfig._advanced": "§7⚒ Advanced",
|
||||
"blur.midnightconfig._blur": "§7▒ Blur",
|
||||
"blur.midnightconfig._gradient": "§7\uD83D\uDFE2 Gradient",
|
||||
"blur.midnightconfig._animations": "§7\uD83D\uDCFD Animations"
|
||||
"blur.midnightconfig._general": "⛏ General",
|
||||
"blur.midnightconfig._advanced": "⚒ Advanced",
|
||||
"blur.midnightconfig._blur": "▒ Blur",
|
||||
"blur.midnightconfig._gradient": "\uD83D\uDFE2 Gradient",
|
||||
"blur.midnightconfig._animations": "\uD83D\uDCFD Animations"
|
||||
}
|
||||
@@ -8,8 +8,6 @@
|
||||
"MixinGameRenderer",
|
||||
"MixinHandledScreen",
|
||||
"MixinInGameHud",
|
||||
"MixinMidnightConfig",
|
||||
"MixinMidnightConfig$EntryInfo",
|
||||
"MixinMinecraftClient",
|
||||
"MixinScreen",
|
||||
"MixinTitleScreen",
|
||||
|
||||
@@ -22,7 +22,9 @@
|
||||
"authors": [
|
||||
"Motschen",
|
||||
"tterrag1098",
|
||||
"Pyrofab",
|
||||
"Pyrofab"
|
||||
],
|
||||
"contributors": [
|
||||
"backryun",
|
||||
"byquanton"
|
||||
],
|
||||
@@ -31,6 +33,7 @@
|
||||
"blur.mixins.json"
|
||||
],
|
||||
"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
|
||||
|
||||
# Mod Properties
|
||||
mod_version=5.2.0
|
||||
mod_version=5.2.1
|
||||
maven_group=eu.midnightdust.blur
|
||||
archives_base_name=blur
|
||||
release_type=release
|
||||
@@ -23,5 +23,5 @@ neoforge_version=21.4.10-beta
|
||||
yarn_mappings_patch_neoforge_version = 1.21+build.4
|
||||
|
||||
# Libraries
|
||||
midnightlib_version = 1.7.0+1.21.4
|
||||
midnightlib_version = 1.7.3+1.21.4
|
||||
modmenu_version = 11.0.2
|
||||
|
||||
@@ -28,4 +28,11 @@ modId = "minecraft"
|
||||
mandatory = true
|
||||
versionRange = "[1.21.2,)"
|
||||
ordering = "NONE"
|
||||
side = "CLIENT"
|
||||
|
||||
[[dependencies.blur]]
|
||||
modId = "midnightlib"
|
||||
mandatory = true
|
||||
versionRange = "[1.7.3,)"
|
||||
ordering = "NONE"
|
||||
side = "CLIENT"
|
||||
Reference in New Issue
Block a user