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

Support latest changes for 1.21.6 (2.1.0)

This commit is contained in:
Shy
2025-12-05 17:54:12 +01:00
parent 2fb2537da0
commit c41e126704
11 changed files with 57 additions and 31 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ minecraft_version=1.21.6
yarn_mappings=1.21.6+build.1 yarn_mappings=1.21.6+build.1
loader_version=0.17.2 loader_version=0.17.2
# Mod Properties # Mod Properties
mod_version=2.0.0 mod_version=2.1.0
maven_group=de.shiewk maven_group=de.shiewk
archives_base_name=Widgets archives_base_name=Widgets
# Dependencies # Dependencies
@@ -65,11 +65,11 @@ public class WidgetsModClient implements ClientModInitializer {
WidgetManager.register(new MemoryUsageWidget(Identifier.of(WidgetsMod.MOD_ID, "memory"))); WidgetManager.register(new MemoryUsageWidget(Identifier.of(WidgetsMod.MOD_ID, "memory")));
WidgetManager.register(new KeyStrokesWidget(Identifier.of(WidgetsMod.MOD_ID, "keystrokes"))); WidgetManager.register(new KeyStrokesWidget(Identifier.of(WidgetsMod.MOD_ID, "keystrokes")));
WidgetManager.register(new PlainTextWidget(Identifier.of(WidgetsMod.MOD_ID, "plaintext"))); WidgetManager.register(new PlainTextWidget(Identifier.of(WidgetsMod.MOD_ID, "plaintext")));
WidgetManager.register(new TPSWidget(Identifier.of(WidgetsMod.MOD_ID, "tps")));
WidgetManager.register(new BiomeWidget(Identifier.of(WidgetsMod.MOD_ID, "biome"))); WidgetManager.register(new BiomeWidget(Identifier.of(WidgetsMod.MOD_ID, "biome")));
WidgetManager.register(new SpeedWidget(Identifier.of(WidgetsMod.MOD_ID, "speed"))); WidgetManager.register(new SpeedWidget(Identifier.of(WidgetsMod.MOD_ID, "speed")));
WidgetManager.register(new ArmorHudWidget(Identifier.of(WidgetsMod.MOD_ID, "armor"))); WidgetManager.register(new ArmorHudWidget(Identifier.of(WidgetsMod.MOD_ID, "armor")));
WidgetManager.register(new InventoryWidget(Identifier.of(WidgetsMod.MOD_ID, "inventory"))); WidgetManager.register(new InventoryWidget(Identifier.of(WidgetsMod.MOD_ID, "inventory")));
WidgetManager.register(TPSWidget.INSTANCE);
ComboWidget comboWidget = new ComboWidget(Identifier.of(WidgetsMod.MOD_ID, "combo")); ComboWidget comboWidget = new ComboWidget(Identifier.of(WidgetsMod.MOD_ID, "combo"));
WidgetManager.register(comboWidget); WidgetManager.register(comboWidget);
@@ -18,6 +18,7 @@ import org.joml.Vector2i;
import java.awt.*; import java.awt.*;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.function.Consumer; import java.util.function.Consumer;
public class EditWidgetPositionsScreen extends AnimatedScreen { public class EditWidgetPositionsScreen extends AnimatedScreen {
@@ -273,7 +274,7 @@ public class EditWidgetPositionsScreen extends AnimatedScreen {
List<ContextMenuScreen.Option> options = new ObjectArrayList<>(Anchor.values().length); List<ContextMenuScreen.Option> options = new ObjectArrayList<>(Anchor.values().length);
for (Anchor anchor : Anchor.values()) { for (Anchor anchor : Anchor.values()) {
options.add(new ContextMenuScreen.Option( options.add(new ContextMenuScreen.Option(
Text.translatable("widgets.ui.anchor." + anchor.name().toLowerCase()), Text.translatable("widgets.ui.anchor." + anchor.name().toLowerCase(Locale.ROOT)),
hovered.getSettings().anchor == anchor, hovered.getSettings().anchor == anchor,
() -> { () -> {
hovered.setPos( hovered.setPos(
@@ -64,6 +64,7 @@ public class WidgetConfigScreen extends Screen {
this.addDrawableChild(widgetList); this.addDrawableChild(widgetList);
this.addDrawableChild(searchField); this.addDrawableChild(searchField);
setInitialFocus(searchField);
// Left side // Left side
GridWidget gw = new GridWidget(0, 0); GridWidget gw = new GridWidget(0, 0);
@@ -17,7 +17,9 @@ import net.minecraft.text.Text;
import org.joml.Matrix3x2fStack; import org.joml.Matrix3x2fStack;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.function.Consumer; import java.util.function.Consumer;
public class WidgetListWidget extends ScrollableWidget { public class WidgetListWidget extends ScrollableWidget {
@@ -30,6 +32,7 @@ public class WidgetListWidget extends ScrollableWidget {
private final Consumer<ModWidget> onEdit; private final Consumer<ModWidget> onEdit;
public static boolean searchQueryMatches(String search, ModWidget widget) { public static boolean searchQueryMatches(String search, ModWidget widget) {
if (search == null) return true;
return widget.getName().getString().contains(search) || widget.getDescription().getString().contains(search) || widget.getId().toString().contains(search); return widget.getName().getString().contains(search) || widget.getDescription().getString().contains(search) || widget.getId().toString().contains(search);
} }
@@ -43,11 +46,11 @@ public class WidgetListWidget extends ScrollableWidget {
} }
private List<ModWidget> loadWidgets(String search) { private List<ModWidget> loadWidgets(String search) {
if (search == null) { return WidgetManager.getAllWidgets()
return WidgetManager.getAllWidgets(); .stream()
} else { .filter(w -> searchQueryMatches(search, w))
return WidgetManager.getAllWidgets().stream().filter(w -> searchQueryMatches(search, w)).toList(); .sorted(Comparator.comparing(w -> w.getName().getString().toLowerCase(Locale.ROOT)))
} .toList();
} }
private void init(){ private void init(){
@@ -16,6 +16,7 @@ import net.minecraft.text.Text;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import java.util.List; import java.util.List;
import java.util.Locale;
import static net.minecraft.text.Text.translatable; import static net.minecraft.text.Text.translatable;
@@ -41,7 +42,7 @@ public class ArmorHudWidget extends ResizableWidget {
PERCENT; PERCENT;
public Text getDisplayName() { public Text getDisplayName() {
return translatable("widgets.widgets.armorHud.durabilityStyle." + name().toLowerCase()); return translatable("widgets.widgets.armorHud.durabilityStyle." + name().toLowerCase(Locale.ROOT));
} }
} }
@@ -12,6 +12,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
import static net.minecraft.text.Text.literal; import static net.minecraft.text.Text.literal;
import static net.minecraft.text.Text.translatable;
public class CPSWidget extends BasicTextWidget { public class CPSWidget extends BasicTextWidget {
@@ -44,6 +45,7 @@ public class CPSWidget extends BasicTextWidget {
} }
private Appearance appearance = Appearance.UNIFIED; private Appearance appearance = Appearance.UNIFIED;
private boolean showLabel = true;
public enum Appearance { public enum Appearance {
SPLIT_PIPE("pipe"), SPLIT_PIPE("pipe"),
@@ -59,10 +61,11 @@ public class CPSWidget extends BasicTextWidget {
public CPSWidget(Identifier id) { public CPSWidget(Identifier id) {
super(id, List.of( super(id, List.of(
new EnumWidgetSetting<>("appearance", Text.translatable("widgets.widgets.cps.appearance"), Appearance.class, Appearance.UNIFIED, appearance -> Text.translatable("widgets.widgets.cps.appearance."+appearance.key)), new ToggleWidgetSetting("show_label", translatable("widgets.widgets.common.showLabel"), true),
new ToggleWidgetSetting("left", Text.translatable("widgets.widgets.cps.left"), true), new EnumWidgetSetting<>("appearance", translatable("widgets.widgets.cps.appearance"), Appearance.class, Appearance.UNIFIED, appearance -> translatable("widgets.widgets.cps.appearance."+appearance.key)),
new ToggleWidgetSetting("middle", Text.translatable("widgets.widgets.cps.middle"), false), new ToggleWidgetSetting("left", translatable("widgets.widgets.cps.left"), true),
new ToggleWidgetSetting("right", Text.translatable("widgets.widgets.cps.right"), true) new ToggleWidgetSetting("middle", translatable("widgets.widgets.cps.middle"), false),
new ToggleWidgetSetting("right", translatable("widgets.widgets.cps.right"), true)
)); ));
} }
@@ -102,10 +105,17 @@ public class CPSWidget extends BasicTextWidget {
middleClicks.removeIf(click -> click.expiresAt <= mtime); middleClicks.removeIf(click -> click.expiresAt <= mtime);
middle = middleClicks.size(); middle = middleClicks.size();
} }
if (showLabel){
formatAndSetRenderText(switch (appearance){ formatAndSetRenderText(switch (appearance){
case UNIFIED -> literal((left + right + middle) + " CPS"); case UNIFIED -> literal((left + right + middle) + " CPS");
case SPLIT_PIPE, SPLIT_SLASH -> literal(getClickText(left, middle, right) + " CPS"); case SPLIT_PIPE, SPLIT_SLASH -> literal(getClickText(left, middle, right) + " CPS");
}); });
} else {
formatAndSetRenderText(switch (appearance){
case UNIFIED -> literal(""+(left + right + middle));
case SPLIT_PIPE, SPLIT_SLASH -> literal(getClickText(left, middle, right).toString());
});
}
} }
private @NotNull StringBuilder getClickText(int left, int middle, int right) { private @NotNull StringBuilder getClickText(int left, int middle, int right) {
@@ -135,15 +145,16 @@ public class CPSWidget extends BasicTextWidget {
countMiddleClicks = ((ToggleWidgetSetting) settings.optionById("middle")).getValue(); countMiddleClicks = ((ToggleWidgetSetting) settings.optionById("middle")).getValue();
countRightClicks = ((ToggleWidgetSetting) settings.optionById("right")).getValue(); countRightClicks = ((ToggleWidgetSetting) settings.optionById("right")).getValue();
appearance = (Appearance) ((EnumWidgetSetting<?>) settings.optionById("appearance")).getValue(); appearance = (Appearance) ((EnumWidgetSetting<?>) settings.optionById("appearance")).getValue();
showLabel = ((ToggleWidgetSetting) settings.optionById("show_label")).getValue();
} }
@Override @Override
public Text getName() { public Text getName() {
return Text.translatable("widgets.widgets.cps"); return translatable("widgets.widgets.cps");
} }
@Override @Override
public Text getDescription() { public Text getDescription() {
return Text.translatable("widgets.widgets.cps.description"); return translatable("widgets.widgets.cps.description");
} }
} }
@@ -16,6 +16,7 @@ import net.minecraft.text.Text;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import java.util.List; import java.util.List;
import java.util.Locale;
import static net.minecraft.text.Text.translatable; import static net.minecraft.text.Text.translatable;
@@ -42,7 +43,7 @@ public class InventoryWidget extends ResizableWidget {
} }
public Text display() { public Text display() {
return translatable("widgets.widgets.inventory.mode." + name().toLowerCase()); return translatable("widgets.widgets.inventory.mode." + name().toLowerCase(Locale.ROOT));
} }
} }
@@ -1,6 +1,8 @@
package de.shiewk.widgets.widgets; package de.shiewk.widgets.widgets;
import de.shiewk.widgets.WidgetSettings; import de.shiewk.widgets.WidgetSettings;
import de.shiewk.widgets.WidgetsMod;
import de.shiewk.widgets.widgets.settings.IntSliderWidgetSetting;
import de.shiewk.widgets.widgets.settings.ToggleWidgetSetting; import de.shiewk.widgets.widgets.settings.ToggleWidgetSetting;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.server.ServerTickManager; import net.minecraft.server.ServerTickManager;
@@ -14,21 +16,20 @@ import static net.minecraft.text.Text.literal;
import static net.minecraft.text.Text.translatable; import static net.minecraft.text.Text.translatable;
public class TPSWidget extends BasicTextWidget { public class TPSWidget extends BasicTextWidget {
public TPSWidget(Identifier id) { private TPSWidget(Identifier id) {
super(id, List.of( super(id, List.of(
new ToggleWidgetSetting("show_label", translatable("widgets.widgets.common.showLabel"), true), new ToggleWidgetSetting("show_label", translatable("widgets.widgets.common.showLabel"), true),
new ToggleWidgetSetting("dynamic_color", translatable("widgets.widgets.tps.dynamicColor"), true) new ToggleWidgetSetting("dynamic_color", translatable("widgets.widgets.tps.dynamicColor"), true),
new IntSliderWidgetSetting("window_size", translatable("widgets.widgets.tps.windowSize"), 2, 5, 20)
)); ));
getSettings().optionById("textcolor").setShowCondition(() -> !this.dynamicColor && !this.rainbow); getSettings().optionById("textcolor").setShowCondition(() -> !this.dynamicColor && !this.rainbow);
getSettings().optionById("rainbow").setShowCondition(() -> !this.dynamicColor); getSettings().optionById("rainbow").setShowCondition(() -> !this.dynamicColor);
getSettings().optionById("rainbow_speed").setShowCondition(() -> !this.dynamicColor && this.rainbow); getSettings().optionById("rainbow_speed").setShowCondition(() -> !this.dynamicColor && this.rainbow);
if (INSTANCE != null) throw new IllegalStateException("Instance already initialized");
INSTANCE = this;
} }
private static TPSWidget INSTANCE; public static final TPSWidget INSTANCE = new TPSWidget(Identifier.of(WidgetsMod.MOD_ID, "tps"));
private static final long[] lastUpdates = new long[5]; private static long[] lastUpdates = new long[5];
private static int updatePointer = 0; private static int updatePointer = 0;
private static int updatesSinceWorldChange = 0; private static int updatesSinceWorldChange = 0;
@@ -69,7 +70,7 @@ public class TPSWidget extends BasicTextWidget {
float mspt = avgDifference / 20000000f; float mspt = avgDifference / 20000000f;
float ticksPerSecond = 1000f / mspt; float ticksPerSecond = 1000f / mspt;
boolean loadingFinished = updatesSinceWorldChange > 5; boolean loadingFinished = updatesSinceWorldChange > lastUpdates.length;
if (client.world != null) { if (client.world != null) {
INSTANCE.updateTPS(ticksPerSecond, client.world.getTickManager().getTickRate(), loadingFinished); INSTANCE.updateTPS(ticksPerSecond, client.world.getTickManager().getTickRate(), loadingFinished);
} else { } else {
@@ -125,5 +126,10 @@ public class TPSWidget extends BasicTextWidget {
super.onSettingsChanged(settings); super.onSettingsChanged(settings);
this.dynamicColor = ((ToggleWidgetSetting) settings.optionById("dynamic_color")).getValue(); this.dynamicColor = ((ToggleWidgetSetting) settings.optionById("dynamic_color")).getValue();
this.showLabel = ((ToggleWidgetSetting) settings.optionById("show_label")).getValue(); this.showLabel = ((ToggleWidgetSetting) settings.optionById("show_label")).getValue();
int windowSize = ((IntSliderWidgetSetting) settings.optionById("window_size")).getValue();
updatePointer = 0;
updatesSinceWorldChange = 0;
lastUpdates = new long[windowSize];
} }
} }
@@ -146,5 +146,6 @@
"widgets.widgets.tps": "TPS", "widgets.widgets.tps": "TPS",
"widgets.widgets.tps.description": "Zeigt die TPS im Einzelspielermodus an oder schätzt die TPS im Mehrspielermodus", "widgets.widgets.tps.description": "Zeigt die TPS im Einzelspielermodus an oder schätzt die TPS im Mehrspielermodus",
"widgets.widgets.tps.dynamicColor": "Farbe dynamisch anzeigen", "widgets.widgets.tps.dynamicColor": "Farbe dynamisch anzeigen",
"widgets.widgets.tps.tps": "%s TPS" "widgets.widgets.tps.tps": "%s TPS",
"widgets.widgets.tps.windowSize": "Durchschnittsfenstergröße (Sekunden)"
} }
@@ -146,5 +146,6 @@
"widgets.widgets.tps": "TPS", "widgets.widgets.tps": "TPS",
"widgets.widgets.tps.description": "Shows the current TPS when in singleplayer and estimates server TPS when in multiplayer.", "widgets.widgets.tps.description": "Shows the current TPS when in singleplayer and estimates server TPS when in multiplayer.",
"widgets.widgets.tps.dynamicColor": "Dynamic Color", "widgets.widgets.tps.dynamicColor": "Dynamic Color",
"widgets.widgets.tps.tps": "%s TPS" "widgets.widgets.tps.tps": "%s TPS",
"widgets.widgets.tps.windowSize": "Averaging window size (seconds)"
} }