Mods
Resource Packs
Data Packs
Modpacks
Shaders
Plugins
Mods Resource Packs Data Packs Plugins Shaders Modpacks
Sign in
ModsPluginsData PacksShadersResource PacksModpacks
Sign in
Settings
Modern UI

Modern UI

Modern desktop graphics application framework and low-level 3D graphics engine

2.86M
401
Library
Optimization
Utility
AboutGalleryChangelogVersions

Modern UI 3.12.0.3 (Fabric)

by BloCamLimb on Sep 2, 2025
Download

Modern UI 3.12.0.3 (Forge)

by BloCamLimb on Sep 2, 2025
Download

Modern UI 3.12.0.3 (NeoForge)

by BloCamLimb on Sep 2, 2025
Download

Modern UI 3.12.0.3

NeoForge Extension 1.21.4

  • (1.21.1 only) Disable blur effect by default when OptiFine is installed
  • (1.21.1 only) Fix coordinates in layer blitting
  • Add complete version of Still Alive, the Portal ending song
  • Add bootstrap option modernui_mc_skipGLPromotion to skip GL promotion
  • Always skip GL promotion on macOS
  • Add modified version of Inter font "Inter Frozen Medium" and its native italic font as default
  • Add in-game changelogs to Home UI
  • Add bootstrap options:
    • arc3d_context_useStagingBuffers to enable staging buffers in OpenGL, default is false, previously true
    • arc3d_context_allowGLSPIRV to use SPIR-V in OpenGL, compiled by Arc3D shader compiler, default is false
  • (Forge/NeoForge only) Initialize UI manager and UI thread earlier
  • Add a separate option "Additional Blur Effect" to blur vanilla screens, default is false
  • Fix threading issue in layer blitting, which may cause crash when resizing window
  • (1.21.1+, NeoForge only) Always do GL promotion if EARLY_WINDOW_CONTROL is disabled
  • Use private logger instead of framework logger
  • Add configs to custom "ding" sound and volume
  • Update localization to match vanilla language data
  • Add "Reset to Default" to context menu in Preferences UI, to reset a config entry to its default value
  • Add back view configs and add some new view configs
  • The entire Center UI is reworked, a great number of UI/UX improvements and bug fixes
  • Provide an abstraction of config system

Forge Extension 1.21.4

  • Equivalent to NeoForge version, except where noted

Fabric Extension 1.21.4

  • Functionally equivalent to NeoForge version, except where noted

Modern Text Engine 1.21.4

  • Add config for bitmap horizontal offset
  • (1.21.4+ only) Add support for no shadow text (i.e. shadow_color=0)
  • Emit no lines for empty strings when computing line breaks to match vanilla behavior
  • Make StandardGlyphInfo return exact advance instead of ceiling, matching vanilla TrueTypeProvider behavior. This might improve the rendering of the AE2 guidebook
  • For line wrapping of formatted text, allow emitting no lines to match vanilla behavior, fixing the issue where an empty tooltip is sometimes visible.
  • Fix crash with obfuscated style on large bitmap fonts

Core Framework

  • Fix disappearing transitions caused by removing views in batches cannot be seen
  • Tweak edge absorption in NestedScrollView
  • Delay TextBlob initialization of ShapedText until draw time
  • Add paint parameter for leading/trailing margins
  • Merge TrailingMarginSpan with LeadingMarginSpan, also fix a text layout bug
  • Optimize many text processing methods
  • Fix StyleSpan is not cumulative
  • Move LogWriter to internal
  • Migrate to SLF4J, remove Log4j dependency
  • Add filled text field style
  • Add measure cache
  • Add convenient methods for specifying styles
  • Add thread-safe methods to change themes in context
  • Change AdapterView.OnItemSelectedListener to functional interface
  • Fully configurable view configuration
  • Update scroller to calculate physical coefficients using ppi
  • Make CharacterStyle cloneable, also fix TextPaint.density
  • More methods in Color, and allow creating instances
  • Update default fragment SFX transitions
  • Allow shallow copy of Bitmap and Image as shared owners
  • Add TabLayout and styles
  • Improve widget scrolling mechanism
  • Add tag system to View
  • Add MotionEasingUtils for common bezier interpolators
  • Add RTL support and fix bugs for ViewPager
  • Improvements and fixes for ViewPager
  • Fix hotspot point not dispatched to children
  • Fix LinearLayout divider layout bug in RTL direction
  • Add option to enable SPIR-V in OpenGL backend, but disable by default
    • NVIDIA driver will compile SPIR-V back to into GLSL in OpenGL, and the disassembler takes up at least 40MB of additional RAM usage
  • Use rounding for font metrics
    • Rounding seems to produce a more accurate layout, so the ceiling is no longer used unless there are internal changes in the JDK
  • Fix view pager touch slop
  • Update color mappings for all buttons
  • Not showing long click tooltip when there's hover tooltip
  • Add icon button styles
  • Fix two bugs in font register
    • Should lookup in FontManager to use native bold/italic fonts
    • To ensure thread-safety, lock the whole register method (actually a JDK bug)
  • Improve tooltip show/hide logic when tooltip text is changed
  • Add shadow alpha configuration to ViewGroup
  • Add ComposeShader to composite two layers
  • Add copyWithLocalMatrix for gradient shaders
  • Use an accurate method to detect whether Bidi is needed
    • Matching ShapedText and MeasuredText behavior. This is 20% slower than the previous one, but is fast enough.
  • Optimize image shader constructor, add copyWithLocalMatrix
  • Add new slider styles and animation control
  • Expose clearFocusInternal method to internal code
  • Expose setOptionalIconsVisible method
  • Remove unnecessary ThreadLocal usage
  • Add View lighting and shadow casting system
  • Optimize line breaking performance
  • Add Drawable dirty bounds
  • Update dropdown style
  • Add menu item icon style and update menu item layout
  • Add new checkbox style
  • Add new text field and spinner styles
  • Add the drawable tint methods to TextView
  • Move TextStyle from Paint to TextPaint subclass
  • Add builtin icons and replace legacy code
  • Add new draw methods to Canvas API
  • Renew RippleDrawable with masks and animations
  • Add Outline class and compute Drawable outline
  • Disable edge AA for ImageDrawable by default
  • Change font_size_granularity to 0.25
  • Enable subpixel positioning for text rendering
  • Sync with latest Arc3D
  • Add indeterminate state to checkbox, a tri-state checkbox
  • Update subset logic for (Rounded)ImageDrawable and move subset to constant state
  • Change default reference density DPI to 96
  • Add on/off tooltip text for CheckableImageButton, and optimize
  • Add ArrayAdapter.getContext()
  • Allow nested radio groups to work, deprecate RelativeRadioGroup
  • Add on/off text to switch, and optimize
  • Add toggle button
  • Enhance RadioGroup, so that it can work on all checkable views
  • Add Checkable2 interface for checkable views with a callback
  • Make CompoundButton always have checkable state to sync with CheckableImageButton
  • Add checkable image button
  • Add elevated button style
  • Adjust default button size
  • Move modulateColor to ColorStateList as a public method
  • Adjust tooltip padding
  • Add InsetDrawable
  • Allow ShapeDrawable to draw rounded rectangles with per-corner radius
  • Add methods to draw rounded rectangles with different corner radii to Canvas
  • Temporarily disable popup anchor aligning to work around a bug
  • Add ClipDrawable
  • Add AnimationDrawable for frame-by-frame animations
  • Add themed resource cache
  • Add theme styles
  • Add dropdown styles
  • Add styles for popup menus
  • Add seek bar styles and other improvements
  • Add progress bar styles (determinate and indeterminate)
  • Full functionality and fixes for ProgressBar
  • Update text appearance of menu item
  • Add radio button and switch styles
  • Make EdgeEffect accept Context to retrieve theme color
  • Add TextAppearance class and methods to apply typography
  • Add many buttons styles
  • Add many system theme values, based on M3 Expressive
  • Add attributes/styleables for most UI components
  • Rework the TypedValue class
  • Add methods to retrieve attributes and styles in batch
  • Add base methods for retrieving attributes
  • Add ResourceId, StringView, ThemeKey
  • Introduce a new Resources and Theme system
  • Merge with ICU Bidi for MeasuredText
  • Add fast path for BoringLayout.drawText() for all alignments
  • Add toString() for animator classes
  • Remove assertions for kotlin compile tasks
  • Add RoundedImageDrawable (always keeping aspect ratio)
  • Remove Paint.getShader() and simplify ImageDrawable
  • Update scrollbar colors
  • Update toast and tooltip styles
  • Update popup menu styles
  • Add new slider style
  • No longer use pointing hand cursor for buttons (only for hyperlinks now)
  • Update SeekBar to respect thumbOffset and support split track
  • Add new drop-down style
  • Update drop-down transition animation
  • Change default layout for ArrayAdapter
  • Change default selector for ListView
  • Disable default transition for windows (rework needed)
  • Add text padding for Switch
  • Add custom clip bounds for View
  • Add new switch thumb drawable
  • Add Switch, deprecate SwitchButton
  • Add two cubic Bezier interpolator
  • Add button tint blend mode
  • Make ShapeDrawable always skip stroking when the color is transparent
  • Add new radio button drawable
  • Add SystemTheme
  • Make ValueAnimator work without values
  • Support line spacing addition/multiplier for text Layout
  • No longer using Caffeine for text layout caching, remove Caffeine dependency
  • Fix AnimationMatrix clear
  • Make View.getMatrix() return non-null
  • Add partial view invalidation, dirty region accumulation
  • Delete obsolete GLSL shaders
  • Add RippleDrawable (allowing analytic mask)
  • Add Bezier time interpolator
  • Add experimental support for Windows native window border (no title bar)

Markflow Extension

The old Markdown extension is completely deprecated and replaced by the new Markflow

  • Renew markdown theme & styling
  • Fix heading break style when wrapping
  • Update API notice for Markflow
  • Markflow initial version

Arc3D Graphics Engine

  • Update benchmark, shader source, and dependency version
  • ContextOptions logger defaults to null
  • Remove instance usage of Color
  • Disable runtime constant BIG_ENDIAN since LWJGL does not support big endian machines
  • Rename Pixels to PixelRef
  • Rename Path.recycle() to Path.release()
  • Remove the old usage of UniqueID
  • Rework some classes
  • Optimize TaskList and more
  • Fully decouple core and sketch package
  • TextureQueryLod support should default to false
  • Remove helper methods for drawing round rects
  • Rework PathIterable and PathIterator, add Shape interface
  • Rename SharedResourceCache to GlobalResourceCache
  • Move 2D rendering API to sketch package
  • Optimize and fix text metrics computation
  • No longer make Blender and ColorFilter ref-counted
  • Many improvements on high-quality text rendering
  • Add Rect2f.makeInfiniteInverted() for branchless bounds union
  • Update load factor for multimap
  • Delete a lot of old code
  • Add drawEllipse to Canvas
  • Add AnalyticComplexBox geometry step, for complex AA rounded rectangles
  • Trying to use Contract on read-only parameters
  • Fix constant value retrieval for vector splats
  • Add isOpaque for more shaders
  • Merge Color4fShader with ColorShader
  • Allow creating GL programs without fragment shaders (for depth-only pass)
  • Add cover bounds step to handle non-AA fill and scissor fill
  • Simplify LinkedListMultimap and make it small-footprint
  • Add experimental drawEdgeAAQuad and drawBlurredRRect to Canvas
  • ResourceCache: move budgeted and shareable to resource creation
  • Strengthen FragmentStage initialization
  • Add analytic blurred box geometry step
  • Add modes for makeWithLocalMatrix, allow pre-concat, post-concat, replacement
  • Optimize Vertices color array memcopy, move the swizzling to GPU
  • Add RRectShader and implementation
  • More methods to the RRect class
  • Leak ref count of some wrapper-like effect objects to the underlying objects
  • Allow some Shader objects to be trivially ref-counted
  • Add option to enable SPIR-V in OpenGL backend
  • Enable SPIR-V in OpenGL backend
  • Fix vertex array setup prior to OpenGL 4.3
  • Add per-edge AA quad geometry step
  • Add option to use staging buffers in OpenGL, and default to false (previously is true)
  • Rewrite shaders from GLSL to AkSL (Arc3D shading language)
  • Fix sizeof(IndexType) calculation
  • Fix blend shaders bugs
  • Make StrikeDesc immutable by default
  • Full support for subpixel positioning fonts
  • Add methods to pack subpixel info into glyph ID
  • Migrate to jspecify

Arc3D Shader Compiler

  • Rename some classes in compiler package
  • No longer use 'packed' as a variable name
    • Prior to GLSL ES 3.00, 'packed' is a reserved keyword. However, even if we use versions 3.00 and above, some drivers still consider it a keyword.
  • Add some intrinsics to SPIR-V codegen
  • Add TreeWriter to visit and modify the AST
  • Rework TreeVisitor and AST node accept
  • Use Context object everywhere instead of ShaderCompiler object
  • Now accept only String input, due to immutability and compressed strings
  • Remove short/half types in favor of min16int/min16float types
  • Full support for GLSL codegen in OpenGL/ES backend

Modern UI 3.12.0.2 (Fabric)

by BloCamLimb on Sep 2, 2025
Download

Modern UI 3.12.0.2 (Forge)

by BloCamLimb on Sep 2, 2025
Download

Modern UI 3.12.0.2 (NeoForge)

by BloCamLimb on Sep 2, 2025
Download

Modern UI 3.12.0.2

NeoForge Extension 1.21.1

  • (1.21.1 only) Disable blur effect by default when OptiFine is installed
  • (1.21.1 only) Fix coordinates in layer blitting
  • Add complete version of Still Alive, the Portal ending song
  • Add bootstrap option modernui_mc_skipGLPromotion to skip GL promotion
  • Always skip GL promotion on macOS
  • Add modified version of Inter font "Inter Frozen Medium" and its native italic font as default
  • Add in-game changelogs to Home UI
  • Add bootstrap options:
    • arc3d_context_useStagingBuffers to enable staging buffers in OpenGL, default is false, previously true
    • arc3d_context_allowGLSPIRV to use SPIR-V in OpenGL, compiled by Arc3D shader compiler, default is false
  • (Forge/NeoForge only) Initialize UI manager and UI thread earlier
  • Add a separate option "Additional Blur Effect" to blur vanilla screens, default is false
  • Fix threading issue in layer blitting, which may cause crash when resizing window
  • (1.21.1+, NeoForge only) Always do GL promotion if EARLY_WINDOW_CONTROL is disabled
  • Use private logger instead of framework logger
  • Add configs to custom "ding" sound and volume
  • Update localization to match vanilla language data
  • Add "Reset to Default" to context menu in Preferences UI, to reset a config entry to its default value
  • Add back view configs and add some new view configs
  • The entire Center UI is reworked, a great number of UI/UX improvements and bug fixes
  • Provide an abstraction of config system

Forge Extension 1.21.1

  • Equivalent to NeoForge version, except where noted

Fabric Extension 1.21.1

  • Functionally equivalent to NeoForge version, except where noted

Modern Text Engine 1.21.1

  • Add config for bitmap horizontal offset
  • (1.21.4+ only) Add support for no shadow text (i.e. shadow_color=0)
  • Emit no lines for empty strings when computing line breaks to match vanilla behavior
  • Make StandardGlyphInfo return exact advance instead of ceiling, matching vanilla TrueTypeProvider behavior. This might improve the rendering of the AE2 guidebook
  • For line wrapping of formatted text, allow emitting no lines to match vanilla behavior, fixing the issue where an empty tooltip is sometimes visible.
  • Fix crash with obfuscated style on large bitmap fonts

Core Framework

  • Fix disappearing transitions caused by removing views in batches cannot be seen
  • Tweak edge absorption in NestedScrollView
  • Delay TextBlob initialization of ShapedText until draw time
  • Add paint parameter for leading/trailing margins
  • Merge TrailingMarginSpan with LeadingMarginSpan, also fix a text layout bug
  • Optimize many text processing methods
  • Fix StyleSpan is not cumulative
  • Move LogWriter to internal
  • Migrate to SLF4J, remove Log4j dependency
  • Add filled text field style
  • Add measure cache
  • Add convenient methods for specifying styles
  • Add thread-safe methods to change themes in context
  • Change AdapterView.OnItemSelectedListener to functional interface
  • Fully configurable view configuration
  • Update scroller to calculate physical coefficients using ppi
  • Make CharacterStyle cloneable, also fix TextPaint.density
  • More methods in Color, and allow creating instances
  • Update default fragment SFX transitions
  • Allow shallow copy of Bitmap and Image as shared owners
  • Add TabLayout and styles
  • Improve widget scrolling mechanism
  • Add tag system to View
  • Add MotionEasingUtils for common bezier interpolators
  • Add RTL support and fix bugs for ViewPager
  • Improvements and fixes for ViewPager
  • Fix hotspot point not dispatched to children
  • Fix LinearLayout divider layout bug in RTL direction
  • Add option to enable SPIR-V in OpenGL backend, but disable by default
    • NVIDIA driver will compile SPIR-V back to into GLSL in OpenGL, and the disassembler takes up at least 40MB of additional RAM usage
  • Use rounding for font metrics
    • Rounding seems to produce a more accurate layout, so the ceiling is no longer used unless there are internal changes in the JDK
  • Fix view pager touch slop
  • Update color mappings for all buttons
  • Not showing long click tooltip when there's hover tooltip
  • Add icon button styles
  • Fix two bugs in font register
    • Should lookup in FontManager to use native bold/italic fonts
    • To ensure thread-safety, lock the whole register method (actually a JDK bug)
  • Improve tooltip show/hide logic when tooltip text is changed
  • Add shadow alpha configuration to ViewGroup
  • Add ComposeShader to composite two layers
  • Add copyWithLocalMatrix for gradient shaders
  • Use an accurate method to detect whether Bidi is needed
    • Matching ShapedText and MeasuredText behavior. This is 20% slower than the previous one, but is fast enough.
  • Optimize image shader constructor, add copyWithLocalMatrix
  • Add new slider styles and animation control
  • Expose clearFocusInternal method to internal code
  • Expose setOptionalIconsVisible method
  • Remove unnecessary ThreadLocal usage
  • Add View lighting and shadow casting system
  • Optimize line breaking performance
  • Add Drawable dirty bounds
  • Update dropdown style
  • Add menu item icon style and update menu item layout
  • Add new checkbox style
  • Add new text field and spinner styles
  • Add the drawable tint methods to TextView
  • Move TextStyle from Paint to TextPaint subclass
  • Add builtin icons and replace legacy code
  • Add new draw methods to Canvas API
  • Renew RippleDrawable with masks and animations
  • Add Outline class and compute Drawable outline
  • Disable edge AA for ImageDrawable by default
  • Change font_size_granularity to 0.25
  • Enable subpixel positioning for text rendering
  • Sync with latest Arc3D
  • Add indeterminate state to checkbox, a tri-state checkbox
  • Update subset logic for (Rounded)ImageDrawable and move subset to constant state
  • Change default reference density DPI to 96
  • Add on/off tooltip text for CheckableImageButton, and optimize
  • Add ArrayAdapter.getContext()
  • Allow nested radio groups to work, deprecate RelativeRadioGroup
  • Add on/off text to switch, and optimize
  • Add toggle button
  • Enhance RadioGroup, so that it can work on all checkable views
  • Add Checkable2 interface for checkable views with a callback
  • Make CompoundButton always have checkable state to sync with CheckableImageButton
  • Add checkable image button
  • Add elevated button style
  • Adjust default button size
  • Move modulateColor to ColorStateList as a public method
  • Adjust tooltip padding
  • Add InsetDrawable
  • Allow ShapeDrawable to draw rounded rectangles with per-corner radius
  • Add methods to draw rounded rectangles with different corner radii to Canvas
  • Temporarily disable popup anchor aligning to work around a bug
  • Add ClipDrawable
  • Add AnimationDrawable for frame-by-frame animations
  • Add themed resource cache
  • Add theme styles
  • Add dropdown styles
  • Add styles for popup menus
  • Add seek bar styles and other improvements
  • Add progress bar styles (determinate and indeterminate)
  • Full functionality and fixes for ProgressBar
  • Update text appearance of menu item
  • Add radio button and switch styles
  • Make EdgeEffect accept Context to retrieve theme color
  • Add TextAppearance class and methods to apply typography
  • Add many buttons styles
  • Add many system theme values, based on M3 Expressive
  • Add attributes/styleables for most UI components
  • Rework the TypedValue class
  • Add methods to retrieve attributes and styles in batch
  • Add base methods for retrieving attributes
  • Add ResourceId, StringView, ThemeKey
  • Introduce a new Resources and Theme system
  • Merge with ICU Bidi for MeasuredText
  • Add fast path for BoringLayout.drawText() for all alignments
  • Add toString() for animator classes
  • Remove assertions for kotlin compile tasks
  • Add RoundedImageDrawable (always keeping aspect ratio)
  • Remove Paint.getShader() and simplify ImageDrawable
  • Update scrollbar colors
  • Update toast and tooltip styles
  • Update popup menu styles
  • Add new slider style
  • No longer use pointing hand cursor for buttons (only for hyperlinks now)
  • Update SeekBar to respect thumbOffset and support split track
  • Add new drop-down style
  • Update drop-down transition animation
  • Change default layout for ArrayAdapter
  • Change default selector for ListView
  • Disable default transition for windows (rework needed)
  • Add text padding for Switch
  • Add custom clip bounds for View
  • Add new switch thumb drawable
  • Add Switch, deprecate SwitchButton
  • Add two cubic Bezier interpolator
  • Add button tint blend mode
  • Make ShapeDrawable always skip stroking when the color is transparent
  • Add new radio button drawable
  • Add SystemTheme
  • Make ValueAnimator work without values
  • Support line spacing addition/multiplier for text Layout
  • No longer using Caffeine for text layout caching, remove Caffeine dependency
  • Fix AnimationMatrix clear
  • Make View.getMatrix() return non-null
  • Add partial view invalidation, dirty region accumulation
  • Delete obsolete GLSL shaders
  • Add RippleDrawable (allowing analytic mask)
  • Add Bezier time interpolator
  • Add experimental support for Windows native window border (no title bar)

Markflow Extension

The old Markdown extension is completely deprecated and replaced by the new Markflow

  • Renew markdown theme & styling
  • Fix heading break style when wrapping
  • Update API notice for Markflow
  • Markflow initial version

Arc3D Graphics Engine

  • Update benchmark, shader source, and dependency version
  • ContextOptions logger defaults to null
  • Remove instance usage of Color
  • Disable runtime constant BIG_ENDIAN since LWJGL does not support big endian machines
  • Rename Pixels to PixelRef
  • Rename Path.recycle() to Path.release()
  • Remove the old usage of UniqueID
  • Rework some classes
  • Optimize TaskList and more
  • Fully decouple core and sketch package
  • TextureQueryLod support should default to false
  • Remove helper methods for drawing round rects
  • Rework PathIterable and PathIterator, add Shape interface
  • Rename SharedResourceCache to GlobalResourceCache
  • Move 2D rendering API to sketch package
  • Optimize and fix text metrics computation
  • No longer make Blender and ColorFilter ref-counted
  • Many improvements on high-quality text rendering
  • Add Rect2f.makeInfiniteInverted() for branchless bounds union
  • Update load factor for multimap
  • Delete a lot of old code
  • Add drawEllipse to Canvas
  • Add AnalyticComplexBox geometry step, for complex AA rounded rectangles
  • Trying to use Contract on read-only parameters
  • Fix constant value retrieval for vector splats
  • Add isOpaque for more shaders
  • Merge Color4fShader with ColorShader
  • Allow creating GL programs without fragment shaders (for depth-only pass)
  • Add cover bounds step to handle non-AA fill and scissor fill
  • Simplify LinkedListMultimap and make it small-footprint
  • Add experimental drawEdgeAAQuad and drawBlurredRRect to Canvas
  • ResourceCache: move budgeted and shareable to resource creation
  • Strengthen FragmentStage initialization
  • Add analytic blurred box geometry step
  • Add modes for makeWithLocalMatrix, allow pre-concat, post-concat, replacement
  • Optimize Vertices color array memcopy, move the swizzling to GPU
  • Add RRectShader and implementation
  • More methods to the RRect class
  • Leak ref count of some wrapper-like effect objects to the underlying objects
  • Allow some Shader objects to be trivially ref-counted
  • Add option to enable SPIR-V in OpenGL backend
  • Enable SPIR-V in OpenGL backend
  • Fix vertex array setup prior to OpenGL 4.3
  • Add per-edge AA quad geometry step
  • Add option to use staging buffers in OpenGL, and default to false (previously is true)
  • Rewrite shaders from GLSL to AkSL (Arc3D shading language)
  • Fix sizeof(IndexType) calculation
  • Fix blend shaders bugs
  • Make StrikeDesc immutable by default
  • Full support for subpixel positioning fonts
  • Add methods to pack subpixel info into glyph ID
  • Migrate to jspecify

Arc3D Shader Compiler

  • Rename some classes in compiler package
  • No longer use 'packed' as a variable name
    • Prior to GLSL ES 3.00, 'packed' is a reserved keyword. However, even if we use versions 3.00 and above, some drivers still consider it a keyword.
  • Add some intrinsics to SPIR-V codegen
  • Add TreeWriter to visit and modify the AST
  • Rework TreeVisitor and AST node accept
  • Use Context object everywhere instead of ShaderCompiler object
  • Now accept only String input, due to immutability and compressed strings
  • Remove short/half types in favor of min16int/min16float types
  • Full support for GLSL codegen in OpenGL/ES backend

Modern UI 3.12.0.1 (Fabric)

by BloCamLimb on Sep 2, 2025
Download

Modern UI 3.12.0.1 (Forge)

by BloCamLimb on Sep 2, 2025
Download

Modern UI 3.12.0.1

Forge Extension 1.20.1 / NeoForge Extension 1.20.1

  • (1.21.1 only) Disable blur effect by default when OptiFine is installed
  • (1.21.1 only) Fix coordinates in layer blitting
  • Add complete version of Still Alive, the Portal ending song
  • Add bootstrap option modernui_mc_skipGLPromotion to skip GL promotion
  • Always skip GL promotion on macOS
  • Add modified version of Inter font "Inter Frozen Medium" and its native italic font as default
  • Add in-game changelogs to Home UI
  • Add bootstrap options:
    • arc3d_context_useStagingBuffers to enable staging buffers in OpenGL, default is false, previously true
    • arc3d_context_allowGLSPIRV to use SPIR-V in OpenGL, compiled by Arc3D shader compiler, default is false
  • (Forge/NeoForge only) Initialize UI manager and UI thread earlier
  • Add a separate option "Additional Blur Effect" to blur vanilla screens, default is false
  • Fix threading issue in layer blitting, which may cause crash when resizing window
  • (1.21.1+, NeoForge only) Always do GL promotion if EARLY_WINDOW_CONTROL is disabled
  • Use private logger instead of framework logger
  • Add configs to custom "ding" sound and volume
  • Update localization to match vanilla language data
  • Add "Reset to Default" to context menu in Preferences UI, to reset a config entry to its default value
  • Add back view configs and add some new view configs
  • The entire Center UI is reworked, a great number of UI/UX improvements and bug fixes
  • Provide an abstraction of config system

Fabric Extension 1.20.1

  • Functionally equivalent to Forge version, except where noted

Modern Text Engine 1.20.1

  • Add config for bitmap horizontal offset
  • (1.21.4+ only) Add support for no shadow text (i.e. shadow_color=0)
  • Emit no lines for empty strings when computing line breaks to match vanilla behavior
  • Make StandardGlyphInfo return exact advance instead of ceiling, matching vanilla TrueTypeProvider behavior. This might improve the rendering of the AE2 guidebook
  • For line wrapping of formatted text, allow emitting no lines to match vanilla behavior, fixing the issue where an empty tooltip is sometimes visible.
  • Fix crash with obfuscated style on large bitmap fonts

Core Framework

  • Fix disappearing transitions caused by removing views in batches cannot be seen
  • Tweak edge absorption in NestedScrollView
  • Delay TextBlob initialization of ShapedText until draw time
  • Add paint parameter for leading/trailing margins
  • Merge TrailingMarginSpan with LeadingMarginSpan, also fix a text layout bug
  • Optimize many text processing methods
  • Fix StyleSpan is not cumulative
  • Move LogWriter to internal
  • Migrate to SLF4J, remove Log4j dependency
  • Add filled text field style
  • Add measure cache
  • Add convenient methods for specifying styles
  • Add thread-safe methods to change themes in context
  • Change AdapterView.OnItemSelectedListener to functional interface
  • Fully configurable view configuration
  • Update scroller to calculate physical coefficients using ppi
  • Make CharacterStyle cloneable, also fix TextPaint.density
  • More methods in Color, and allow creating instances
  • Update default fragment SFX transitions
  • Allow shallow copy of Bitmap and Image as shared owners
  • Add TabLayout and styles
  • Improve widget scrolling mechanism
  • Add tag system to View
  • Add MotionEasingUtils for common bezier interpolators
  • Add RTL support and fix bugs for ViewPager
  • Improvements and fixes for ViewPager
  • Fix hotspot point not dispatched to children
  • Fix LinearLayout divider layout bug in RTL direction
  • Add option to enable SPIR-V in OpenGL backend, but disable by default
    • NVIDIA driver will compile SPIR-V back to into GLSL in OpenGL, and the disassembler takes up at least 40MB of additional RAM usage
  • Use rounding for font metrics
    • Rounding seems to produce a more accurate layout, so the ceiling is no longer used unless there are internal changes in the JDK
  • Fix view pager touch slop
  • Update color mappings for all buttons
  • Not showing long click tooltip when there's hover tooltip
  • Add icon button styles
  • Fix two bugs in font register
    • Should lookup in FontManager to use native bold/italic fonts
    • To ensure thread-safety, lock the whole register method (actually a JDK bug)
  • Improve tooltip show/hide logic when tooltip text is changed
  • Add shadow alpha configuration to ViewGroup
  • Add ComposeShader to composite two layers
  • Add copyWithLocalMatrix for gradient shaders
  • Use an accurate method to detect whether Bidi is needed
    • Matching ShapedText and MeasuredText behavior. This is 20% slower than the previous one, but is fast enough.
  • Optimize image shader constructor, add copyWithLocalMatrix
  • Add new slider styles and animation control
  • Expose clearFocusInternal method to internal code
  • Expose setOptionalIconsVisible method
  • Remove unnecessary ThreadLocal usage
  • Add View lighting and shadow casting system
  • Optimize line breaking performance
  • Add Drawable dirty bounds
  • Update dropdown style
  • Add menu item icon style and update menu item layout
  • Add new checkbox style
  • Add new text field and spinner styles
  • Add the drawable tint methods to TextView
  • Move TextStyle from Paint to TextPaint subclass
  • Add builtin icons and replace legacy code
  • Add new draw methods to Canvas API
  • Renew RippleDrawable with masks and animations
  • Add Outline class and compute Drawable outline
  • Disable edge AA for ImageDrawable by default
  • Change font_size_granularity to 0.25
  • Enable subpixel positioning for text rendering
  • Sync with latest Arc3D
  • Add indeterminate state to checkbox, a tri-state checkbox
  • Update subset logic for (Rounded)ImageDrawable and move subset to constant state
  • Change default reference density DPI to 96
  • Add on/off tooltip text for CheckableImageButton, and optimize
  • Add ArrayAdapter.getContext()
  • Allow nested radio groups to work, deprecate RelativeRadioGroup
  • Add on/off text to switch, and optimize
  • Add toggle button
  • Enhance RadioGroup, so that it can work on all checkable views
  • Add Checkable2 interface for checkable views with a callback
  • Make CompoundButton always have checkable state to sync with CheckableImageButton
  • Add checkable image button
  • Add elevated button style
  • Adjust default button size
  • Move modulateColor to ColorStateList as a public method
  • Adjust tooltip padding
  • Add InsetDrawable
  • Allow ShapeDrawable to draw rounded rectangles with per-corner radius
  • Add methods to draw rounded rectangles with different corner radii to Canvas
  • Temporarily disable popup anchor aligning to work around a bug
  • Add ClipDrawable
  • Add AnimationDrawable for frame-by-frame animations
  • Add themed resource cache
  • Add theme styles
  • Add dropdown styles
  • Add styles for popup menus
  • Add seek bar styles and other improvements
  • Add progress bar styles (determinate and indeterminate)
  • Full functionality and fixes for ProgressBar
  • Update text appearance of menu item
  • Add radio button and switch styles
  • Make EdgeEffect accept Context to retrieve theme color
  • Add TextAppearance class and methods to apply typography
  • Add many buttons styles
  • Add many system theme values, based on M3 Expressive
  • Add attributes/styleables for most UI components
  • Rework the TypedValue class
  • Add methods to retrieve attributes and styles in batch
  • Add base methods for retrieving attributes
  • Add ResourceId, StringView, ThemeKey
  • Introduce a new Resources and Theme system
  • Merge with ICU Bidi for MeasuredText
  • Add fast path for BoringLayout.drawText() for all alignments
  • Add toString() for animator classes
  • Remove assertions for kotlin compile tasks
  • Add RoundedImageDrawable (always keeping aspect ratio)
  • Remove Paint.getShader() and simplify ImageDrawable
  • Update scrollbar colors
  • Update toast and tooltip styles
  • Update popup menu styles
  • Add new slider style
  • No longer use pointing hand cursor for buttons (only for hyperlinks now)
  • Update SeekBar to respect thumbOffset and support split track
  • Add new drop-down style
  • Update drop-down transition animation
  • Change default layout for ArrayAdapter
  • Change default selector for ListView
  • Disable default transition for windows (rework needed)
  • Add text padding for Switch
  • Add custom clip bounds for View
  • Add new switch thumb drawable
  • Add Switch, deprecate SwitchButton
  • Add two cubic Bezier interpolator
  • Add button tint blend mode
  • Make ShapeDrawable always skip stroking when the color is transparent
  • Add new radio button drawable
  • Add SystemTheme
  • Make ValueAnimator work without values
  • Support line spacing addition/multiplier for text Layout
  • No longer using Caffeine for text layout caching, remove Caffeine dependency
  • Fix AnimationMatrix clear
  • Make View.getMatrix() return non-null
  • Add partial view invalidation, dirty region accumulation
  • Delete obsolete GLSL shaders
  • Add RippleDrawable (allowing analytic mask)
  • Add Bezier time interpolator
  • Add experimental support for Windows native window border (no title bar)

Markflow Extension

The old Markdown extension is completely deprecated and replaced by the new Markflow

  • Renew markdown theme & styling
  • Fix heading break style when wrapping
  • Update API notice for Markflow
  • Markflow initial version

Arc3D Graphics Engine

  • Update benchmark, shader source, and dependency version
  • ContextOptions logger defaults to null
  • Remove instance usage of Color
  • Disable runtime constant BIG_ENDIAN since LWJGL does not support big endian machines
  • Rename Pixels to PixelRef
  • Rename Path.recycle() to Path.release()
  • Remove the old usage of UniqueID
  • Rework some classes
  • Optimize TaskList and more
  • Fully decouple core and sketch package
  • TextureQueryLod support should default to false
  • Remove helper methods for drawing round rects
  • Rework PathIterable and PathIterator, add Shape interface
  • Rename SharedResourceCache to GlobalResourceCache
  • Move 2D rendering API to sketch package
  • Optimize and fix text metrics computation
  • No longer make Blender and ColorFilter ref-counted
  • Many improvements on high-quality text rendering
  • Add Rect2f.makeInfiniteInverted() for branchless bounds union
  • Update load factor for multimap
  • Delete a lot of old code
  • Add drawEllipse to Canvas
  • Add AnalyticComplexBox geometry step, for complex AA rounded rectangles
  • Trying to use Contract on read-only parameters
  • Fix constant value retrieval for vector splats
  • Add isOpaque for more shaders
  • Merge Color4fShader with ColorShader
  • Allow creating GL programs without fragment shaders (for depth-only pass)
  • Add cover bounds step to handle non-AA fill and scissor fill
  • Simplify LinkedListMultimap and make it small-footprint
  • Add experimental drawEdgeAAQuad and drawBlurredRRect to Canvas
  • ResourceCache: move budgeted and shareable to resource creation
  • Strengthen FragmentStage initialization
  • Add analytic blurred box geometry step
  • Add modes for makeWithLocalMatrix, allow pre-concat, post-concat, replacement
  • Optimize Vertices color array memcopy, move the swizzling to GPU
  • Add RRectShader and implementation
  • More methods to the RRect class
  • Leak ref count of some wrapper-like effect objects to the underlying objects
  • Allow some Shader objects to be trivially ref-counted
  • Add option to enable SPIR-V in OpenGL backend
  • Enable SPIR-V in OpenGL backend
  • Fix vertex array setup prior to OpenGL 4.3
  • Add per-edge AA quad geometry step
  • Add option to use staging buffers in OpenGL, and default to false (previously is true)
  • Rewrite shaders from GLSL to AkSL (Arc3D shading language)
  • Fix sizeof(IndexType) calculation
  • Fix blend shaders bugs
  • Make StrikeDesc immutable by default
  • Full support for subpixel positioning fonts
  • Add methods to pack subpixel info into glyph ID
  • Migrate to jspecify

Arc3D Shader Compiler

  • Rename some classes in compiler package
  • No longer use 'packed' as a variable name
    • Prior to GLSL ES 3.00, 'packed' is a reserved keyword. However, even if we use versions 3.00 and above, some drivers still consider it a keyword.
  • Add some intrinsics to SPIR-V codegen
  • Add TreeWriter to visit and modify the AST
  • Rework TreeVisitor and AST node accept
  • Use Context object everywhere instead of ShaderCompiler object
  • Now accept only String input, due to immutability and compressed strings
  • Remove short/half types in favor of min16int/min16float types
  • Full support for GLSL codegen in OpenGL/ES backend

Modern UI 3.11.1.11 (Fabric)

by BloCamLimb on Feb 16, 2025
Download

Modern UI 3.11.1.11 (Forge)

by BloCamLimb on Feb 16, 2025
Download

Modern UI 3.11.1.11 (NeoForge)

by BloCamLimb on Feb 16, 2025
Download

Modern UI 3.11.1.11

This is a Minecraft-only update, the Modern UI core does not change.
Modern UI is likely to be renamed to ModernUI in the next version.

NeoForge Extension 1.21.4

  • Update to 1.21.4
  • Suppress indirect crashes due to broken mod state
  • Ignore translation-z for exact tooltip positioning
  • Fix multiple tooltip colors not working

Forge Extension 1.21.4

  • Equivalent to NeoForge version

Fabric Extension 1.21.4

  • Improve modern tooltip compatibility on Fabric
  • Add config for tooltip line wrapping on Fabric
  • Others are functionally equivalent to Forge version

Modern Text Engine 1.21.4

  • Fix text effect of color emoji is always white
  • Exclude CozyUI fonts by default
  • Remove duplicates when dumping bitmap fonts
  • Use isLenient for parsing font definition files
  • Fix large bitmap fonts being ignored

Modern UI 3.11.1.10 (Fabric)

by BloCamLimb on Feb 16, 2025
Download

Modern UI 3.11.1.10 (Forge)

by BloCamLimb on Feb 16, 2025
Download

Modern UI 3.11.1.10 (NeoForge)

by BloCamLimb on Feb 16, 2025
Download

Modern UI 3.11.1.10

This is a Minecraft-only update, the Modern UI core does not change.
Modern UI is likely to be renamed to ModernUI in the next version.

NeoForge Extension 1.21.3

  • Suppress indirect crashes due to broken mod state
  • Ignore translation-z for exact tooltip positioning
  • Fix multiple tooltip colors not working

Forge Extension 1.21.3

  • Equivalent to NeoForge version

Fabric Extension 1.21.3

  • Improve modern tooltip compatibility on Fabric
  • Add config for tooltip line wrapping on Fabric
  • Others are functionally equivalent to Forge version

Modern Text Engine 1.21.3

  • Fix text effect of color emoji is always white
  • Exclude CozyUI fonts by default
  • Remove duplicates when dumping bitmap fonts
  • Use isLenient for parsing font definition files
  • Fix large bitmap fonts being ignored

Modern UI 3.11.1.9 (Fabric)

by BloCamLimb on Feb 16, 2025
Download

Modern UI 3.11.1.9 (Forge)

by BloCamLimb on Feb 16, 2025
Download

Modern UI 3.11.1.9 (NeoForge)

by BloCamLimb on Feb 16, 2025
Download

Modern UI 3.11.1.9

This is a Minecraft-only update, the Modern UI core does not change.
Modern UI is likely to be renamed to ModernUI in the next version.

NeoForge Extension 1.21.1

  • Suppress indirect crashes due to broken mod state
  • Ignore translation-z for exact tooltip positioning
  • Fix multiple tooltip colors not working

Forge Extension 1.21.1

  • Equivalent to NeoForge version

Fabric Extension 1.21.1

  • Improve modern tooltip compatibility on Fabric
  • Add config for tooltip line wrapping on Fabric
  • Others are functionally equivalent to Forge version

Modern Text Engine 1.21.1

  • Fix text effect of color emoji is always white
  • Exclude CozyUI fonts by default
  • Remove duplicates when dumping bitmap fonts
  • Use isLenient for parsing font definition files
  • Fix large bitmap fonts being ignored

Modern UI 3.11.1.8 (Fabric)

by BloCamLimb on Feb 16, 2025
Download

Modern UI 3.11.1.8 (Forge)

by BloCamLimb on Feb 16, 2025
Download

Modern UI 3.11.1.8 (NeoForge)

by BloCamLimb on Feb 16, 2025
Download

Modern UI 3.11.1.8

This is a Minecraft-only update, the Modern UI core does not change.
Modern UI is likely to be renamed to ModernUI in the next version.

NeoForge Extension 1.20.6

  • Suppress indirect crashes due to broken mod state
  • Ignore translation-z for exact tooltip positioning
  • Fix multiple tooltip colors not working

Forge Extension 1.20.6

  • Equivalent to NeoForge version

Fabric Extension 1.20.6

  • Improve modern tooltip compatibility on Fabric
  • Add config for tooltip line wrapping on Fabric
  • Others are functionally equivalent to Forge version

Modern Text Engine 1.20.6

  • Fix text effect of color emoji is always white
  • Exclude CozyUI fonts by default
  • Remove duplicates when dumping bitmap fonts
  • Use isLenient for parsing font definition files
  • Fix large bitmap fonts being ignored
1
2
5

90% of ad revenue goes to creators

Support creators and Modrinth ad-free with Modrinth+
Filter

Show all versions

Modrinth is open source.

main@aaf125c

© Rinth, Inc.

Company

TermsPrivacyRulesCareers

Resources

SupportBlogDocsStatus

Interact

Discord X (Twitter) Mastodon Crowdin
Get Modrinth App Settings
NOT AN OFFICIAL MINECRAFT SERVICE. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.