From c8579f673c90dfe53a9e8c98cf8b49a49d646075 Mon Sep 17 00:00:00 2001 From: Shiewk Date: Sun, 15 Dec 2024 12:31:02 +0100 Subject: [PATCH] Add Biome widget --- .../widgets/client/WidgetsModClient.java | 1 + .../shiewk/widgets/widgets/BiomeWidget.java | 70 +++++++++++++++++++ .../resources/assets/widgets/lang/de_de.json | 6 +- .../resources/assets/widgets/lang/en_us.json | 6 +- 4 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 src/main/java/de/shiewk/widgets/widgets/BiomeWidget.java diff --git a/src/main/java/de/shiewk/widgets/client/WidgetsModClient.java b/src/main/java/de/shiewk/widgets/client/WidgetsModClient.java index a48e9dc..6016e45 100644 --- a/src/main/java/de/shiewk/widgets/client/WidgetsModClient.java +++ b/src/main/java/de/shiewk/widgets/client/WidgetsModClient.java @@ -67,5 +67,6 @@ public class WidgetsModClient implements ClientModInitializer { WidgetManager.register(new KeyStrokesWidget(Identifier.of(WidgetsMod.MOD_ID, "keystrokes"))); 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"))); } } diff --git a/src/main/java/de/shiewk/widgets/widgets/BiomeWidget.java b/src/main/java/de/shiewk/widgets/widgets/BiomeWidget.java new file mode 100644 index 0000000..cef1f90 --- /dev/null +++ b/src/main/java/de/shiewk/widgets/widgets/BiomeWidget.java @@ -0,0 +1,70 @@ +package de.shiewk.widgets.widgets; + +import de.shiewk.widgets.WidgetSettings; +import de.shiewk.widgets.widgets.settings.ToggleWidgetSetting; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import net.minecraft.world.biome.Biome; + +import java.util.List; + +public class BiomeWidget extends BasicTextWidget { + + public BiomeWidget(Identifier id) { + super(id, List.of( + new ToggleWidgetSetting("show_label", Text.translatable("widgets.widgets.biome.showLabel"), true) + )); + } + + private long tickCounter = 0; + private boolean showLabel = true; + + @Override + public void tickWidget() { + if (++tickCounter % 20 == 0){ + MinecraftClient client = MinecraftClient.getInstance(); + ClientPlayerEntity player = client.player; + ClientWorld world = client.world; + if (world != null && player != null){ + RegistryEntry biome = world.getBiome(player.getBlockPos()); + String text = biome.getKeyOrValue().map( + (biomeKey) -> { + if (showLabel){ + return Text.translatable("widgets.widgets.biome.label", Text.translatable(biomeKey.getValue().toTranslationKey("biome"))).getString(); + } else { + return Text.translatable(biomeKey.getValue().toTranslationKey("biome")).getString(); + } + }, + (b) -> "[unregistered " + b + "]" + ); + this.renderText = Text.literal(text); + } else { + if (showLabel){ + this.renderText = Text.translatable("widgets.widgets.biome.label", "?"); + } else { + this.renderText = Text.literal("?"); + } + } + } + } + + @Override + public Text getName() { + return Text.translatable("widgets.widgets.biome"); + } + + @Override + public Text getDescription() { + return Text.translatable("widgets.widgets.biome.description"); + } + + @Override + public void onSettingsChanged(WidgetSettings settings) { + super.onSettingsChanged(settings); + this.showLabel = ((ToggleWidgetSetting) settings.optionById("show_label")).getValue(); + } +} diff --git a/src/main/resources/assets/widgets/lang/de_de.json b/src/main/resources/assets/widgets/lang/de_de.json index e4bc4fb..785f2a1 100644 --- a/src/main/resources/assets/widgets/lang/de_de.json +++ b/src/main/resources/assets/widgets/lang/de_de.json @@ -92,5 +92,9 @@ "widgets.widgets.tps.dynamicColor": "Farbe dynamisch anzeigen", "widgets.widgets.tps": "TPS", "widgets.widgets.tps.description": "Zeigt die TPS im Einzelspielermodus an oder schätzt die TPS im Mehrspielermodus", - "widgets.widgets.tps.showLabel": "Beschriftung anzeigen" + "widgets.widgets.tps.showLabel": "Beschriftung anzeigen", + "widgets.widgets.biome.showLabel": "Beschriftung anzeigen", + "widgets.widgets.biome.label": "Biom: %s", + "widgets.widgets.biome": "Biom", + "widgets.widgets.biome.description": "Zeigt das Biom an, in dem du dich befindest." } diff --git a/src/main/resources/assets/widgets/lang/en_us.json b/src/main/resources/assets/widgets/lang/en_us.json index 5db54b4..a8477be 100644 --- a/src/main/resources/assets/widgets/lang/en_us.json +++ b/src/main/resources/assets/widgets/lang/en_us.json @@ -92,5 +92,9 @@ "widgets.widgets.tps.dynamicColor": "Dynamic Color", "widgets.widgets.tps": "TPS", "widgets.widgets.tps.description": "Shows the current TPS when in singleplayer or estimates server TPS when in multiplayer", - "widgets.widgets.tps.showLabel": "Show label" + "widgets.widgets.tps.showLabel": "Show label", + "widgets.widgets.biome.showLabel": "Show label", + "widgets.widgets.biome.label": "Biome: %s", + "widgets.widgets.biome": "Biome", + "widgets.widgets.biome.description": "Shows the biome you're currently in." } \ No newline at end of file