Releases: V-Fast/DynamicHUD
Release list
v4.1.0
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.
- Micro sliding switches: The context menu boolean options now feature micro-sized sliding switch toggles, making the settings panel highly compact.
- 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 + LeftClickMulti-selection: HoldCTRLand click on individual widgets to toggle selection, allowing you to select and move multiple custom widgets.- Widget Grouping (
CTRL + G): Select multiple widgets and pressCTRL + Gto 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 Scrollto 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
LayoutEnginenow processes context menu layouts using tree nodes (ColumnNode,GridNode,RowNode, etc.) for bloat-free option grids. (Currently used by ClassicSkin) - [Feat.] Properties Cleanup: Cleaned up the redundant
paddingandheightOffsetproperties fromContextMenuProperties, offloading positioning and gaps to layout strategies. - [Feat.] Keybind Options: Added support and documentation for
KeybindOptionallowing GLFW keyboard bindings to have dedicated UI option card renderers. - [Feat.] Widget Groups: Introduced the
WidgetGroupclass 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
ScreenMixinwhere the mixin was passing the old screen sizes instead of the new dimensions during a resize callback. - [Fix.] UUID Unique Identifiers: Replaced String-based
UIDunique identifiers in widgets withjava.util.UUID. - [Fix.] Option Name Truncation: Added utility functions
Util.getTruncatedNameandUtil.drawTruncatedScaledTextinUtil.javato support clean text rendering. - [Feat.] Base-Class Skin Renderers: Derived skins can now inherit their option renderers dynamically from the base class if not explicitly overridden.
The Wiki has also been updated.
v4.0.0
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:
- Neighbouring Widget Snap: An option has been added for users to use
smart snappingwhich enables widgets to snap around each other smoothly and also displays useful screen and widget axis alignment guidelines while dragging. - Color Picker: The color picker has been added back after being removed in previous versions.
- Enhanced Animations: Much more of the DynamicHUD UI comes with smoother and interactive animations.
- Performance Optimisations: This version is set to give a better and seamless experience with widgets.
- More options: We have added more options in the YACL configuration screen to help with more customisability.
- 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. - No jittering: All jitters are removed.
- Search Bar: A search bar has been added to the top of the context menu for some of the ContextMenu skins.
- 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
ProandEnhancedsetting complexities. - 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.
DynamicHUD now uses
official mojang mappingsinstead ofYarnmappings.
- [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.
- [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.
- [New] Cycle Option: Both
EnumOptionandListOptionare replaced by a singleCycleOption. Hence all your skins need to be updated too. - [New] LayoutEngine: ContextMenu now uses a layout engine for options. A default VerticalFlow layout stratergy is provided which is used by Classic, Modern and Minecraft Skins. This layout engine can be used to modify the
padding,spacingandminimum widthof options. - [New] Search: The following function can now be used to obtain search results from a query string through all options and option groups using
FuzzyScorematching:com.tanishisherewith.dynamichud.utils.Util.getSearchResults(String query, int minimumScore, List<Option<?>> options) - [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.
- [Fix.] ScrollHandler logic rewritten: To prevent jittering.
- [Removed] AnimationPropery<>: AnimationProperty was replaced by a consumer in
ValueAnimation. - [New] SquishAnimator: Used for a simple button squish effect in ModernSkin.
- [Fix] Skin.charTyped(...): This function call was missing in contextmenu and has been added.
- [Feat.] Animation Overhaul: Now all appropriate animation is being handled by
ValueAnimationor such instead of hardcoding a linear lerp. For eg. ContextMenu now also use localised scaling. - [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.
Full Changelog: v3.1.0...v4.0.0
v3.1.0
Major Changes
Updated to 1.21.5
Minor Changes
Moved rounded rectangles and its outline code to shaders
Full Changelog: v3.0.0...v3.1.0
v3.0.0
Gitbook has been updated for this version.
Complete Guide on migrating to 3.0.0
Important Changes
Updated to 1.21.4
API has been updated thoroughly from previous version. Highly recommended to visit the documentation for full guide.
What's Changed
- Another mega update. Especially to ContextMenu. by @tanishisherewithhh in #4
Full Changelog: v2.2.1...v3.0.0
v2.2.1 - 1.21 (2.1.1.1)
This is the second official 1.21 release for minecraft fabric.
Some additional changes were made which are reflected in the GitBook/Wiki.
- New BooleanPool class was added.
- Updated constructors for BooleanOption, RunnableOption and SubMenuOption
- 1.21 related changes.
- Usual dependency update.
Update on Gradle and jitpack to use java 21 instead of 17.
v2.1.0 1.20.6
Updated DynamicHUD to 1.20.6 version.
Should support 1.20.4, 1.20.5 and 1.20.6
Nothing much else.
v2.0.1
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.
Generated Changelog: v2.0.0...v2.0.1
DynamicHUD Pre-release
Pre-release generated from github actions on push commit. Maybe unstable to use.
v2.0.0
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 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 has also been updated.
YACL dependency is optional.
What's Changed
- Merge test branch for 1.20.4 by @tanishisherewithhh in #3
Full Changelog: v1.2.0-1...v2.0.0
1.2.0 Fully updated
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 Rainbowfor 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
Setdata structure instead ofListdata structure - For scaling system two new classes have been added in addition to changes in
TextureHelper.javaandDrawHelper.java
CustomTextRenderer.javafor scaling texts
CustomItemRenderer.javafor scaling item textures
You may need to add your own custom classes for scaling if you use some different renderer/rendering system/Widget
DrawHelper.javaadds the following method:
drawTextWithScale(...): Draws scaled text on screen
TextureHelper.javaadds the following method:
drawItemTextureWithTextAndScale(...): Draws an scaled item texture on the screen with text at a specified position relative to it.
- And much more which I don't remember (it will be updated on Gitbook )
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:
WidgetsandMainMenuWidgetslist has been changed fromListtoSet.
You can now update the default keybind and their 4 parameters:
translationKeyby using theDynamicHUD.setTranslationKey(translationKey)InputUtil.typeby using theDynamicHUD.setInputType(inputType)keybindCategoryby using theDynamicHUD.setKeybingCategory(keybingCategory)keyby using theDynamicHUD.setKeyBindKey(key)
Get Live changes at: https://github.com/V-Fast/DynamicHUD