All Mods Resource Packs Data Packs Shaders Modpacks Plugins
DynamicHUD

DynamicHUD

by tanishisherewithhh • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

An in-game HUD engine for mod creators

Docs

DynamicHUD is a library. It is an API for developers to create customizable HUD elements for their mods that players can modify and interact with.

Features

Feature Description
Automatic Saving & Loading Widgets automatically save their state and reload upon game restart
Interactive Context Menus Right-click widgets supporting menus to open customisable sliders, color pickers, runnables, and lists/enum selection
Screen Boundary Clamping Made to prevent widgets from clipping outside window boundaries
Grid Snapping and alignment Smart snapping along other widgets and alignment grid displayed for your convienence (can be toggled in settings)
Rendering Utilities Use DrawHelper, ColorHelper, and TextureHelper to simplify rendering code like drawing rounded rectangles, textures, chroma text, gradients,outlines, shadows, any shape, scaling utilities and scrollable text
Animation system DynamicHUD comes with a 2D easing based animation system to help your widgets and menus feel smooth
Wiki https://tanishisherewith.gitbook.io/dynamic-hud

DynamicHUD has a dedicated settings button when you open the option screen beside the 'FOV' slider which you can use to customise your widgets and menus.

Keybinds (v4.0.0+)

Currently these keybinds are unmodifiable.

Open the DynamicHUD Settings Button located next to the FOV Slider in the Minecraft options screen to modify DynamicHUD's settings.

Selection & Grouping

Action Control Details
Box Select Click + Drag on canvas Selects all widgets inside the drawn boundary box
Multi-Select CTRL + Left Click Toggles selection state on individual elements
Group / Ungroup CTRL + G Links selected elements together (shows a green dashed outline)
Grid Snapping Shift Hold while dragging to lock elements to nearest grid. Grid size can be changed in the settings (Snap Size)

Note: Locked widgets (isLocked = true) remain anchored in place and will not move when dragging a group.

Widget Scaling

Method How to Use
Accurate Hover over any widget and use CTRL + Scroll Wheel
Simple Click and drag the small white dot on the bottom-right corner of a selected widget

Showcase

Showcase Video

Quick Setup (For Players)

  1. Ensure you have Fabric Loader, Fabric API. (Note: You may also need YACL installed for older versions of DynamicHUD).
  2. Download the latest .jar from the Releases Tab.
  3. Drop the file into your .minecraft/mods directory.
  4. Launch the game and enjoy ;)

Getting Started For Developers

Visit our wiki for more detailed documentation.

To get started, begin with adding DynamicHUD as a dependency in your build.gradle file:

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
    maven {
        name 'Xander Maven'
        url 'https://maven.isxander.dev/releases'
    }
}

dependencies {
    // Dynamic HUD
    modImplementation 'com.github.V-Fast:DynamicHUD:<Version>'
}

Contributing

Contributions are welcome! If you’re interested to do any help, please review our contributing guidelines. I myself am a solo developer in college and still learning to code. Updating to latest versions may take time. Any help will be greatly appreciated!

License

DynamicHUD is released under the MIT License. Feel free to use and modify it in your mods, with proper attribution back to this repository.

Support

Need assistance or have suggestions? Join our Discord community or submit an issue on our GitHub repository.

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.1.x
Fabric Quilt
3mo ago 1
1.21.11
Fabric
4mo ago 1
1.21.11
Fabric
4mo ago 1
1.21.5
Fabric
last yr. 1
1.21.4
Fabric
last yr. 1
1.21.x
Fabric
last yr. 1
1.21
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.20.4
Fabric
last yr. 1
1.20.4
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.19.4
Fabric
last yr. 1
[5.0.0] DynamicHUD 5.0.0 by tanishisherewithhh on Aug 12, 2026
Download
## Updated to version 26.1.x

## **Major Highlights for Users:**
  • Removed YACL**: YACL dependency has been removed and replaced.
  • Better Minecraft Skin**: MinecraftSkin has been enhanced with UI sound effects, better search and cursor change.
  • Tooltips**: More tooltips have been added for widgets as well as options.
  • Customisated**: Widgets will now look more customised and smooth.

## **Major Changes for Developers:**
  • [Feat.] TextWidget (String -> Component)**: The text widget now also accepts a component as well as a String through the registry supplier. Components can be styled using MutableComponent when passing to the supplier.
  • [Update] DynamicValueReigstry rewritten**: The registry has become fully shared and now requires Identifier as key.
  • [Fix.] Styled characters in drawChromaText**: drawChromaText now accepts and renders components with their original styles.
  • [Refactor]**: drawScalableText and drawTruncatedScaledText have been moved to DrawHelper.
  • [Feat.] Util.getSearchResults()**: The function will either flatten and sort the resultant options, or return sorted option groups + options as per the boolean flatten set in function parameter.
  • [Refactor.] Change in option name, description and value access specifiers**: Use the getters for their fields respectively.
  • [Feat.] renderTooltipIfHovered()**: Function was overloaded and now waits for a specified delay before displaying the tooltip.
  • [Feat.] valudId in WidgetBuilder**: For widgets using DynamicValueWidget, the fields registryKey and registryId have been replaced with Identifier valueId
  • Full Changelog**: https://github.com/V-Fast/DynamicHUD/compare/v4.1.0...v5.0.0

The [Wiki](https://tanishisherewith.gitbook.io/dynamic-hud) has also been updated.
[4.1.0] DynamicHUD 4.1.0 by tanishisherewithhh on Jul 04, 2026
Download
This version comes with many important features.

## **Major Highlights for Users:**
  • Smarter Snap & Anchoring**: Widgets snapped to screen centers or margins will now adapt correctly and maintain their precise layout positions on screen resize/resolution changes.
  • Drag Selection Window**: Click and drag on empty space to draw a selection window to select multiple widgets at once and drag them together.
  • CTRL + LeftClick Multi-selection**: Hold CTRL and click on individual widgets to toggle selection, allowing you to select and move multiple custom widgets.
  • Widget Grouping (CTRL + G)**: Select multiple widgets and press CTRL + G to group them. Grouped widgets move together.
  • Dynamic Scaling Tools**: Drag the new scale dot on the bottom-right corner of a selected widget, or hover over a widget and press CTRL + Mouse Wheel Scroll to resize it.
  • Name Truncation**: Long option names are now automatically truncated with ..., preventing overlap in compact context menus.
  • Locked Widget Fix**: Locked widgets now correctly adapt their positions on screen resizing instead of staying at stale coordinates.
  • YACL Global Configurations**:
  • Enable Drag Selection: Toggles drawing select-dragging box overlays.
  • Dashed Outline Color & Thickness: Custom colors and width parameters for widget guidelines.
  • Show Lock Button & Lock Size: Custom sizes and display toggles for lock/unlock icons.
  • Scale Dot Size & Scale Sensitivity: Fine-tune size and scale dragging speeds.
  • Smart Snapping & Snap Size: Adjust axis alignments and snap grid sizes.

## **Major Changes for Developers:**
  • [Feat.] Node-Based Layouts**: The LayoutEngine now processes context menu layouts using tree nodes (ColumnNode, GridNode, RowNode, etc.). (Currently used by ClassicSkin)
  • [Feat.] Properties Cleanup**: Cleaned up the redundant padding and heightOffset properties from ContextMenuProperties, offloading positioning and gaps to layout strategies.
  • [Feat.] Keybind Options**: Added support and documentation for KeybindOption allowing GLFW keyboard bindings to have dedicated UI option card renderers.
  • [Feat.] Widget Groups**: Introduced the WidgetGroup class for linking multiple widgets together, supporting unlocked member drag propagation and unified outline box rendering.
  • [Feat.] Better Anchors**: Replaced absolute offsets with precise anchoring. Widgets automatically detect their closest screen zone (out of 9 possible zones) to calculate precise relative positioning on window resizing.
  • [Fix.] Screen Resize Injections**: Fixed a bug in ScreenMixin where the mixin was passing the old screen sizes instead of the new dimensions during a resize callback.
  • [Fix.] UUID Unique Identifiers**: Replaced String-based UID unique identifiers in widgets with java.util.UUID.
  • [Fix.] Option Name Truncation**: Added utility functions Util.getTruncatedName and Util.drawTruncatedScaledText in Util.java to support clean text rendering.
  • [Feat.] Base-Class Skin Renderers**: Derived skins can now inherit their option renderers from the base class if not explicitly overridden.


The [Wiki](https://tanishisherewith.gitbook.io/dynamic-hud) has also been updated.
[4.0.0] DynamicHUD 4.0.0 by tanishisherewithhh on Jun 26, 2026
Download
# **Update to 1.21.11**

> DynamicHUD has been updated to minecraft version 1.21.11 with the release of 4.0.0

This version comes with many important patches and improvements.

## **Major Highlights for Users:**

1. **Neighbouring Widget Snap**: An option has been added for users to use smart snapping which enables widgets to snap around each other smoothly and also displays useful screen and widget axis alignment guidelines while dragging.
2. **Color Picker**: The color picker has been added back after being removed in previous versions.
3. **Enhanced Animations**: Much more of the DynamicHUD UI comes with smoother and interactive animations.
4. **Performance Optimisations**: This version is set to give a better and seamless experience with widgets.
5. **More options**: We have added more options in the YACL configuration screen to help with more customisability.
6. **Separated Widget Scaling**: Now users will be able to scale each widget separately by simply hovering over the widget and pressing CTRL + MOUSE-SCROLL. This will allow you to change the size of any scalable widget as per your convenience. This is in addition to the Global Widget Scale in YACL configurations.
7. **No jittering**: All jitters are removed.
8. **Search Bar**: A search bar has been added to the top of the context menu for some of the ContextMenu skins.
9. **GraphWidget Improvements**: GraphWidget has been heavily improved to display clearer graph lines and points, better auto-range, sampling time, less intrusive label and more customisability for Pro and Enhanced setting complexities.
10. **Skins**: All skins will now feel faster.

## **Major Changes for Developers:**
> The update to 1.21.11 also brings new changes to how things are rendered, so all rendering methods have been changed [appropriately](https://fabricmc.net/2025/12/05/12111.html).
> ### DynamicHUD now uses official mojang mappings instead of Yarn mappings.

1. **[Feat.] Graph Control**: Added new methods to let you change the timeline points (how long ago values should be displayed) and customize sampling rates. The graph will automatically rebuild its data array on the fly without losing previous values.
2. **[Feat.] Scaling related**: Since widgets now contain localised scaling, you will need to use the widgetBox for current (modified) width and height after providing your raw dimensions.
3. **[New] Cycle Option**: Both EnumOption and ListOption are replaced by a single CycleOption. Hence all your skins need to be updated too.
4. **[New] LayoutEngine**: ContextMenu now uses a layout engine for options. A default VerticalFlow layout strategy is provided which is used by Classic, Modern and Minecraft Skins. This layout engine can be used to modify the padding, spacing and minimum width of options.
5. **[New] Search**: The following function can now be used to obtain search results from a query string through all options and option groups using FuzzyScore matching: com.tanishisherewith.dynamichud.utils.Util.getSearchResults(String query, int minimumScore, List<Option<?>> options)
6. **[New] MouseColorQuery**: MouseColorQuery is a class that can be used to query color at a given mouse position at the end of the client tick. Used by the ColorPicker.
7. **[Fix.] ScrollHandler logic rewritten**: To prevent jittering.
8. **[Removed] AnimationProperty<>**: AnimationProperty was replaced by a consumer in ValueAnimation.
9. **[New] SquishAnimator**: Used for a simple button squish effect in ModernSkin.
10. **[Fix] Skin.charTyped(...)**: This function call was missing in contextmenu and has been added.
11. **[Feat.] Animation Overhaul**: Now all appropriate animation is being handled by ValueAnimation or such instead of hardcoding a linear lerp. For eg. ContextMenu now also use localised scaling.
12. **[Feat.] ModernSkin OptionGroup animation**: OptionGroups in ModernSkin now have opening animation handled by static class GroupAnimData.

And much more in-depth changes which will be updated soon in our [Wiki](https://tanishisherewith.gitbook.io/dynamic-hud).

[3.1.0] DynamicHUD 3.1.0 by tanishisherewithhh on Jun 28, 2025
Download
## Major Changes
> Updated to 1.21.5

## Minor Changes
> Moved rounded rectangles and its outline code to shaders

[3.0.0] DynamicHUD 3.0.0 by tanishisherewithhh on Jun 01, 2025
Download
## Important Changes for users
  • Updated to 1.21.4
  • Many new options to config screen to improve customisability
  • Added option complexity for context menu options to allow users focus on their priorities for customisation and remove bloat options.
  • Using chroma text for TextWidget Rainbow, along with more customisation to the rainbow effect with enhanced option complexity.
  • New Context Menu Skins like ModernSkin, ClassicSkin, MinecraftSkin
  • Easier mod management
  • Better error reports, with a warning screen to indicate if a mod failed to properly integrate with DynamicHUD
  • Removed ColorPicker from ColorOption :(
  • Optimised

### TODO: Backwards compatibility and forward compatibility.

## Important changes for developers:

## What's Changed

[2.2.1] DynamicHUD 2.2.1 by tanishisherewithhh on Aug 16, 2024
Download

Updated Gradle to use Java 21 instead of Java 17. Not much code changes.

[2.2.0] DynamicHUD 2.2.0 by tanishisherewithhh on Jul 24, 2024
Download
### This is the official 1.21 release for minecraft fabric.

Some additional changes were made which are reflected in the [GitBook/Wiki](https://tanishisherewith.gitbook.io/dynamic-hud/).

  • New BooleanPool class was added.
  • Updated constructors for BooleanOption, RunnableOption and SubMenuOption
  • 1.21 related changes.
  • Usual dependency update.
[2.1.0] DynamicHUD 2.1.0 by tanishisherewithhh on Jul 06, 2024
Download
### Updated DynamicHUD to 1.20.6 version.

Should support 1.20.4, 1.20.5 and 1.20.6.
Nothing much else was added.

## Primary file contains the demo of DynamicHUD included. Not advised to use.
[2.0.1] DynamicHUD 2.0.1 by tanishisherewithhh on May 29, 2024
Download
This version has a few minor changes and some bug fixes:
  • Added tooltips for widgets and created an option in YACL for the same (off by default)
  • Added new TextWidget as an example.
  • Made some javadocs more detailed and precise.

Still currently on 1.20.4 but may work for 1.20.5 and 1.20.6 as well.


[2.0.0] DynamicHUD 2.0.0 - 1.20.4 by tanishisherewithhh on Apr 17, 2024
Download
### Complete rewritten of previous versions.

## Major changes
  • Adding widgets is now more simpler
  • Integrate DynamicHUD with a simple interface
  • Multi-Mod support
  • WidgetRenderer for rendering groups of widgets of a specific ID.
  • Different groups of widgets are saved to different files as per the developer.
  • Widgets are now compiled with Unique IDs to identify them across mods.
  • Better dragging, snapping and border control.
  • Scalability of widgets is much more improved in the hands of the player.
  • Using DynamicValueRegistry to supply the library with changing values.
  • Widgets can be rendered on any screen as per the developers requirement instead of the previous TitleScreen and in game.
  • Supports more compatibility with other mods.
  • AbstractMoveableScreen is simplified heavily.
  • ContextMenu now works directly with widgets instead of previosly indirectly from the Abstract screen.
  • ContextMenu is improved with better visuals and now accepts Options.
  • Default ContextMenu options are: Boolean, Color, Double, Runnable,List/Enum and a SubMenu option. The Option<T> class enables the developer to add more options as per their desire.

## Minor changes:
  • ModMenuIntegration has been fixed.
  • DynamicHUD now uses YACL to manage global settings.
  • Removed complex and unnecessary code.
  • Overall performace and stability has been improved.
  • All previous bugs are fixed.

### The [wiki](https://tanishisherewith.gitbook.io/dynamic-hud/) has also been updated and explains in much more depth.

A small showcase video was also made on [youtube](https://www.youtube.com/watch?v=nQ-oiHyhrm8).
[1.2.1] DynamicHUD 1.2.1 by tanishisherewithhh on Oct 02, 2023
Download
# ChangeLog:

  • Some minor changes
  • DynamicHUD class now uses ModInitializer instead of ClientModInitializer.
  • Fixed a bug from [issue #2](https://github.com/V-Fast/DynamicHUD/issues/2)
  • Also fixed a gradle bug in the gitbook
  • Also supports 1.20.2
  • Widgets now render even in the debugScreen (It will be fixed in the next fabric update)
[1.2.0] DynamicHUD 1.2.0 by tanishisherewithhh on Aug 13, 2023
Download
## What the update brings to the player:
  • Scaling system
> The player can now scale the widgets with a slider in the options screen 🎉
  • Better saving system to prevent invalid/corrupted files

## What this update removes for the player:
  • I am sad to announce that Horizontal Rainbow for text Widget has been removed for performance as well as the new scaling system (it might be brought back later)

## Developer changes: (Nerdy stuff, viewer discretion advised)
  • Library now uses Set data structure instead of List data structure
  • For scaling system two new classes have been added in addition to changes in TextureHelper.java and DrawHelper.java
> CustomTextRenderer.java for scaling texts
> CustomItemRenderer.java for scaling item textures
  • _You may need to add your own custom classes for scaling if you use some different renderer/rendering system/Widget_*
  • DrawHelper.java adds the following method:
> drawTextWithScale(...) : Draws scaled text on screen
  • TextureHelper.java adds the following method:
> drawItemTextureWithTextAndScale(...) : Draws an scaled item texture on the screen with text at a specified position relative to it.

## Increased performance and calculation. Default Key binds are now changeable.
## _AutoSave_ is now improved to create a temporary file before updating the main config file.

### Important changes for developer:
> Widgets and MainMenuWidgets list has been changed from List to Set.
> You can now update the default keybind and their 4 parameters:
  • translationKey by using the DynamicHUD.setTranslationKey(translationKey)
  • InputUtil.type by using the DynamicHUD.setInputType(inputType)
  • keybindCategory by using the DynamicHUD.setKeybingCategory(keybingCategory)
  • key by using the DynamicHUD.setKeyBindKey(key)

Get Live changes at: https://github.com/V-Fast/DynamicHUD
[1.1.3] DynamicHUD 1.1.3 by tanishisherewithhh on Jul 09, 2023
Download
### Fixed WidgetBox calculations and some other small changes
[1.1.2] DynamicHUD 1.1.2 by tanishisherewithhh on Jul 09, 2023
Download
DynamicHud 1.1.1 had some entry point errors so here is the working version:

# 1.1.1 changelogs:

Updates regarding rendering and others:

# _**New for developers:**_
## Added:
> ContextMenu Input Options which supports text input from user:
  • String Input
  • Double Input

> MainMenuWidgets which now allow you to render different widgets on the title screen or main menu screen as well. The widgets can be moved on the screen without opening another one.

> String label as a parameter in the Widget class

> A new method to load the widget text.

> Screen Movement constrained within the game window.

> Added support for _non-draggable widgets_.

## Updated:
> Updated the load and save to work for MainMenu Widgets

> Updated [DynamicHUDmod.java](src/main/java/com/tanishisherewith/dynamichud/DynamicHUDmod.java)

> Mod Menu Integration

> ContextMenu rendering and positioning.

> Slider Widget rendering and positioning.

> Updated [Gitbook](https://tanishisherewith.gitbook.io/dynamic-hud) for 1.20x Minecraft version and 1.1.1 dynamicHUD version.

## Changed:
> Changed ContextMenu and SliderWidget to a List type in the [AbstractMoveableScreen.java](src/main/java/com/tanishisherewith/dynamichud/huds/AbstractMoveableScreen.java) to support Submenus.


## [Gitbook](https://tanishisherewith.gitbook.io/dynamic-hud) [Mostly updated]


[1.1.1] DynamicHUD 1.1.1 by tanishisherewithhh on Jul 07, 2023
Download
Updates regarding rendering and others:

# _**New for developers:**_
## Added:
> ContextMenu Input Options which supports text input from user:
  • String Input
  • Double Input

> MainMenuWidgets which now allow you to render different widgets on the title screen or main menu screen as well. The widgets can be moved on the screen without opening another one.

> String label as a parameter in the Widget class

> A new method to load the widget text.

> Screen Movement constrained within the game window.

> Added support for _non-draggable widgets_.

## Updated:
> Updated the load and save to work for MainMenu Widgets

> Updated [DynamicHUDmod.java](src/main/java/com/tanishisherewith/dynamichud/DynamicHUDmod.java)

> Mod Menu Integration

> ContextMenu rendering and positioning.

> Slider Widget rendering and positioning.

> Updated [Gitbook](https://tanishisherewith.gitbook.io/dynamic-hud) for 1.20x Minecraft version and 1.1.1 dynamicHUD version.

## Changed:
> Changed ContextMenu and SliderWidget to a List type in the [AbstractMoveableScreen.java](src/main/java/com/tanishisherewith/dynamichud/huds/AbstractMoveableScreen.java) to support Submenus.


## [Gitbook](https://tanishisherewith.gitbook.io/dynamic-hud) [Mostly updated]


[1.1.0] DynamicHUD 1.1.0 by tanishisherewithhh on Jun 25, 2023
Download
Reupload of 1.1.0 with a few changes
[1.0.0] DynamicHUD 1.0.0 by tanishisherewithhh on Jun 17, 2023
Download
# First DynamicHUD version. Might get unstable for later versions.
DynamicHUD Icon
Download DynamicHUD
Select game version
Select platform