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

Add option to hide in singleplayer to several widgets

This commit is contained in:
Shy
2025-05-25 15:15:07 +02:00
parent 711a078bb2
commit 5003748880
8 changed files with 173 additions and 138 deletions
@@ -1,5 +1,7 @@
package de.shiewk.widgets;
import net.minecraft.client.MinecraftClient;
import java.util.function.BooleanSupplier;
public class WidgetUtils {
@@ -18,5 +20,8 @@ public class WidgetUtils {
return 1d - Math.pow(1d - x, 3.5d);
}
public static boolean isInSingleplayer(){
return MinecraftClient.getInstance().isInSingleplayer();
}
}
@@ -1,6 +1,7 @@
package de.shiewk.widgets.widgets;
import de.shiewk.widgets.WidgetSettings;
import de.shiewk.widgets.WidgetUtils;
import de.shiewk.widgets.widgets.settings.EnumWidgetSetting;
import de.shiewk.widgets.widgets.settings.ToggleWidgetSetting;
import net.minecraft.client.MinecraftClient;
@@ -44,6 +45,7 @@ public class BandwidthWidget extends BasicTextWidget {
public BandwidthWidget(Identifier id) {
super(id, List.of(
new ToggleWidgetSetting("dynamic_color", Text.translatable("widgets.widgets.bandwidth.dynamicColor"), true),
new ToggleWidgetSetting("hide_in_singleplayer", Text.translatable("widgets.widgets.common.hideInSingleplayer"), false),
new EnumWidgetSetting<>("unit", Text.translatable("widgets.widgets.bandwidth.unit"), Unit.class, Unit.KB, unit -> Text.literal(unit.name))
));
getSettings().optionById("textcolor").setShowCondition(() -> !this.dynamicColor);
@@ -51,10 +53,13 @@ public class BandwidthWidget extends BasicTextWidget {
private int t = 0;
private boolean dynamicColor = false;
private boolean hideInSingleplayer = false;
private Unit unit = Unit.KB;
@Override
public void tickWidget() {
shouldRender = !(hideInSingleplayer && WidgetUtils.isInSingleplayer());
if (!shouldRender) return;
float tickRate = 20f;
MinecraftClient client = MinecraftClient.getInstance();
if (client.world != null) {
@@ -96,6 +101,7 @@ public class BandwidthWidget extends BasicTextWidget {
public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings);
this.dynamicColor = ((ToggleWidgetSetting) settings.optionById("dynamic_color")).getValue();
this.hideInSingleplayer = ((ToggleWidgetSetting) settings.optionById("hide_in_singleplayer")).getValue();
this.unit = (Unit) ((EnumWidgetSetting<?>) settings.optionById("unit")).getValue();
}
@@ -36,6 +36,7 @@ public abstract class BasicTextWidget extends ModWidget {
}
protected Text renderText = Text.empty();
protected boolean shouldRender = true;
private int textX = 0;
private int textY = 0;
private int padding = 0;
@@ -82,6 +83,7 @@ public abstract class BasicTextWidget extends ModWidget {
@Override
public void render(DrawContext context, long n, TextRenderer textRenderer, int posX, int posY) {
if (!shouldRender) return;
MatrixStack matrices = context.getMatrices();
if (size != 1f){
matrices.push();
@@ -1,6 +1,7 @@
package de.shiewk.widgets.widgets;
import de.shiewk.widgets.WidgetSettings;
import de.shiewk.widgets.WidgetUtils;
import de.shiewk.widgets.widgets.settings.ToggleWidgetSetting;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayNetworkHandler;
@@ -13,17 +14,23 @@ import java.util.List;
public class PingWidget extends BasicTextWidget {
long lastPingQuery = 0;
public PingWidget(Identifier id) {
super(id, List.of(
new ToggleWidgetSetting("dynamic_color", Text.translatable("widgets.widgets.ping.dynamicColor"), true)
new ToggleWidgetSetting("dynamic_color", Text.translatable("widgets.widgets.ping.dynamicColor"), true),
new ToggleWidgetSetting("hide_in_singleplayer", Text.translatable("widgets.widgets.common.hideInSingleplayer"), false)
));
getSettings().optionById("textcolor").setShowCondition(() -> !this.dynamicColor);
}
private boolean dynamicColor = false;
private boolean hideInSingleplayer = false;
long lastPingQuery = 0;
@Override
public void tickWidget() {
shouldRender = !(hideInSingleplayer && WidgetUtils.isInSingleplayer());
if (!shouldRender) return;
final ClientPlayNetworkHandler networkHandler = MinecraftClient.getInstance().getNetworkHandler();
if (networkHandler != null){
if (lastPingQuery < Util.getMeasuringTimeMs() - 5000){
@@ -63,6 +70,7 @@ public class PingWidget extends BasicTextWidget {
public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings);
this.dynamicColor = ((ToggleWidgetSetting) settings.optionById("dynamic_color")).getValue();
this.hideInSingleplayer = ((ToggleWidgetSetting) settings.optionById("hide_in_singleplayer")).getValue();
}
@Override
@@ -1,6 +1,7 @@
package de.shiewk.widgets.widgets;
import de.shiewk.widgets.WidgetSettings;
import de.shiewk.widgets.WidgetUtils;
import de.shiewk.widgets.widgets.settings.ToggleWidgetSetting;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayNetworkHandler;
@@ -12,14 +13,18 @@ import java.util.List;
public class PlayerCountWidget extends BasicTextWidget{
public PlayerCountWidget(Identifier id) {
super(id, List.of(
new ToggleWidgetSetting("showlabel", Text.translatable("widgets.widgets.common.showLabel"), true)
new ToggleWidgetSetting("showlabel", Text.translatable("widgets.widgets.common.showLabel"), true),
new ToggleWidgetSetting("hide_in_singleplayer", Text.translatable("widgets.widgets.common.hideInSingleplayer"), false)
));
}
private boolean showLabel = true;
private boolean hideInSingleplayer = false;
@Override
public void tickWidget() {
shouldRender = !(hideInSingleplayer && WidgetUtils.isInSingleplayer());
if (!shouldRender) return;
final ClientPlayNetworkHandler networkHandler = MinecraftClient.getInstance().getNetworkHandler();
String online = networkHandler == null ? "?" : String.valueOf(networkHandler.getPlayerUuids().size());
this.renderText = showLabel ? Text.literal(Text.translatable("widgets.widgets.playerCount.online", online).getString()) : Text.literal(online);
@@ -38,6 +43,7 @@ public class PlayerCountWidget extends BasicTextWidget{
@Override
public void onSettingsChanged(WidgetSettings settings) {
showLabel = ((ToggleWidgetSetting) settings.optionById("showlabel")).getValue();
hideInSingleplayer = ((ToggleWidgetSetting) settings.optionById("hide_in_singleplayer")).getValue();
super.onSettingsChanged(settings);
}
}
@@ -1,6 +1,7 @@
package de.shiewk.widgets.widgets;
import de.shiewk.widgets.WidgetSettings;
import de.shiewk.widgets.WidgetUtils;
import de.shiewk.widgets.widgets.settings.ToggleWidgetSetting;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ServerInfo;
@@ -12,7 +13,8 @@ import java.util.List;
public class ServerIPWidget extends BasicTextWidget {
public ServerIPWidget(Identifier id) {
super(id, List.of(
new ToggleWidgetSetting("dynamicwidth", Text.translatable("widgets.widgets.serverIP.dynamicWidth"), true)
new ToggleWidgetSetting("dynamicwidth", Text.translatable("widgets.widgets.serverIP.dynamicWidth"), true),
new ToggleWidgetSetting("hide_in_singleplayer", Text.translatable("widgets.widgets.common.hideInSingleplayer"), false)
));
getSettings().optionById("width").setShowCondition(() -> !this.dynamicWidth);
}
@@ -21,9 +23,12 @@ public class ServerIPWidget extends BasicTextWidget {
private int t = 0;
private boolean dynamicWidth = true;
private boolean hideInSingleplayer = false;
@Override
public void tickWidget() {
shouldRender = !(this.hideInSingleplayer && WidgetUtils.isInSingleplayer());
if (!shouldRender) return;
final ServerInfo serverEntry = MinecraftClient.getInstance().getCurrentServerEntry();
if (serverEntry != null){
this.renderText = Text.of(serverEntry.address);
@@ -56,5 +61,6 @@ public class ServerIPWidget extends BasicTextWidget {
public void onSettingsChanged(WidgetSettings settings) {
super.onSettingsChanged(settings);
this.dynamicWidth = ((ToggleWidgetSetting) settings.optionById("dynamicwidth")).getValue();
this.hideInSingleplayer = ((ToggleWidgetSetting) settings.optionById("hide_in_singleplayer")).getValue();
}
}