1
mirror of https://github.com/Shiewk/Widgets.git synced 2026-04-28 11:34:17 +02:00

Widget settings refactoring changes

This commit is contained in:
Shy
2025-12-26 12:03:42 +01:00
parent fed5cdc819
commit 70c6248dc6
30 changed files with 139 additions and 129 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
# Done to increase the memory available to gradle. # Done to increase the memory available to Gradle.
org.gradle.jvmargs=-Xmx1G org.gradle.jvmargs=-Xmx1G
# Fabric Properties # Fabric Properties
# check these on https://modmuss50.me/fabric.html # check these on https://modmuss50.me/fabric.html
@@ -1,5 +1,6 @@
package de.shiewk.widgets; package de.shiewk.widgets;
import de.shiewk.widgets.widgets.settings.WidgetSettingOption;
import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
import net.minecraft.text.Text; import net.minecraft.text.Text;
@@ -13,7 +14,7 @@ public abstract class ModWidget {
private final Identifier id; private final Identifier id;
private final WidgetSettings settings; private final WidgetSettings settings;
protected ModWidget(Identifier id, List<WidgetSettingOption> customSettings) { protected ModWidget(Identifier id, List<WidgetSettingOption<?>> customSettings) {
Objects.requireNonNull(id, "id"); Objects.requireNonNull(id, "id");
this.id = id; this.id = id;
this.settings = WidgetSettings.ofId(id, customSettings); this.settings = WidgetSettings.ofId(id, customSettings);
@@ -4,6 +4,7 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonSyntaxException; import com.google.gson.JsonSyntaxException;
import de.shiewk.widgets.client.WidgetManager; import de.shiewk.widgets.client.WidgetManager;
import de.shiewk.widgets.widgets.settings.WidgetSettingOption;
import it.unimi.dsi.fastutil.objects.ObjectArrayList; import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
@@ -18,9 +19,9 @@ public class WidgetSettings {
public int offsetX = 0; public int offsetX = 0;
public int offsetY = 0; public int offsetY = 0;
private boolean enabled = false; private boolean enabled = false;
private final ObjectArrayList<WidgetSettingOption> customSettings; private final ObjectArrayList<WidgetSettingOption<?>> customSettings;
private WidgetSettings(JsonObject data, List<WidgetSettingOption> settings){ private WidgetSettings(JsonObject data, List<WidgetSettingOption<?>> settings){
customSettings = new ObjectArrayList<>(settings); customSettings = new ObjectArrayList<>(settings);
if (data != null){ if (data != null){
try { try {
@@ -39,7 +40,7 @@ public class WidgetSettings {
final JsonElement s = data.get("settings"); final JsonElement s = data.get("settings");
if (s != null && s.isJsonObject()){ if (s != null && s.isJsonObject()){
final JsonObject savedSettings = s.getAsJsonObject(); final JsonObject savedSettings = s.getAsJsonObject();
for (WidgetSettingOption setting : this.customSettings) { for (WidgetSettingOption<?> setting : this.customSettings) {
final String settingId = setting.getId(); final String settingId = setting.getId();
if (savedSettings.has(settingId)){ if (savedSettings.has(settingId)){
try { try {
@@ -56,7 +57,7 @@ public class WidgetSettings {
} }
} }
} }
public static WidgetSettings ofId(Identifier id, List<WidgetSettingOption> customSettings){ public static WidgetSettings ofId(Identifier id, List<WidgetSettingOption<?>> customSettings){
final JsonObject data = WidgetManager.loadWidget(id); final JsonObject data = WidgetManager.loadWidget(id);
return new WidgetSettings(data, customSettings); return new WidgetSettings(data, customSettings);
} }
@@ -92,7 +93,7 @@ public class WidgetSettings {
object.add("oy", gson.toJsonTree(this.offsetY)); object.add("oy", gson.toJsonTree(this.offsetY));
JsonObject customSettings = new JsonObject(); JsonObject customSettings = new JsonObject();
for (WidgetSettingOption customSetting : this.customSettings) { for (WidgetSettingOption<?> customSetting : this.customSettings) {
customSettings.add(customSetting.getId(), customSetting.saveState()); customSettings.add(customSetting.getId(), customSetting.saveState());
} }
object.add("settings", customSettings); object.add("settings", customSettings);
@@ -100,8 +101,8 @@ public class WidgetSettings {
return object; return object;
} }
public WidgetSettingOption optionById(String id){ public WidgetSettingOption<?> optionById(String id){
for (WidgetSettingOption customSetting : customSettings) { for (WidgetSettingOption<?> customSetting : customSettings) {
if (customSetting.getId().equals(id)){ if (customSetting.getId().equals(id)){
return customSetting; return customSetting;
} }
@@ -109,7 +110,7 @@ public class WidgetSettings {
return null; return null;
} }
public ObjectArrayList<WidgetSettingOption> getCustomSettings() { public ObjectArrayList<WidgetSettingOption<?>> getCustomSettings() {
return customSettings.clone(); return customSettings.clone();
} }
} }
@@ -1,7 +1,7 @@
package de.shiewk.widgets.client.screen.components; package de.shiewk.widgets.client.screen.components;
import de.shiewk.widgets.ModWidget; import de.shiewk.widgets.ModWidget;
import de.shiewk.widgets.WidgetSettingOption; import de.shiewk.widgets.widgets.settings.WidgetSettingOption;
import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Click; import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
@@ -19,7 +19,7 @@ public class WidgetSettingsEditWidget extends ScrollableWidget {
private final TextRenderer textRenderer; private final TextRenderer textRenderer;
private final ModWidget widget; private final ModWidget widget;
private final Runnable onChange; private final Runnable onChange;
private WidgetSettingOption focus = null; private WidgetSettingOption<?> focus = null;
private int contentsHeight = 10; private int contentsHeight = 10;
public WidgetSettingsEditWidget(int x, int y, int width, int height, TextRenderer textRenderer, ModWidget widget, Runnable onChange) { public WidgetSettingsEditWidget(int x, int y, int width, int height, TextRenderer textRenderer, ModWidget widget, Runnable onChange) {
@@ -27,7 +27,7 @@ public class WidgetSettingsEditWidget extends ScrollableWidget {
this.widget = widget; this.widget = widget;
this.textRenderer = textRenderer; this.textRenderer = textRenderer;
this.onChange = onChange; this.onChange = onChange;
for (WidgetSettingOption customSetting : widget.getSettings().getCustomSettings()) { for (WidgetSettingOption<?> customSetting : widget.getSettings().getCustomSettings()) {
customSetting.setFocused(false); customSetting.setFocused(false);
} }
setWidth(width); setWidth(width);
@@ -36,7 +36,7 @@ public class WidgetSettingsEditWidget extends ScrollableWidget {
@Override @Override
public void setWidth(int width) { public void setWidth(int width) {
for (WidgetSettingOption setting : widget.getSettings().getCustomSettings()) { for (WidgetSettingOption<?> setting : widget.getSettings().getCustomSettings()) {
setting.setMaxRenderWidth(width - 10); setting.setMaxRenderWidth(width - 10);
} }
super.setWidth(width); super.setWidth(width);
@@ -63,7 +63,7 @@ public class WidgetSettingsEditWidget extends ScrollableWidget {
context.drawText(textRenderer, widget.getName(), this.width / 4 - textRenderer.getWidth(widget.getName()) / 2, this.height / 100, COLOR_FG, true); context.drawText(textRenderer, widget.getName(), this.width / 4 - textRenderer.getWidth(widget.getName()) / 2, this.height / 100, COLOR_FG, true);
matrices.popMatrix(); matrices.popMatrix();
int y = textRenderer.fontHeight * 2 + this.height / 50 + 5; int y = textRenderer.fontHeight * 2 + this.height / 50 + 5;
for (WidgetSettingOption setting : widget.getSettings().getCustomSettings()) { for (WidgetSettingOption<?> setting : widget.getSettings().getCustomSettings()) {
if (!setting.shouldShow()) continue; if (!setting.shouldShow()) continue;
if (this.width - setting.getWidth() > textRenderer.getWidth(setting.getName()) + 20){ if (this.width - setting.getWidth() > textRenderer.getWidth(setting.getName()) + 20){
setting.setX(this.getX() + this.width - setting.getWidth() - 5); setting.setX(this.getX() + this.width - setting.getWidth() - 5);
@@ -88,7 +88,7 @@ public class WidgetSettingsEditWidget extends ScrollableWidget {
double mouseY = click.y(); double mouseY = click.y();
double mouseX = click.x(); double mouseX = click.x();
mouseY += getScrollY(); mouseY += getScrollY();
for (WidgetSettingOption customSetting : widget.getSettings().getCustomSettings()) { for (WidgetSettingOption<?> customSetting : widget.getSettings().getCustomSettings()) {
if (!customSetting.shouldShow()) continue; if (!customSetting.shouldShow()) continue;
if (customSetting.isHovered(mouseX, mouseY)){ if (customSetting.isHovered(mouseX, mouseY)){
focus = customSetting; focus = customSetting;
@@ -106,7 +106,7 @@ public class WidgetSettingsEditWidget extends ScrollableWidget {
@Override @Override
public boolean mouseReleased(Click click) { public boolean mouseReleased(Click click) {
for (WidgetSettingOption customSetting : widget.getSettings().getCustomSettings()) { for (WidgetSettingOption<?> customSetting : widget.getSettings().getCustomSettings()) {
if (!customSetting.shouldShow()) continue; if (!customSetting.shouldShow()) continue;
if (customSetting.mouseReleased(new Click(click.x(), click.y() + getScrollY(), click.buttonInfo()))){ if (customSetting.mouseReleased(new Click(click.x(), click.y() + getScrollY(), click.buttonInfo()))){
onChange.run(); onChange.run();
@@ -153,14 +153,14 @@ public class ArmorHudWidget extends ResizableWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.padding = ((IntSliderWidgetSetting) settings.optionById("padding")).getValue(); this.padding = (int) settings.optionById("padding").getValue();
this.showDurability = ((ToggleWidgetSetting) settings.optionById("show_durability")).getValue(); this.showDurability = (boolean) settings.optionById("show_durability").getValue();
this.durabilityStyle = (DurabilityStyle) ((EnumWidgetSetting<?>) settings.optionById("durability_style")).getValue(); this.durabilityStyle = (DurabilityStyle) settings.optionById("durability_style").getValue();
this.rainbow = ((ToggleWidgetSetting) settings.optionById("rainbow")).getValue(); this.rainbow = (boolean) settings.optionById("rainbow").getValue();
this.rainbowSpeed = ((IntSliderWidgetSetting) settings.optionById("rainbow_speed")).getValue(); this.rainbowSpeed = (int) settings.optionById("rainbow_speed").getValue();
this.textColor = ((RGBAColorWidgetSetting) settings.optionById("textcolor")).getColor(); this.textColor = (int) settings.optionById("textcolor").getValue();
this.backgroundColor = ((RGBAColorWidgetSetting) settings.optionById("backgroundcolor")).getColor(); this.backgroundColor = (int) settings.optionById("backgroundcolor").getValue();
this.preferredWidth = ((IntSliderWidgetSetting) settings.optionById("width")).getValue(); this.preferredWidth = (int) settings.optionById("width").getValue();
this.textAlignment = (BasicTextWidget.TextAlignment) ((EnumWidgetSetting<?>) settings.optionById("alignment")).getValue(); this.textAlignment = (BasicTextWidget.TextAlignment) settings.optionById("alignment").getValue();
} }
} }
@@ -100,10 +100,10 @@ public class BandwidthWidget extends BasicTextWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.dynamicColor = ((ToggleWidgetSetting) settings.optionById("dynamic_color")).getValue(); this.dynamicColor = (boolean) settings.optionById("dynamic_color").getValue();
this.hideInSingleplayer = ((ToggleWidgetSetting) settings.optionById("hide_in_singleplayer")).getValue(); this.hideInSingleplayer = (boolean) settings.optionById("hide_in_singleplayer").getValue();
this.unit = (Unit) ((EnumWidgetSetting<?>) settings.optionById("unit")).getValue(); this.unit = (Unit) settings.optionById("unit").getValue();
this.fastUpdate = ((ToggleWidgetSetting) settings.optionById("fastupdate")).getValue(); this.fastUpdate = (boolean) settings.optionById("fastupdate").getValue();
} }
@Override @Override
@@ -1,6 +1,6 @@
package de.shiewk.widgets.widgets; package de.shiewk.widgets.widgets;
import de.shiewk.widgets.WidgetSettingOption; import de.shiewk.widgets.widgets.settings.WidgetSettingOption;
import de.shiewk.widgets.WidgetSettings; import de.shiewk.widgets.WidgetSettings;
import de.shiewk.widgets.client.WidgetRenderer; import de.shiewk.widgets.client.WidgetRenderer;
import de.shiewk.widgets.widgets.settings.EnumWidgetSetting; import de.shiewk.widgets.widgets.settings.EnumWidgetSetting;
@@ -70,8 +70,8 @@ public abstract class BasicTextWidget extends ResizableWidget {
protected boolean rainbow = false; protected boolean rainbow = false;
private int rainbowSpeed = 3; private int rainbowSpeed = 3;
private static ObjectArrayList<WidgetSettingOption> getCustomSettings(List<WidgetSettingOption> otherCustomOptions) { private static ObjectArrayList<WidgetSettingOption<?>> getCustomSettings(List<WidgetSettingOption<?>> otherCustomOptions) {
final ObjectArrayList<WidgetSettingOption> list = new ObjectArrayList<>(otherCustomOptions); final ObjectArrayList<WidgetSettingOption<?>> list = new ObjectArrayList<>(otherCustomOptions);
list.add(new RGBAColorWidgetSetting("backgroundcolor", translatable("widgets.widgets.basictext.background"), 0, 0, 0, 80)); list.add(new RGBAColorWidgetSetting("backgroundcolor", translatable("widgets.widgets.basictext.background"), 0, 0, 0, 80));
list.add(new ToggleWidgetSetting("rainbow", translatable("widgets.widgets.common.rainbow"), false)); list.add(new ToggleWidgetSetting("rainbow", translatable("widgets.widgets.common.rainbow"), false));
list.add(new RGBAColorWidgetSetting("textcolor", translatable("widgets.widgets.basictext.textcolor"), 255, 255, 255, 255)); list.add(new RGBAColorWidgetSetting("textcolor", translatable("widgets.widgets.basictext.textcolor"), 255, 255, 255, 255));
@@ -84,7 +84,7 @@ public abstract class BasicTextWidget extends ResizableWidget {
list.add(new EnumWidgetSetting<>("text_style", translatable("widgets.widgets.basictext.textstyle"), TextStyle.class, TextStyle.PLAIN, TextStyle::displayText)); list.add(new EnumWidgetSetting<>("text_style", translatable("widgets.widgets.basictext.textstyle"), TextStyle.class, TextStyle.PLAIN, TextStyle::displayText));
return list; return list;
} }
protected BasicTextWidget(Identifier id, List<WidgetSettingOption> otherCustomOptions) { protected BasicTextWidget(Identifier id, List<WidgetSettingOption<?>> otherCustomOptions) {
super(id, getCustomSettings(otherCustomOptions)); super(id, getCustomSettings(otherCustomOptions));
getSettings().optionById("padding").setShowCondition(() -> this.textAlignment != TextAlignment.CENTER); getSettings().optionById("padding").setShowCondition(() -> this.textAlignment != TextAlignment.CENTER);
getSettings().optionById("textcolor").setShowCondition(() -> !this.rainbow); getSettings().optionById("textcolor").setShowCondition(() -> !this.rainbow);
@@ -165,15 +165,15 @@ public abstract class BasicTextWidget extends ResizableWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.backgroundColor = ((RGBAColorWidgetSetting) settings.optionById("backgroundcolor")).getColor(); this.backgroundColor = (int) settings.optionById("backgroundcolor").getValue();
this.textColor = ((RGBAColorWidgetSetting) settings.optionById("textcolor")).getColor(); this.textColor = (int) settings.optionById("textcolor").getValue();
this.width = ((IntSliderWidgetSetting) settings.optionById("width")).getValue(); this.width = (int) settings.optionById("width").getValue();
this.height = ((IntSliderWidgetSetting) settings.optionById("height")).getValue(); this.height = (int) settings.optionById("height").getValue();
this.textAlignment = (TextAlignment) ((EnumWidgetSetting<?>) settings.optionById("alignment")).getValue(); this.textAlignment = (TextAlignment) settings.optionById("alignment").getValue();
this.padding = ((IntSliderWidgetSetting) settings.optionById("padding")).getValue(); this.padding = (int) settings.optionById("padding").getValue();
this.textShadow = ((ToggleWidgetSetting) settings.optionById("shadow")).getValue(); this.textShadow = (boolean) settings.optionById("shadow").getValue();
this.textStyle = (TextStyle) ((EnumWidgetSetting<?>) settings.optionById("text_style")).getValue(); this.textStyle = (TextStyle) settings.optionById("text_style").getValue();
this.rainbow = ((ToggleWidgetSetting) settings.optionById("rainbow")).getValue(); this.rainbow = (boolean) settings.optionById("rainbow").getValue();
this.rainbowSpeed = ((IntSliderWidgetSetting) settings.optionById("rainbow_speed")).getValue(); this.rainbowSpeed = (int) settings.optionById("rainbow_speed").getValue();
} }
} }
@@ -68,6 +68,6 @@ public class BiomeWidget extends BasicTextWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.showLabel = ((ToggleWidgetSetting) settings.optionById("show_label")).getValue(); this.showLabel = (boolean) settings.optionById("show_label").getValue();
} }
} }
@@ -141,11 +141,11 @@ public class CPSWidget extends BasicTextWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
countLeftClicks = ((ToggleWidgetSetting) settings.optionById("left")).getValue(); countLeftClicks = (boolean) settings.optionById("left").getValue();
countMiddleClicks = ((ToggleWidgetSetting) settings.optionById("middle")).getValue(); countMiddleClicks = (boolean) settings.optionById("middle").getValue();
countRightClicks = ((ToggleWidgetSetting) settings.optionById("right")).getValue(); countRightClicks = (boolean) settings.optionById("right").getValue();
appearance = (Appearance) ((EnumWidgetSetting<?>) settings.optionById("appearance")).getValue(); appearance = (Appearance) settings.optionById("appearance").getValue();
showLabel = ((ToggleWidgetSetting) settings.optionById("show_label")).getValue(); showLabel = (boolean) settings.optionById("show_label").getValue();
} }
@Override @Override
@@ -104,10 +104,10 @@ public class ClockWidget extends BasicTextWidget {
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
String datePattern = "HH:mm:ss"; String datePattern = "HH:mm:ss";
TimeOption timeOption = (TimeOption) ((EnumWidgetSetting<?>) settings.optionById("hour_format")).getValue(); TimeOption timeOption = (TimeOption) settings.optionById("hour_format").getValue();
DateOption dateOption = (DateOption) ((EnumWidgetSetting<?>) settings.optionById("date_format")).getValue(); DateOption dateOption = (DateOption) settings.optionById("date_format").getValue();
WeekOption weekOption = (WeekOption) ((EnumWidgetSetting<?>) settings.optionById("week_format")).getValue(); WeekOption weekOption = (WeekOption) settings.optionById("week_format").getValue();
boolean showSeconds = ((ToggleWidgetSetting) settings.optionById("show_seconds")).getValue(); boolean showSeconds = (boolean) settings.optionById("show_seconds").getValue();
if (timeOption == TimeOption.HOUR_24){ if (timeOption == TimeOption.HOUR_24){
datePattern = showSeconds ? "HH:mm:ss" : "HH:mm"; datePattern = showSeconds ? "HH:mm:ss" : "HH:mm";
} else if (timeOption == TimeOption.AM_PM){ } else if (timeOption == TimeOption.AM_PM){
@@ -106,8 +106,8 @@ public class ComboWidget extends BasicTextWidget implements AttackEntityCallback
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.displayThreshold = ((IntSliderWidgetSetting) settings.optionById("display_threshold")).getValue(); this.displayThreshold = (int) settings.optionById("display_threshold").getValue();
this.showLabel = ((ToggleWidgetSetting) settings.optionById("show_label")).getValue(); this.showLabel = (boolean) settings.optionById("show_label").getValue();
updateComboText(); updateComboText();
} }
} }
@@ -107,17 +107,17 @@ public class CoordinatesWidget extends ResizableWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.backgroundColor = ((RGBAColorWidgetSetting) settings.optionById("backgroundcolor")).getColor(); this.backgroundColor = (int) settings.optionById("backgroundcolor").getValue();
this.textColor = ((RGBAColorWidgetSetting) settings.optionById("textcolor")).getColor(); this.textColor = (int) settings.optionById("textcolor").getValue();
this.showX = ((ToggleWidgetSetting) settings.optionById("x")).getValue(); this.showX = (boolean) settings.optionById("x").getValue();
this.showY = ((ToggleWidgetSetting) settings.optionById("y")).getValue(); this.showY = (boolean) settings.optionById("y").getValue();
this.showZ = ((ToggleWidgetSetting) settings.optionById("z")).getValue(); this.showZ = (boolean) settings.optionById("z").getValue();
this.paddingX = ((IntSliderWidgetSetting) settings.optionById("paddingX")).getValue(); this.paddingX = (int) settings.optionById("paddingX").getValue();
this.paddingY = ((IntSliderWidgetSetting) settings.optionById("paddingY")).getValue(); this.paddingY = (int) settings.optionById("paddingY").getValue();
this.width = ((IntSliderWidgetSetting) settings.optionById("width")).getValue(); this.width = (int) settings.optionById("width").getValue();
this.shadow = ((ToggleWidgetSetting) settings.optionById("shadow")).getValue(); this.shadow = (boolean) settings.optionById("shadow").getValue();
this.rainbow = ((ToggleWidgetSetting) settings.optionById("rainbow")).getValue(); this.rainbow = (boolean) settings.optionById("rainbow").getValue();
this.rainbowSpeed = ((IntSliderWidgetSetting) settings.optionById("rainbow_speed")).getValue(); this.rainbowSpeed = (int) settings.optionById("rainbow_speed").getValue();
} }
@Override @Override
@@ -57,7 +57,7 @@ public class FPSWidget extends BasicTextWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.realtime = ((ToggleWidgetSetting) settings.optionById("realtime")).getValue(); this.realtime = (boolean) settings.optionById("realtime").getValue();
timedFrames = this.realtime ? new LinkedList<>() : null; timedFrames = this.realtime ? new LinkedList<>() : null;
} }
@@ -205,15 +205,15 @@ public class InventoryWidget extends ResizableWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.mode = ((InventoryMode) ((EnumWidgetSetting<?>) settings.optionById("mode")).getValue()); this.mode = (InventoryMode) settings.optionById("mode").getValue();
this.rainbowGrid = ((ToggleWidgetSetting) settings.optionById("rainbow_grid")).getValue(); this.rainbowGrid = (boolean) settings.optionById("rainbow_grid").getValue();
this.gridRainbowSpeed = ((IntSliderWidgetSetting) settings.optionById("grid_rainbow_speed")).getValue(); this.gridRainbowSpeed = (int) settings.optionById("grid_rainbow_speed").getValue();
this.gridColor = ((RGBAColorWidgetSetting) settings.optionById("grid_color")).getColor(); this.gridColor = (int) settings.optionById("grid_color").getValue();
this.rainbowBoxes = ((ToggleWidgetSetting) settings.optionById("rainbow_boxes")).getValue(); this.rainbowBoxes = (boolean) settings.optionById("rainbow_boxes").getValue();
this.boxRainbowSpeed = ((IntSliderWidgetSetting) settings.optionById("box_rainbow_speed")).getValue(); this.boxRainbowSpeed = (int) settings.optionById("box_rainbow_speed").getValue();
this.boxColor = ((RGBAColorWidgetSetting) settings.optionById("box_color")).getColor(); this.boxColor = (int) settings.optionById("box_color").getValue();
this.showHotbar = ((ToggleWidgetSetting) settings.optionById("show_hotbar")).getValue() || !mode.canDisableHotbar; this.showHotbar = (boolean) settings.optionById("show_hotbar").getValue() || !mode.canDisableHotbar;
} }
} }
@@ -35,18 +35,6 @@ public class KeyStrokesWidget extends ResizableWidget {
getSettings().optionById("rainbow_speed").setShowCondition(() -> this.rainbow); getSettings().optionById("rainbow_speed").setShowCondition(() -> this.rainbow);
} }
@Override
public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings);
this.showJumpKey = ((ToggleWidgetSetting) settings.optionById("showjump")).getValue();
this.colorBackgroundPressed = ((RGBAColorWidgetSetting) settings.optionById("bgpressed")).getColor();
this.colorBackgroundUnpressed = ((RGBAColorWidgetSetting) settings.optionById("bgunpressed")).getColor();
this.colorKeyPressed = ((RGBAColorWidgetSetting) settings.optionById("keypressed")).getColor();
this.colorKeyUnpressed = ((RGBAColorWidgetSetting) settings.optionById("keyunpressed")).getColor();
this.rainbow = ((ToggleWidgetSetting) settings.optionById("rainbow")).getValue();
this.rainbowSpeed = ((IntSliderWidgetSetting) settings.optionById("rainbow_speed")).getValue();
}
private boolean showJumpKey = true; private boolean showJumpKey = true;
private int colorBackgroundPressed = new Color(255, 255, 255, 80).getRGB(), private int colorBackgroundPressed = new Color(255, 255, 255, 80).getRGB(),
@@ -175,4 +163,16 @@ public class KeyStrokesWidget extends ResizableWidget {
public int height() { public int height() {
return showJumpKey ? 56 : 44; return showJumpKey ? 56 : 44;
} }
@Override
public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings);
this.showJumpKey = (boolean) settings.optionById("showjump").getValue();
this.colorBackgroundPressed = (int) settings.optionById("bgpressed").getValue();
this.colorBackgroundUnpressed = (int) settings.optionById("bgunpressed").getValue();
this.colorKeyPressed = (int) settings.optionById("keypressed").getValue();
this.colorKeyUnpressed = (int) settings.optionById("keyunpressed").getValue();
this.rainbow = (boolean) settings.optionById("rainbow").getValue();
this.rainbowSpeed = (int) settings.optionById("rainbow_speed").getValue();
}
} }
@@ -71,8 +71,8 @@ public class MemoryUsageWidget extends BasicTextWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.showPercentage = ((ToggleWidgetSetting) settings.optionById("percentage")).getValue(); this.showPercentage = (boolean) settings.optionById("percentage").getValue();
this.showLabel = ((ToggleWidgetSetting) settings.optionById("label")).getValue(); this.showLabel = (boolean) settings.optionById("label").getValue();
this.realtime = ((ToggleWidgetSetting) settings.optionById("realtime")).getValue(); this.realtime = (boolean) settings.optionById("realtime").getValue();
} }
} }
@@ -73,8 +73,8 @@ public class PingWidget extends BasicTextWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.dynamicColor = ((ToggleWidgetSetting) settings.optionById("dynamic_color")).getValue(); this.dynamicColor = (boolean) settings.optionById("dynamic_color").getValue();
this.hideInSingleplayer = ((ToggleWidgetSetting) settings.optionById("hide_in_singleplayer")).getValue(); this.hideInSingleplayer = (boolean) settings.optionById("hide_in_singleplayer").getValue();
} }
@Override @Override
@@ -32,6 +32,6 @@ public class PlainTextWidget extends BasicTextWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
formatAndSetRenderText(literal(((TextFieldWidgetSettingOption) settings.optionById("text")).getValue())); formatAndSetRenderText(literal((String) settings.optionById("text").getValue()));
} }
} }
@@ -73,6 +73,6 @@ public class PlayTimeWidget extends BasicTextWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.labelStyle = (LabelStyle) ((EnumWidgetSetting<?>) settings.optionById("labelstyle")).getValue(); this.labelStyle = (LabelStyle) settings.optionById("labelstyle").getValue();
} }
} }
@@ -45,8 +45,8 @@ public class PlayerCountWidget extends BasicTextWidget{
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
showLabel = ((ToggleWidgetSetting) settings.optionById("showlabel")).getValue(); showLabel = (boolean) settings.optionById("showlabel").getValue();
hideInSingleplayer = ((ToggleWidgetSetting) settings.optionById("hide_in_singleplayer")).getValue(); hideInSingleplayer = (boolean) settings.optionById("hide_in_singleplayer").getValue();
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
} }
} }
@@ -1,7 +1,7 @@
package de.shiewk.widgets.widgets; package de.shiewk.widgets.widgets;
import de.shiewk.widgets.ModWidget; import de.shiewk.widgets.ModWidget;
import de.shiewk.widgets.WidgetSettingOption; import de.shiewk.widgets.widgets.settings.WidgetSettingOption;
import de.shiewk.widgets.WidgetSettings; import de.shiewk.widgets.WidgetSettings;
import de.shiewk.widgets.widgets.settings.IntSliderWidgetSetting; import de.shiewk.widgets.widgets.settings.IntSliderWidgetSetting;
import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer;
@@ -15,12 +15,12 @@ import java.util.List;
public abstract class ResizableWidget extends ModWidget { public abstract class ResizableWidget extends ModWidget {
protected ResizableWidget(Identifier id, List<WidgetSettingOption> customSettings) { protected ResizableWidget(Identifier id, List<WidgetSettingOption<?>> customSettings) {
super(id, addScaleSetting(customSettings)); super(id, addScaleSetting(customSettings));
} }
private static List<WidgetSettingOption> addScaleSetting(List<WidgetSettingOption> target) { private static List<WidgetSettingOption<?>> addScaleSetting(List<WidgetSettingOption<?>> target) {
ArrayList<WidgetSettingOption> settings = new ArrayList<>(target); ArrayList<WidgetSettingOption<?>> settings = new ArrayList<>(target);
settings.add(new IntSliderWidgetSetting("size", Text.translatable("widgets.widgets.common.sizePercent"), 25, 100, 400)); settings.add(new IntSliderWidgetSetting("size", Text.translatable("widgets.widgets.common.sizePercent"), 25, 100, 400));
return settings; return settings;
} }
@@ -43,7 +43,7 @@ public abstract class ResizableWidget extends ModWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
this.size = 0.01f * ((IntSliderWidgetSetting) settings.optionById("size")).getValue(); this.size = 0.01f * (int) settings.optionById("size").getValue();
} }
@Override @Override
@@ -63,7 +63,7 @@ public class ServerIPWidget extends BasicTextWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.dynamicWidth = ((ToggleWidgetSetting) settings.optionById("dynamicwidth")).getValue(); this.dynamicWidth = (boolean) settings.optionById("dynamicwidth").getValue();
this.hideInSingleplayer = ((ToggleWidgetSetting) settings.optionById("hide_in_singleplayer")).getValue(); this.hideInSingleplayer = (boolean) settings.optionById("hide_in_singleplayer").getValue();
} }
} }
@@ -104,12 +104,12 @@ public class SpeedWidget extends BasicTextWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.unit = ((Unit) ((EnumWidgetSetting<?>) settings.optionById("unit")).getValue()); this.unit = (Unit) settings.optionById("unit").getValue();
this.withXVelocity = ((ToggleWidgetSetting) settings.optionById("with_x")).getValue(); this.withXVelocity = (boolean) settings.optionById("with_x").getValue();
this.withYVelocity = ((ToggleWidgetSetting) settings.optionById("with_y")).getValue(); this.withYVelocity = (boolean) settings.optionById("with_y").getValue();
this.withZVelocity = ((ToggleWidgetSetting) settings.optionById("with_z")).getValue(); this.withZVelocity = (boolean) settings.optionById("with_z").getValue();
this.digitsAfterComma = ((IntSliderWidgetSetting) settings.optionById("digits")).getValue(); this.digitsAfterComma = (int) settings.optionById("digits").getValue();
this.windowPointer = 0; this.windowPointer = 0;
this.averagingWindow = new double[((IntSliderWidgetSetting) settings.optionById("window_size")).getValue()]; this.averagingWindow = new double[(int) settings.optionById("window_size").getValue()];
} }
} }
@@ -124,10 +124,10 @@ public class TPSWidget extends BasicTextWidget {
@Override @Override
public void onSettingsChanged(WidgetSettings settings) { public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.dynamicColor = ((ToggleWidgetSetting) settings.optionById("dynamic_color")).getValue(); this.dynamicColor = (boolean) settings.optionById("dynamic_color").getValue();
this.showLabel = ((ToggleWidgetSetting) settings.optionById("show_label")).getValue(); this.showLabel = (boolean) settings.optionById("show_label").getValue();
int windowSize = ((IntSliderWidgetSetting) settings.optionById("window_size")).getValue(); int windowSize = (int) settings.optionById("window_size").getValue();
updatePointer = 0; updatePointer = 0;
updatesSinceWorldChange = 0; updatesSinceWorldChange = 0;
lastUpdates = new long[windowSize]; lastUpdates = new long[windowSize];
@@ -2,7 +2,6 @@ package de.shiewk.widgets.widgets.settings;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive; import com.google.gson.JsonPrimitive;
import de.shiewk.widgets.WidgetSettingOption;
import de.shiewk.widgets.utils.WidgetUtils; import de.shiewk.widgets.utils.WidgetUtils;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer;
@@ -15,7 +14,7 @@ import net.minecraft.text.Text;
import java.awt.*; import java.awt.*;
import java.util.function.Function; import java.util.function.Function;
public class EnumWidgetSetting<T extends Enum<T>> extends WidgetSettingOption { public class EnumWidgetSetting<T extends Enum<T>> extends WidgetSettingOption<T> {
private final Class<T> enumClass; private final Class<T> enumClass;
private T value; private T value;
@@ -31,6 +30,7 @@ public class EnumWidgetSetting<T extends Enum<T>> extends WidgetSettingOption {
this.enumNameGetter = enumNameGetter; this.enumNameGetter = enumNameGetter;
} }
@Override
public T getValue(){ public T getValue(){
return value; return value;
} }
@@ -2,7 +2,6 @@ package de.shiewk.widgets.widgets.settings;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive; import com.google.gson.JsonPrimitive;
import de.shiewk.widgets.WidgetSettingOption;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Click; import net.minecraft.client.gui.Click;
@@ -11,8 +10,9 @@ import net.minecraft.client.gui.cursor.StandardCursors;
import net.minecraft.client.input.KeyInput; import net.minecraft.client.input.KeyInput;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import org.jetbrains.annotations.NotNull;
public class IntSliderWidgetSetting extends WidgetSettingOption { public class IntSliderWidgetSetting extends WidgetSettingOption<Integer> {
private int value; private int value;
private int minValue; private int minValue;
@@ -98,7 +98,8 @@ public class IntSliderWidgetSetting extends WidgetSettingOption {
return t; return t;
} }
public int getValue() { @Override
public @NotNull Integer getValue() {
return value; return value;
} }
@@ -2,7 +2,6 @@ package de.shiewk.widgets.widgets.settings;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive; import com.google.gson.JsonPrimitive;
import de.shiewk.widgets.WidgetSettingOption;
import de.shiewk.widgets.utils.WidgetUtils; import de.shiewk.widgets.utils.WidgetUtils;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer;
@@ -16,10 +15,11 @@ import net.minecraft.client.input.KeyInput;
import net.minecraft.sound.SoundEvents; import net.minecraft.sound.SoundEvents;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import org.jetbrains.annotations.NotNull;
import java.awt.*; import java.awt.*;
public class RGBAColorWidgetSetting extends WidgetSettingOption { public class RGBAColorWidgetSetting extends WidgetSettingOption<Integer> {
public RGBAColorWidgetSetting(String id, Text name, int defaultR, int defaultG, int defaultB, int defaultAlpha) { public RGBAColorWidgetSetting(String id, Text name, int defaultR, int defaultG, int defaultB, int defaultAlpha) {
super(id, name); super(id, name);
this.r = defaultR; this.r = defaultR;
@@ -42,6 +42,11 @@ public class RGBAColorWidgetSetting extends WidgetSettingOption {
return a << 24 | r << 16 | g << 8 | b; return a << 24 | r << 16 | g << 8 | b;
} }
@Override
public @NotNull Integer getValue(){
return getColor();
}
@Override @Override
public void loadState(JsonElement state) { public void loadState(JsonElement state) {
if (state.isJsonPrimitive() && state.getAsJsonPrimitive().isNumber()){ if (state.isJsonPrimitive() && state.getAsJsonPrimitive().isNumber()){
@@ -2,7 +2,6 @@ package de.shiewk.widgets.widgets.settings;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive; import com.google.gson.JsonPrimitive;
import de.shiewk.widgets.WidgetSettingOption;
import de.shiewk.widgets.WidgetsMod; import de.shiewk.widgets.WidgetsMod;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer;
@@ -13,7 +12,7 @@ import net.minecraft.client.input.CharInput;
import net.minecraft.client.input.KeyInput; import net.minecraft.client.input.KeyInput;
import net.minecraft.text.Text; import net.minecraft.text.Text;
public class TextFieldWidgetSettingOption extends WidgetSettingOption { public class TextFieldWidgetSettingOption extends WidgetSettingOption<String> {
private TextField textField = null; private TextField textField = null;
private final Text initialValue; private final Text initialValue;
@@ -55,6 +54,7 @@ public class TextFieldWidgetSettingOption extends WidgetSettingOption {
textField.setText(value.isEmpty() ? initialValue.getString() : value); textField.setText(value.isEmpty() ? initialValue.getString() : value);
} }
@Override
public String getValue(){ public String getValue(){
return value; return value;
} }
@@ -2,7 +2,6 @@ package de.shiewk.widgets.widgets.settings;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive; import com.google.gson.JsonPrimitive;
import de.shiewk.widgets.WidgetSettingOption;
import de.shiewk.widgets.utils.WidgetUtils; import de.shiewk.widgets.utils.WidgetUtils;
import net.minecraft.client.gui.Click; import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
@@ -11,10 +10,11 @@ import net.minecraft.sound.SoundEvents;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import net.minecraft.util.Util; import net.minecraft.util.Util;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import org.jetbrains.annotations.NotNull;
import java.awt.*; import java.awt.*;
public class ToggleWidgetSetting extends WidgetSettingOption { public class ToggleWidgetSetting extends WidgetSettingOption<Boolean> {
private boolean value; private boolean value;
private long toggleTime = 0; private long toggleTime = 0;
@@ -24,7 +24,8 @@ public class ToggleWidgetSetting extends WidgetSettingOption {
this.value = defaultValue; this.value = defaultValue;
} }
public boolean getValue(){ @Override
public @NotNull Boolean getValue(){
return value; return value;
} }
@@ -1,4 +1,4 @@
package de.shiewk.widgets; package de.shiewk.widgets.widgets.settings;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import de.shiewk.widgets.utils.WidgetUtils; import de.shiewk.widgets.utils.WidgetUtils;
@@ -13,7 +13,7 @@ import net.minecraft.text.Text;
import java.util.function.BooleanSupplier; import java.util.function.BooleanSupplier;
import java.util.function.Consumer; import java.util.function.Consumer;
public abstract class WidgetSettingOption implements Drawable, Widget { public abstract class WidgetSettingOption<T> implements Drawable, Widget {
private final String id; private final String id;
private final Text name; private final Text name;
private int x = 0; private int x = 0;
@@ -45,6 +45,7 @@ public abstract class WidgetSettingOption implements Drawable, Widget {
public abstract JsonElement saveState(); public abstract JsonElement saveState();
public abstract void loadState(JsonElement state); public abstract void loadState(JsonElement state);
public abstract T getValue();
public boolean mouseClicked(Click click, boolean doubled) { public boolean mouseClicked(Click click, boolean doubled) {
return false; return false;
@@ -108,7 +109,7 @@ public abstract class WidgetSettingOption implements Drawable, Widget {
return shouldShow.getAsBoolean(); return shouldShow.getAsBoolean();
} }
public WidgetSettingOption setShowCondition(BooleanSupplier shouldShow){ public WidgetSettingOption<?> setShowCondition(BooleanSupplier shouldShow){
this.shouldShow = shouldShow; this.shouldShow = shouldShow;
return this; return this;
} }