First, create a package named gui within your mod package. Place all components or classes related to the HUD in this package.

Writting a HudManger

package your.package.name.gui;

// All HUD components are instantiated.
// Import net.minecraft.client.gui.hud.HudComponents;
import net.minecraft.client.gui.hud.*

public class HudManager {
	private static final HudComponent thermometer = HudComponents.register(new ExampleComponent(
		"exampleComponent",
		182, 7,
		
		new SnapLayout(
	
		  // Parent component
			HudComponents.HOTBAR,
			
			// Parent anchor
			ComponentAnchor.TOP_LEFT, 
			
			// Anchor
			ComponentAnchor.BOTTOM_LEFT
		
		)));

	public static void init() {
		StanleyLib.LOGGER.debug("Registering HUD components");
	}
}

Writting a HudComponent

package your.package.name.gui;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiIngame;
import net.minecraft.client.gui.hud.Layout;
import net.minecraft.client.gui.hud.MovableHudComponent;
import net.minecraft.core.entity.player.EntityPlayer;
import net.minecraft.core.player.gamemode.Gamemode;
import org.lwjgl.opengl.GL11;

// The MovableHudComponent can be moved from its position.
// HudComponent is fixed and cannot be moved.

public class ExampleComponent extends MovableHudComponent {

	private int width = 182;
	private int height = 5;

  // Your texture path, from resources folder
	private final String texture = "assets/yourmodname/textures/gui/example.png";

	public ExampleComponent(String key, int xSize, int ySize, Layout layout) {
		super(key, xSize, ySize, layout);
	}

	@Override
	public boolean isVisible(Minecraft mc) {
		EntityPlayer player = mc.thePlayer;
		if (player == null)
			return true;

		return (!player.getGamemode().isPlayerInvulnerable() && mc.gameSettings.immersiveMode.drawHotbar() && player.getGamemode()
			.equals(Gamemode.survival));
	}

	private void renderSprite(Minecraft mc, Gui gui, int x, int y) {
		GL11.glDisable(GL11.GL_BLEND);
		GL11.glBindTexture(GL11.GL_TEXTURE_2D, mc.renderEngine.getTexture(texture));
		gui.drawTexturedModalRect(x, y, 0, 0, width, height);
	}

	@Override
	public void render(Minecraft mc, GuiIngame gui, int xSizeScreen, int ySizeScreen, float partialTick) {
		int x = this.getLayout().getComponentX(mc, this, xSizeScreen);
		int y = this.getLayout().getComponentY(mc, this, ySizeScreen);

		renderSprite(mc, gui, x, y);
	}

	@Override
	public void renderPreview(Minecraft mc, Gui gui, Layout layout, int xSizeScreen, int ySizeScreen) {
		int x = layout.getComponentX(mc, this, xSizeScreen);
		int y = layout.getComponentY(mc, this, ySizeScreen);

		renderSprite(mc, gui, x, y);
	}
}

Init the hud manager

package your.package.name;

import your.package.name.gui.HudManager;
import net.fabricmc.api.ModInitializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import turniplabs.halplibe.util.GameStartEntrypoint;
import turniplabs.halplibe.util.RecipeEntrypoint;

public class ExampleMod implements ModInitializer, GameStartEntrypoint, RecipeEntrypoint {

  public static final String MOD_ID = "Examplemod";
	public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);

	@Override
   public void onInitialize() {

		LOGGER.info("StanleyLib initialized.");

	}

	@Override
	public void beforeGameStart() {

	}

	@Override
	public void afterGameStart() {
	  // Here. 
		HudManager.init();
	}

	@Override
	public void onRecipesReady() {

	}

	@Override
	public void initNamespaces() {

	}
}

Notes

If your HUD element is not appearing, it may be due to incorrect size, position, or other configuration issues. I’ve experienced similar problems myself.

Please avoid calling HudManager.init(); in the onInitialize() method, as this can cause your mod to crash.

If you want more code examples, check the net.minecraft.client.gui.hud package, which contains all BTA components.

Additional examples of mods

https://github.com/JamDoggie/better-when-running

https://github.com/Garkatron/StanleyLib/tree/7.2_01

Credits

Thanks! Your mod was useful for learning how to add HUD elements

https://github.com/JamDoggie