mirror of
https://github.com/Motschen/Blur.git
synced 2025-12-15 19:25: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",
|
||||
|
||||
Reference in New Issue
Block a user