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:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user