HomeJavaModsTango's Dynamic Hud Lib
Tango's Dynamic Hud Lib
ModsJava

Tango's Dynamic Hud Lib

by Pankraz01 · on Modrinth

A small client-side Fabric library for movable HUD widgets. Provides an API that other mods can use to register HUD elements. For players, that means…

⬇ Download on Modrinth

Tango's HudLib

Tango's HudLib is a small client-side Fabric library for movable HUD widgets.

The mod itself does not add major gameplay features. It provides an API that other mods can use to register HUD elements. For players, that means TangosHudLib renders and stores the widgets that another mod registers through this library.

In-Game Usage

  1. Install the mod together with Fabric API.
  2. Start the game with a mod that registers widgets through TangosHudLib.
  3. Open the Tango's HudLib category in the Minecraft controls menu.
  4. Look for HUD Editor (<Mod Name>).
  5. Press the assigned key in-game to open that mod's HUD editor.
  6. Drag widgets with the left mouse button to move them.
  7. Close the editor with the same hotkey or with Esc.

Widget positions are stored in config/tangos-hud-lib.json.

Using It In Your Own Mod

The smallest clean integration has two parts:

  1. A class with static methods annotated with @HudWidget.
  2. A registration call inside your ClientModInitializer.

Example

package eu.example.mod;

import eu.tango.tangosHudLib.api.HudContent;
import eu.tango.tangosHudLib.api.HudLibrary;
import eu.tango.tangosHudLib.api.HudWidget;
import net.fabricmc.api.ClientModInitializer;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import org.lwjgl.glfw.GLFW;

public final class ExampleModClient implements ClientModInitializer {
    @Override
    public void onInitializeClient() {
        HudLibrary.registerWidgets("examplemod", GLFW.GLFW_KEY_H, ExampleWidgets.class);
    }

    public static final class ExampleWidgets {
        private ExampleWidgets() {
        }

        @HudWidget(id = "position")
        public static HudContent position() {
            MinecraftClient client = MinecraftClient.getInstance();
            if (client.player == null) {
                return HudContent.builder()
                    .line(Text.literal("Position").formatted(Formatting.GOLD))
                    .line(Text.literal("No world loaded").formatted(Formatting.GRAY))
                    .build();
            }

            return HudContent.builder()
                .line(Text.literal("Position").formatted(Formatting.GOLD))
                .line(Text.literal(
                    client.player.getBlockX() + " "
                        + client.player.getBlockY() + " "
                        + client.player.getBlockZ()
                ).formatted(Formatting.WHITE))
                .build();
        }
    }
}

Rules For @HudWidget

A widget method must:

HudContent must contain at least one non-blank line:

HudContent.builder()
    .line(Text.literal("Title"))
    .line(Text.literal("Content"))
    .build();

API Summary

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more