Назад до магазину
Modern UI
Modrinth Mod

Modern UI

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

Інформація про Minecraft-продукт

Важливе про товар

Сумісність, версії Minecraft, завантажувачі та дані зовнішнього джерела.

Тип

Mod

Доступ

Безкоштовно

Остання версія

3.13.0.5

Завантаження

20 967 880

Завантажувачі / Платформи

fabric forge neoforge quilt

Minecraft версії

1.18.1 – 1.18.2 1.19.2 1.19.4 – 1.20.2 1.20.4 1.20.6 – 1.21.4 1.21.6 – 1.21.8 26.1 26.1.1 26.1.2

Категорії

library optimization utility

Опис

Докладна інформація

![logo](https://i.loli.net/2020/04/10/96j8AVkFaXTLrbE.png) # Modern UI by Icyllis Milica   ### Description: Modern UI (by Icyllis Milica) is a desktop application framework designed for standalone 2D and 3D rendering software development. It makes use of modern 3D graphical APIs and technologies to provide real-time rendering with high performance. For good measure, Modern UI improves and optimizes a set of features used by Google Android and its own set of internationalization supporting text engine. Modern UI for Minecraft, is a Minecraft Mod that is based on Modern UI Core Framework and Modern UI Core Extensions. It provides Modern UI bootstrap program in Minecraft environment and Modding API based on Forge/Fabric, to make powerful Graphical User Interface in Minecraft. For client, press Ctrl+K or ⌘+K (by default) to open Action Center screen to configure Modern UI. (Note that you can swipe the Preferences screen to configure fonts) This Mod also includes a powerful text layout engine and text rendering system designed for Minecraft. This engine provides appropriate methods for processing Unicode text and gives you more readable text in any scale, in 2D/3D. In details: * Real-time preview and reload TrueType/OpenType fonts * A better font fallback implementation * Anti-aliasing text and FreeType font hinting * Use improved SDF text rendering in 2D/3D (also use batch rendering) * Compute exact font size in device space for native glyph rendering * Use Google Noto Color Emoji and support all the Unicode 15.1 Emoji (September 12, 2023) * Configurable bidirectional text heuristic algorithm * Configurable text shadow and raw font size * Unicode line breaking and CSS line-break & word-break * Fast, exact and asynchronous Unicode text layout computation * Faster and more memory efficient rectangle packing algorithm for glyphs * Use real grayscale texture (1 byte-per-pixel, whereas Minecraft is 4 bpp) * Compatible with OptiFine, Sodium (Rubidium), Iris (Oculus) and many mods * Compatible with Minecraft's JSON font definition (bitmap fonts, TTF fonts) Additionally, this Mod provides many utilities which improve game performance and gaming experience. Currently, we have: * Changing screen background color * Gaussian blur to screen backdrop image * Fade-in animation to screen background * More window modes: Fullscreen (borderless), Maximized (borderless) * Framerate limit and master volume fading on window inactive (out of focus) and minimized * Pausing single-player game when Inventory is open * Changing GUI scale option to Slider and providing hint text * Playing a "Ding" sound when Minecraft loads and reaches the Main Menu * Enabling smooth scrolling in Vanilla's Selection List and Forge's Scroll Panel * Pressing "C" to Zoom that is the same as OptiFine * Undo/Redo (Ctrl+Z/Ctrl+Y) and Unicode grapheme/word iterator for all text fields * Playing local music, allowing to seek and view spectrum * Support Discord/Slack/GitHub/IamCal/JoyPixels emoji shortcodes in Chatting * A fancy tooltip style + Choose rounded border or normal border (with shadow effect) + Add title break and control title line spacing + Auto line wrapping and auto vertical scrolling when out of screen + Center the title line, support RTL layout direction + Exactly position the tooltip to pixel grid (smooth movement) + Change background color and border color (with gradient and animation)   ### Core Features: * 2D Graphics Library of Multiple Graphics APIs * Intermediate Representation and ASTs of Shading Languages * Symbolic distance function and vector graphics rendering * Image post-processing effects * Fast matrix and vector calculation * Image format conversion * Animation and transition framework * Event loop and multi-threading framework * Text shaping and complex text layout engine * MVVM and lifecycle handling * Automatic RTL (right-to-left) UI layout * Markdown (CommonMark) rendering support   ### Modern Text Engine for Minecraft: * Support color Emoji, use Google Noto Color Emoji 15.1, based on Unicode 15.1 Emoji list; * Support Emoji shortcodes in chat, for example :rofl: to rolling on the floor laughing, support Discord and Slack shortcodes; * You can use TTF or OTF fonts, configure the font base size, set the baseline shift, and set whether to drop text shadow; * Scalable vector graphics, automatic switching resolution level (up to 96px), native (non-synthetic) Bold and Italic rendering; * Supports distance field text rendering in 3D world, but sharpens font atlas in 2D GUI; This enhances a former feature:   *Render all characters smoothly on any scale (like when you're away from a sign, or a very small text in GUI) * Support multilayer text, layout multiple paragraphs together, streaming layout algorithm, and introduce fast layout cache; * Support fast digit replacement, high-precision layout and alignment, and smoothly draw fast changing digits (fixed width); * Support mip-mapping, anti-aliasing, linear sampling and supersampling anti-aliasing (SSAA); * Better and more efficient layout of BiDi text paragraphs (e.g. Arabic, Yiddish); Use sharpen font atlases; * Configurable BiDi text heuristic algorithm to control text direction more accurately; Support to fix invalid surrogate pairs; * Use HarfBuzz text shaping, support combining characters rendering, like Thai, Devanagari, Bengali and Tamil; * Support grapheme cluster break, support Unicode line breaking algorithm; * Support context-aware and locale-based word break and line break; * Support pixelated font rendering, support fixed resolution level, support pixel alignment; * Support bitmap replacement, rendering smoothly for fast changing numbers, support emoji rendering; * Optimize the layout algorithm, increase your FPS by about 10% when drawing texts in GUI * Use grayscale pixels to store texture, reduce GPU memory usage * Reduce unnecessary RAM usage and greatly reduce object creation ### Customize Fonts Press Ctrl+K or ⌘+K (by default) to open Action Center, go to Preferences, swipe the screen to the second page, and you will see Font settings. * Preferred font family is your most wanted one. It can be either an OS font or a TrueType/OpenType font (collection) file. * Fallback font families are used when the preferred font family is unavailable. Modern Text Engine: Modern UI follows Minecraft's JSON font definition, only glyph provider type 'legacy_unicode' and 'unihex' are ignored. Modern UI font families mentioned above will serve as fallback font families for Minecraft fonts. Default Font Behavior (in Preferences > Text Layout) gives you an option to remove some glyph providers from the Minecraft default font (minecraft:default). To avoid using vanilla ASCII fonts, just set it to Keep Other. Note this option is only valid if you have not turned on Force Unicode Font. If you want to use vanilla Unicode font, just download the OTF version of [GNU Unifont](https://unifoundry.com/unifont/). ### Additional Features for Minecraft: * Support setting window mode, such as fullscreen borderless, windowed borderless; * GUI screen background fade-in animation and 2-pass gaussian convolution blur effect, configurable background gradient color; * Smooth rounded tooltip style, support RTL layout, configurable background and border color; * Play a "ding" sound effect when the game is loaded; * Support pausing the game when your inventory is opened; * New GUI scale algorithm and slider GUI scale widget (not limited to even numbers, compatible with OptiFine); * Add smooth scrolling for vanilla and forge scrolling panels; * Async network handler; Server auto-shutdown; * All features are configurable in configs or Action Center screen (default shortkey Ctrl+K) ### Modern UI for Fabric removed some features (compared to the Forge version): * OptiFine-like zoom, hide crosshairs in GUI * Dump more debugging information, crash report extension   ### Comparison with Caxton text rendering techniques [Caxton](https://modrinth.com/mod/caxton) mod is known for its MSDF text rendering, you can choose between Caxton and Modern Text Engine. Similarities: * Both use HarfBuzz text shaping * Both support Unicode text processing * Both support Unicode line breaking and grapheme cluster break * Both compatible with Iris in raster rendering mode * Both have an efficient rectangle packing algorithm, further better than Mojang's Differences: * Caxton uses a newer HarfBuzz whereas we use a older one (bundled with JDK 17, it's updated in JDK 21) * Caxton uses multi-channel SDF and renders sharper scaling-up texts, whereas we render over-rounded * We are compatible with OptiFine, whereas Caxton isn't * We support color emoji, whereas Caxton doesn't * We support FreeType font hinting whereas Caxton never support it, font hinting helps on low-res monitor * We support perfect sampling of native glyph image in screen-space, this is ideal for 2D rendering * We support single-channel SDF text rendering without additional GPU resources, we always use 1bpp textures * We have smart SDF sampling method for scaling-down texts, whereas Caxton hasn't * No need to wait for MSDF texture generation, you can switch fonts in-game with just one click * We support various text direction heuristics and line break strategies * We don't use additional native libraries, so Modern UI works on macOS * We have a slightly higher layout performance than Caxton, and use less RAM ### Mod Integration & Compatibility: #### Compatible (you should pay attention to): OptiFine, Sodium, Iris, Create, AoA3 If Shaders are active, *Use Modern Text Shaders in 3D* is auto disabled, it will cause the outline of glowing text to become invisible. #### Mods with similar functions are replaced: * Blur (ver 1.15 ~ 1.21.8; reason: full functional coverage, better optimization) + Blur mod claims to use Gaussian blur, but I found it actually uses 2-pass box blur. Whereas Modern UI gives you the true 1-pass Gaussian Blur, which is better than Blur mod. * Controlling (ver 1.15; reason: another way of implementation) * TipTheScales (ver 1.15 ~ 1.21.8; reason: another way of implementation) * Inventory Pause (ver 1.18 ~ 1.21.1; reason: another way of implementation) * Emojiful (ver 1.18 ~ 1.21.1; reason: we support color emoji rendering since 3.5.0; additionally, Emojiful has really bad code and breaks your game everywhere; you may experience game freezing, high VRAM usage, rendering glitches, and many performance & mod compatibility issues) * Borderless Window (ver 1.18 ~ 1.21.4; reason: another way of implementation) * Ding (ver 1.18 ~ 1.21.4; reason: another way of implementation) * SmoothScrollingEverywhere (ver 1.18 ~ 1.19; reason: another way of implementation) * FPS Reducer (ver 1.18 ~ 1.21.8; reason: another way of implementation) #### Conflict and Solution: * Emojiful (ver 1.16 ~ 1.21.1; it's not recommended to use Emojiful; if you must use it, disable Modern UI text engine, via config screen or bootstrap properties) * Legendary Tooltips (ver 1.16 ~ 1.21.4; solution: disable Modern UI tooltip, via config screen) * FeyTweaks (ver 1.18 ~ 1.21.1; solution: disable TextRendererMixin in FeyTweaks' mixin config) * SmoothScrollingEverywhere (ver 1.18 ~ 1.19; solution: disable Modern UI smooth scrolling, via config screen) * Caxton (ver 1.18 ~ 1.21.8; solution: disable Modern UI text engine, via config screen or bootstrap properties) * ImmediatelyFast (ver 1.18 ~ 1.21.8; solution: for 1.18 ~ 1.21.4: disable ImmediatelyFast's hud_batching, font_atlas_resizing and fast_text_lookup; otherwise, you may experience random game crashes; for 1.21.6 ~ 1.21.8: disable ImmediatelyFast's avoid_redundant_framebuffer_switching) * Untranslated Items (ver 1.18 ~ 1.21.4; solution: disable Modern UI text component cache, via config screen) #### Supported MC versions: * Actively maintained: 1.21.8, 1.21.7, 1.21.6, 1.21.1, 1.21, 1.20.1, 1.20 * About to be dropped: 1.21.4 * No longer supported: 1.21.3, 1.21.2, 1.20.6, 1.20.4, 1.20.2, 1.19.4, 1.19.2, 1.18.2, 1.18.1, 1.18, 1.17.1, 1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.15.2, 1.14.4 All descriptions on this page are for Minecraft 1.20.1 and above. Some features may be missing in older versions. #### PC Requirements (same as Minecraft Vanilla) Some people are unwilling to use Modern UI because they believe that Modern UI has a high PC requirements. In fact, as long as you can play Minecraft Vanilla, you can definitely play Modern UI. Unless you forget to update your GPU driver. * OS: Windows 8.1+, Linux with X11 or Wayland, macOS * Architecture: x64 or arm64 * GPU: GeForce 210 or better * GPU Driver: OpenGL 3.3+ or Vulkan 1.1+, higher is better * Java: Java 17+, higher is better ### FAQ: ##### Q: What is the difference between Default Font Behavior and Force Unicode Font? A: Firstly, Modern UI always redirects Unicode font to Modern UI default typeface. Default Font Behavior is KEEP ALL in 1.19+, then Minecraft default font is used for ASCII characters. KEEP OTHER means that Minecraft default font is no longer used, but additional fonts, for example, in some minigame maps, are still available. This is the difference from Force Unicode Font (IGNORE ALL). ##### Q: Does Modern UI have a high overhead? Will Modern UI lower application performance? A: No, Modern UI does not have a significant impact on CPU, GPU, RAM, and VRAM usage. This is because Modern UI itself has good optimization, but at the same time, Modern UI provides a bunch of new features and effects. Modern UI framework is known to be more efficient than Chromium-based applications. For low-end PCs, screen blur effect may be a performance killer, because Minecraft Vanilla does not allow mipmap generation on render targets. Even so, the blur effect provided by Modern UI is much faster than a mod called 'Blur'. ##### Q: How to disable all changes to vanilla, I don't want these features. A: Only GUI scale algorithm and some low-level code are non-configurable, any other features can be disabled in Action Center screen (shortkey Ctrl+K by default), or config files (gameDir/config/ModernUI/), because Modern UI is essentially a framework. ##### Q: Is this mod a client-only mod? Do I need to install it on the server? A: Since MC 1.19.2, there is no reason to install this mod on the server anymore. All server features are deprecated and implemented to Forge API and Fabric API. ##### Q: How to get start to develop my mod based on Modern UI? A: This project is still in early stages, the specification is still being written. You can view the [JavaDoc](https://blocamlimb.github.io/ModernUI/javadoc/). Examples include Modern UI itself (Action Center) and Flux Networks. If you have any questions, feel free to join our Discord server. #### Issues: All issue reports should go to GitHub issue tracker. #### Join my Discord Server for discussion and suggestions.

Розробник

BloCamLimb

Профіль і дані отримано з Modrinth

Відкрити на Modrinth

Галерея продукту

Зображення проєкту

Скриншоти та зображення з оригінальної сторінки Modrinth.

Glow Signs

Faster than Vanilla

Config Screen in RTL

Support right-to-left layout direction

Config Screen

Correct Unicode Support

Correct Unicode support, lower CPU overhead and lower GPU memory usage

Enhanced Tooltip 2

Dynamic colors, shadow, custom corner radius & border width

Config Screen (Outdated)

Native Markdown Rendering

Layer Compositing

Two off-screen layers are automatically used for alpha transformation

Components

Config Screen

Enhanced Tooltip

Fancy style & RTL support

Audio Visualizer

View audio spectrum

SDF Text Compatibility

Shows compatibility with Shaders, AoA3 and Create mod, and SDF text rendering for title

Glowing Text Outline

Use our SDF text rendering

Config Screen in RTL (Outdated)

Support right-to-left layout direction

Render Pipeline

Chat with Emojis

Список змін

Версії проєкту

Опубліковані версії та оригінальні файли Modrinth.

3.13.0.5 Актуальна Release 14.06.2026

Modern UI 3.13.0.5 (Fabric)

Підтримувані версії Minecraft
26.1 26.1.1 26.1.2
Завантажувачі / Платформи
fabric
Показати зміни
### Modern UI 3.13.0.5 Changes from * 3.13.0.4 → 3.13.0.5 for Minecraft 26.1-26.1.2 #### NeoForge Extension 26.1.2 * Fix compatibility with Beryl * Fix UI thread loading issue #### Forge Extension 26.1.2 * Fix UI thread loading issue, but no Vulkan support #### Fabric Extension 26.1.2 * Same as NeoForge version
3.13.0.5 Release 14.06.2026

Modern UI 3.13.0.5 (Forge)

Підтримувані версії Minecraft
26.1 26.1.1 26.1.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.13.0.5 Changes from * 3.13.0.4 → 3.13.0.5 for Minecraft 26.1-26.1.2 #### NeoForge Extension 26.1.2 * Fix compatibility with Beryl * Fix UI thread loading issue #### Forge Extension 26.1.2 * Fix UI thread loading issue, but no Vulkan support #### Fabric Extension 26.1.2 * Same as NeoForge version
3.13.0.5 Release 14.06.2026

Modern UI 3.13.0.5 (NeoForge)

Підтримувані версії Minecraft
26.1 26.1.1 26.1.2
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.13.0.5 Changes from * 3.13.0.4 → 3.13.0.5 for Minecraft 26.1-26.1.2 #### NeoForge Extension 26.1.2 * Fix compatibility with Beryl * Fix UI thread loading issue #### Forge Extension 26.1.2 * Fix UI thread loading issue, but no Vulkan support #### Fabric Extension 26.1.2 * Same as NeoForge version
3.13.0.4 Release 06.06.2026

Modern UI 3.13.0.4 (Fabric)

Підтримувані версії Minecraft
26.1 26.1.1 26.1.2
Завантажувачі / Платформи
fabric
Показати зміни
### Modern UI 3.13.0.4 (3.13.0.3, 3.13.0.1) Changes from * 3.13.0.4 → 3.13.0.4 for Minecraft 26.1-26.1.2 * 3.12.0.4 → 3.13.0.3 for Minecraft 1.21.6-1.21.8 * 3.12.0.2 → 3.13.0.1 for Minecraft 1.21-1.21.1 #### NeoForge Extension 26.1.2 (1.21.8, 1.21.1) * (26.1+ only) Add Vulkan rendering backend, ModernUI Vulkan will be used when VulkanMod is used * (26.1+ only) Add "Global Volume Control" option for master volume multiplier * (1.21.1 only) Fix modern tooltip crash with ImmediatelyFast's hud_batching in HUD * (1.21.1, Forge and NeoForge only) Fix crash in datagen * (1.21.6+ only) Change surface origin to upper left to match Arc3D * Remove modifier restriction on arrow key movement on tooltip * Add API to register/create additional resources to the ModernUI resource system at runtime * Fix multiple mixin disable flags not work together * Add open SimpleScreen and MenuScreen classes to custom ModernUI screens * Add ImageStore to retrieve Images from Minecraft resources, fix possible threading issues * Add global "Theme" option for all ModernUI screens * Add "Linear Metrics" font option for the core framework * Add "Reset to Default" option to the context menu for all preferences * Miscellaneous UI improvements #### Forge Extension 26.1.2 (1.21.8, 1.21.1) * Equivalent to NeoForge version, except where noted #### Fabric Extension 26.1.2 (1.21.8, 1.21.1) * Functionally equivalent to NeoForge version, except where noted #### Modern Text Engine 26.1.2 (1.21.8, 1.21.1) * (26.1+ only) Add Vulkan rendering backend * (26.1+ only) Add support for player head and atlas sprite in text * (26.1+ only) Remove smart SDF shaders, remove mipmapping for outline fonts * (1.21.6+ only) Improve compatibility of modern prepared text * (1.21.1 only) Fix certain EditBox elements from the Create mod erroneously rendered with text shadows * (1.21.1 only) Add support for Font overriding in EditBox * (1.21.1 only) Fix EditBox hint text not shown * Fix line end spaces not stripped when breaking lines, also fix modern tooltip positioning * Fix color emoji with obfuscated style not render #### Core Framework ##### View * Add real CONTROL modifier, and update keybinds for macOS * Fix Toast.cancel() * Add method to set camera distance explicitly * Add methods to change ambient/spot shadow color * Allow shadow casting in reveal animations * Fix several dirty area accumulation issues that can cause ghosting ##### Graphics * Ensure running on LWJGL 3.4.2 and binary-compatible with LWJGL 3.3.1 * Update Vulkan initialization * Add Bitmap.subImage() to create sub-image view * Add methods to describe alpha type of Bitmap and Image exactly * Remove unsupported bitmap formats, deprecate RGBX_8888 (use new setOpaque() instead) * Add validation to Bitmap.wrap(), and handle 0 rowBytes/stride * ShapeDrawable's outline no longer relies on stroke opacity * Migrate everything to wide gamut, extended range colors * Refactor Drawable's alpha to float type, add wide color setters * Add dithering to ripple effects * Remove the RGB space and range restriction on Bitmap.setColorSpace(), this means you can use extended range colors (like extended Display P3) and CIE XYZ colors * Allow Image.createTextureFromBitmap to be called from non-UI threads * Fix race between Bitmap.close() and Bitmap.clone() * Refactor image (GPU) cache; fix thread-safety of Image.clone(); texture-backed image is no longer budgeted * Add new color packing format, which encodes extended range colors in 16-bit floating-point, in extended color space, using relative colorimetric rendering intent * Refactor several int color getters to long colors * Deprecate BMP and TGA support, will be removed in future * Optimize saving bitmap to path * Final refactor for ColorSpace-related classes * Add more Vulkan caps, and add caps dump * Add option to indicate that zero-to-one depth is used in OpenGL * Improve error logging * Simplify builtin color space access, fix some bugs * Refactor ColorTransform and color space methods * Introduce separate ChromaticAdaptation class * Change ColorSpace.Model to int constants * Update renderer test, Vulkan renderer * Complete the entire Vulkan rendering backend * ColorShader now takes original ColorSpace to handle absolute colorimetric intent * Make computeByteSize() return 0 for invalid row bytes * Add XYZ D65 space * Add Oklab support * Improve color space transformation + Optimize XYZ<->RGB conversion + Always uses abs response to handle extended range + Simplify RGB<->RGB transform computation (skip PCS) + Fix absolute rendering intent behavior * Remove references to Unsafe, now Arc3D no longer needs Unsafe * A8 and BW conversions no longer directly use Unsafe * Pixmap clear no longer uses Unsafe * Update usage of image offset=0 * No longer use Unsafe for copyImage() * Update pixel op and mem tests * Update low-precision load/store ops + No longer use LUT for 565 expansion, use only integer arithmetic, add 10-bit store ops * Change dither method from bayer matrix to R2 sequence * Replace Unsafe load ops * Replace Unsafe store ops with separate u and hb versions + Note that addr for heap is interpreted as byte offset to the first element, without array base offset anymore * Add validation for pixel memory address * Add unclamped/extended ColorSpace transformations * Avoid unnecessary object create for non-strict subset ImageShader * Relax range check in MathUtil, many checks are too strict, relax to handle unsigned integers * Add analytic 2D signed distance field generator * Fix unaligned memory access in building vertices * Add channel-based IIO stream impl * Add background compilation executor option * Workaround macOS OpenGL driver bug on depth-only draw pass * Add method to wrap backend image for interop * Use persistent mapping for Vulkan, similar to OpenGL, non-readback and host-visible * Ensure RenderPassSet is deduplicated and kept alive * Limit max engine max vertex bindings to 8 * Add option to limit max in-flight command buffers * Update surface create parameters * Add support for hairline text * Switch to Marlin Stroker and deprecate old PathStroker * Introduce immutable path data, and refactor Path class * Add Record canvas and BigRecord * Fix byte offset in Bitmap batch pixel copy operations * Add command buffer destructor * Delete many legacy usages of format * Add Vulkan graphics pipeline * Fix optimal pixel transfer buffer alignment * Rework the whole OpenGL texture format table (make it Vulkan-like) * Add more command buffer parameters * Add Vulkan queue management * Finish Vulkan descriptor set management * Implement Vulkan memory barrier management * Add RenderPassDesc to pipeline builder * Migrate to descriptor set layout for pipeline desc * Add immutable samplers to vkSetLayout * Sampler are now global objects * Add Vulkan buffer * Fix OpenGL readback buffer should not host-coherent or persistently mapped * Distinguish between BufferBindInfo and BufferSliceInfo * Add Vulkan sampler * Add Vulkan command buffer * Add Vulkan render pass management * Add Vulkan image view management * Add Vulkan framebuffers and framebuffer cache * Introduce consistent way to describe render pass and framebuffer + Clarify the usage of placeholder attachments and apply them in GL backend. + Fix some bugs in VulkanRenderPass creation. * Add full Vulkan render pass creation * Add definition for Vulkan compatible render passes * Move actual pipeline destruction to executing thread to ensure thread safety * Purge framebuffers only when needed instead of every frame * Refactor FramebufferDesc and RenderPassDesc * Add engine-level image formats * Add methods for wide gamut and extended range colors * Fix all the alignment issues for pixel operations * Support some new bitmap formats: GRAY_16, GRAY_ALPHA_1616, RGB_161616 * Add method to create Vulkan descriptor pool * Fix unaligned access in vectorized setPixel/Bitmap.clear() * Add Vulkan descriptor set pool * Add descriptor set layout * Fix ARGB mask swizzle, and reserve SDF mask type * Implement occlusion culling for the entire Granite Renderer * Separate paint and style, and use clip stack to handle fullscreen clear * Cleanup paint key and pipeline construction * Improve paint color handling and fix + If step solid color is used, the color of KeyContext will no longer be calculated since it's not used. + If shader is constant color, reduce to solid color. + Fix the case where step solid color is not used and the paint is solid color, then it should be in destination space. * Use a single paint block across multiple draws, by grouping pipeline analysis, pipeline building, and pipeline data gathering together * Separate image view and image proxy classes * Fix root of a cubic equation * Fix fragment textures should come before geometry textures * The sorting algorithm was changed from TimSort to BM Quicksort * Improve pipeline descriptor and fixes * LowerLeft surface origin is now partially supported (mainly for OpenGL backbuffer) * Add all enum values to ShaderDataType * Allow RRect effect producing hard edge and coverage AA * Fix RecordingContext destructor * Refactor GPU hierarchical clipping (see source code for details) * Fix Matrix.mapPoints() * Add more bounds check methods to Rect2* * Replace small-size zeroing at 4-byte aligned addresses with a custom loop * Avoid per-pipeline uniform deduplication + Avoid redundant deduplication while allowing uniform data to be shared across pipelines, simplify the logic. + Additionally, the size of BindBufferRange is the size of uniform block, not the padded stride. * Refactor buffer allocator for all kinds of buffers + All the get*Pointer methods now return BufferSubAllocator, it allows the caller to perform multiple sub-allocations and also allows multiple buffers to be suballocated in parallel (for UBO). + It also allows specifying an extra alignment offset for the start of each new vertex format, so that buffer binding offsets can be expressed using baseInstance and baseVertex, reducing the number of buffer bindings. + For mesh draw, we use the concepts of append and static data to simplify. Improvements to UBO allocation, exception handling. * Rework TextureDataGatherer for new render code * Fix error shader * Fix Matrix4 constructor * Add NullSurface for mock tests * Remove UByte index type * Merge geometry definition and remove SimpleShape * Fix degenerate line stroke and stroke-stroke is not drawn * Use jacobian matrix to compute device-space gradient for AA-box * Fix VertexInputLayout masks * Improve GL error handling * Switching from JNI to "Java JNI" (FFM) to call GL/GLES functions * Allow extensions in GLSL codegen, and fix usage of extensions * Allow creating devices from GL 3.2 contexts; use the reported GLSL version (Many optimizations and fixes are not listed above) ##### Resources This version introduces a brand-new resources system, many APIs have been added, but are not listed below. * Add Resources.getImage() * Remove the runtime exception thrown by Resources * Ensure thread safety for all Resources API classes, fix several thread-safety issues in resources (AOSP bug) * Add SeekableInputStreamChannel, allow seeking in ZIP instead of stream reading * Optimize & fix decoding image from buffers * Optimize image MIME type decoding * Optimize decoding images from streams and paths * New methods to declare/add resources at runtime * Add Asset, AssetsProvider for retrieving assets * Allow multiple packages and namespaces in Resources ##### Widget * Fix TabLayout.setSelectedTabIndicatorColor() behavior * Add StaggeredGridView * Fix initial columns of GridView not AUTO_FIT * Fix ImageView bounds not set when layout unchanged and view detached * Fix RTL is not resolved in GridView children (AOSP bug) * Optimize GridView.onMeasure, avoid unnecessary measurement * Fix some views in AbsListView never get detached (AOSP bug) ##### Text * Link clicking on selectable text now checks actual cursor position * Optimize MeasuredParagraph.buildForStaticLayout in edge cases * Refactor PrecomputedText, many improvements and bug fixes (AOSP bug) * Optimize SpannableString.equals() * Add indexOfSpan map to SpannableStringInternal for performance, also null out reference in removeSpan() to avoid leaks (AOSP bug) * No longer truncate leading/trailing spaces in TextUtils.ellipsize * Avoid leaks in TextView's spannable (AOSP bug), also check text object identity to match DynamicLayout * Refactor BoringLayout + The legacy BoringLayout only works for LTR only text, now BoringLayout works for bidirectional text. And no longer work for simple Spanned text. It heavily depends on ShapedText API now, so you can think it's a high level wrapper over ShapedText. The bidi, ellipsizer, and text blob building are inlined in the BoringLayout class to improve performance. * Add method to TextPaint to obtain total advance and per-cluster advances for a bidi run * Add create flags for text array version of ShapedText * Add constructor for ShapedText to create layout from icu.Bidi * Move drawTextRun() from TextUtils to Canvas * Merge leading/trailing margin in text.Layout, improve performance * Fix Bidi heuristics being incorrect in some cases * Move all font options from Paint to TextPaint subclass * Move TabStops to internal package, and public TextPaint.getInternalPaint() * Move GetChars and TextRunShaper to graphics package * Fix concurrency issue of EmojiFont * Optimize several methods for measuring and shaping text * Add LineBreakConfig to text.DynamicLayout * Optimize GraphemeBreak and cursor movement * Fix cluster advance computation, use font-dependent clusters (HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS), instead of Unicode GCB * Improve toString(), substring() performance for several classes * Improve SpannedString and SpannableString constructor performance; always ignore NoCopySpan; never copy PARAGRAPH span if not at paragraph boundary * Fix SpannableString visibility #### Arc3D Shader Compiler * Keep tracking scope-level symbol table in AST nodes, also make scope level for switch block #### Build * Maven artifact is changed from `icyllis.modernui:ModernUI-Core` to `dev.icyllis:modernui-core` * Update dokka build * Add junit platform * Gradle 8.8 -> 9.3.1 * Java 17 -> 25 (for compiler and building, the target JVM is still 17) * Kotlin 1.9.22 -> 2.3.20 (compiler and stblib) * Update to Arc3D 2026.2.0 (Arc3D is now modular) * Use Arc3D from central maven instead of local clone * Use ModernUI from central maven instead of composite build
3.13.0.4 Release 06.06.2026

Modern UI 3.13.0.4 (Forge)

Підтримувані версії Minecraft
26.1 26.1.1 26.1.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.13.0.4 (3.13.0.3, 3.13.0.1) Changes from * 3.13.0.4 → 3.13.0.4 for Minecraft 26.1-26.1.2 * 3.12.0.4 → 3.13.0.3 for Minecraft 1.21.6-1.21.8 * 3.12.0.2 → 3.13.0.1 for Minecraft 1.21-1.21.1 #### NeoForge Extension 26.1.2 (1.21.8, 1.21.1) * (26.1+ only) Add Vulkan rendering backend, ModernUI Vulkan will be used when VulkanMod is used * (26.1+ only) Add "Global Volume Control" option for master volume multiplier * (1.21.1 only) Fix modern tooltip crash with ImmediatelyFast's hud_batching in HUD * (1.21.1, Forge and NeoForge only) Fix crash in datagen * (1.21.6+ only) Change surface origin to upper left to match Arc3D * Remove modifier restriction on arrow key movement on tooltip * Add API to register/create additional resources to the ModernUI resource system at runtime * Fix multiple mixin disable flags not work together * Add open SimpleScreen and MenuScreen classes to custom ModernUI screens * Add ImageStore to retrieve Images from Minecraft resources, fix possible threading issues * Add global "Theme" option for all ModernUI screens * Add "Linear Metrics" font option for the core framework * Add "Reset to Default" option to the context menu for all preferences * Miscellaneous UI improvements #### Forge Extension 26.1.2 (1.21.8, 1.21.1) * Equivalent to NeoForge version, except where noted #### Fabric Extension 26.1.2 (1.21.8, 1.21.1) * Functionally equivalent to NeoForge version, except where noted #### Modern Text Engine 26.1.2 (1.21.8, 1.21.1) * (26.1+ only) Add Vulkan rendering backend * (26.1+ only) Add support for player head and atlas sprite in text * (26.1+ only) Remove smart SDF shaders, remove mipmapping for outline fonts * (1.21.6+ only) Improve compatibility of modern prepared text * (1.21.1 only) Fix certain EditBox elements from the Create mod erroneously rendered with text shadows * (1.21.1 only) Add support for Font overriding in EditBox * (1.21.1 only) Fix EditBox hint text not shown * Fix line end spaces not stripped when breaking lines, also fix modern tooltip positioning * Fix color emoji with obfuscated style not render #### Core Framework ##### View * Add real CONTROL modifier, and update keybinds for macOS * Fix Toast.cancel() * Add method to set camera distance explicitly * Add methods to change ambient/spot shadow color * Allow shadow casting in reveal animations * Fix several dirty area accumulation issues that can cause ghosting ##### Graphics * Ensure running on LWJGL 3.4.2 and binary-compatible with LWJGL 3.3.1 * Update Vulkan initialization * Add Bitmap.subImage() to create sub-image view * Add methods to describe alpha type of Bitmap and Image exactly * Remove unsupported bitmap formats, deprecate RGBX_8888 (use new setOpaque() instead) * Add validation to Bitmap.wrap(), and handle 0 rowBytes/stride * ShapeDrawable's outline no longer relies on stroke opacity * Migrate everything to wide gamut, extended range colors * Refactor Drawable's alpha to float type, add wide color setters * Add dithering to ripple effects * Remove the RGB space and range restriction on Bitmap.setColorSpace(), this means you can use extended range colors (like extended Display P3) and CIE XYZ colors * Allow Image.createTextureFromBitmap to be called from non-UI threads * Fix race between Bitmap.close() and Bitmap.clone() * Refactor image (GPU) cache; fix thread-safety of Image.clone(); texture-backed image is no longer budgeted * Add new color packing format, which encodes extended range colors in 16-bit floating-point, in extended color space, using relative colorimetric rendering intent * Refactor several int color getters to long colors * Deprecate BMP and TGA support, will be removed in future * Optimize saving bitmap to path * Final refactor for ColorSpace-related classes * Add more Vulkan caps, and add caps dump * Add option to indicate that zero-to-one depth is used in OpenGL * Improve error logging * Simplify builtin color space access, fix some bugs * Refactor ColorTransform and color space methods * Introduce separate ChromaticAdaptation class * Change ColorSpace.Model to int constants * Update renderer test, Vulkan renderer * Complete the entire Vulkan rendering backend * ColorShader now takes original ColorSpace to handle absolute colorimetric intent * Make computeByteSize() return 0 for invalid row bytes * Add XYZ D65 space * Add Oklab support * Improve color space transformation + Optimize XYZ<->RGB conversion + Always uses abs response to handle extended range + Simplify RGB<->RGB transform computation (skip PCS) + Fix absolute rendering intent behavior * Remove references to Unsafe, now Arc3D no longer needs Unsafe * A8 and BW conversions no longer directly use Unsafe * Pixmap clear no longer uses Unsafe * Update usage of image offset=0 * No longer use Unsafe for copyImage() * Update pixel op and mem tests * Update low-precision load/store ops + No longer use LUT for 565 expansion, use only integer arithmetic, add 10-bit store ops * Change dither method from bayer matrix to R2 sequence * Replace Unsafe load ops * Replace Unsafe store ops with separate u and hb versions + Note that addr for heap is interpreted as byte offset to the first element, without array base offset anymore * Add validation for pixel memory address * Add unclamped/extended ColorSpace transformations * Avoid unnecessary object create for non-strict subset ImageShader * Relax range check in MathUtil, many checks are too strict, relax to handle unsigned integers * Add analytic 2D signed distance field generator * Fix unaligned memory access in building vertices * Add channel-based IIO stream impl * Add background compilation executor option * Workaround macOS OpenGL driver bug on depth-only draw pass * Add method to wrap backend image for interop * Use persistent mapping for Vulkan, similar to OpenGL, non-readback and host-visible * Ensure RenderPassSet is deduplicated and kept alive * Limit max engine max vertex bindings to 8 * Add option to limit max in-flight command buffers * Update surface create parameters * Add support for hairline text * Switch to Marlin Stroker and deprecate old PathStroker * Introduce immutable path data, and refactor Path class * Add Record canvas and BigRecord * Fix byte offset in Bitmap batch pixel copy operations * Add command buffer destructor * Delete many legacy usages of format * Add Vulkan graphics pipeline * Fix optimal pixel transfer buffer alignment * Rework the whole OpenGL texture format table (make it Vulkan-like) * Add more command buffer parameters * Add Vulkan queue management * Finish Vulkan descriptor set management * Implement Vulkan memory barrier management * Add RenderPassDesc to pipeline builder * Migrate to descriptor set layout for pipeline desc * Add immutable samplers to vkSetLayout * Sampler are now global objects * Add Vulkan buffer * Fix OpenGL readback buffer should not host-coherent or persistently mapped * Distinguish between BufferBindInfo and BufferSliceInfo * Add Vulkan sampler * Add Vulkan command buffer * Add Vulkan render pass management * Add Vulkan image view management * Add Vulkan framebuffers and framebuffer cache * Introduce consistent way to describe render pass and framebuffer + Clarify the usage of placeholder attachments and apply them in GL backend. + Fix some bugs in VulkanRenderPass creation. * Add full Vulkan render pass creation * Add definition for Vulkan compatible render passes * Move actual pipeline destruction to executing thread to ensure thread safety * Purge framebuffers only when needed instead of every frame * Refactor FramebufferDesc and RenderPassDesc * Add engine-level image formats * Add methods for wide gamut and extended range colors * Fix all the alignment issues for pixel operations * Support some new bitmap formats: GRAY_16, GRAY_ALPHA_1616, RGB_161616 * Add method to create Vulkan descriptor pool * Fix unaligned access in vectorized setPixel/Bitmap.clear() * Add Vulkan descriptor set pool * Add descriptor set layout * Fix ARGB mask swizzle, and reserve SDF mask type * Implement occlusion culling for the entire Granite Renderer * Separate paint and style, and use clip stack to handle fullscreen clear * Cleanup paint key and pipeline construction * Improve paint color handling and fix + If step solid color is used, the color of KeyContext will no longer be calculated since it's not used. + If shader is constant color, reduce to solid color. + Fix the case where step solid color is not used and the paint is solid color, then it should be in destination space. * Use a single paint block across multiple draws, by grouping pipeline analysis, pipeline building, and pipeline data gathering together * Separate image view and image proxy classes * Fix root of a cubic equation * Fix fragment textures should come before geometry textures * The sorting algorithm was changed from TimSort to BM Quicksort * Improve pipeline descriptor and fixes * LowerLeft surface origin is now partially supported (mainly for OpenGL backbuffer) * Add all enum values to ShaderDataType * Allow RRect effect producing hard edge and coverage AA * Fix RecordingContext destructor * Refactor GPU hierarchical clipping (see source code for details) * Fix Matrix.mapPoints() * Add more bounds check methods to Rect2* * Replace small-size zeroing at 4-byte aligned addresses with a custom loop * Avoid per-pipeline uniform deduplication + Avoid redundant deduplication while allowing uniform data to be shared across pipelines, simplify the logic. + Additionally, the size of BindBufferRange is the size of uniform block, not the padded stride. * Refactor buffer allocator for all kinds of buffers + All the get*Pointer methods now return BufferSubAllocator, it allows the caller to perform multiple sub-allocations and also allows multiple buffers to be suballocated in parallel (for UBO). + It also allows specifying an extra alignment offset for the start of each new vertex format, so that buffer binding offsets can be expressed using baseInstance and baseVertex, reducing the number of buffer bindings. + For mesh draw, we use the concepts of append and static data to simplify. Improvements to UBO allocation, exception handling. * Rework TextureDataGatherer for new render code * Fix error shader * Fix Matrix4 constructor * Add NullSurface for mock tests * Remove UByte index type * Merge geometry definition and remove SimpleShape * Fix degenerate line stroke and stroke-stroke is not drawn * Use jacobian matrix to compute device-space gradient for AA-box * Fix VertexInputLayout masks * Improve GL error handling * Switching from JNI to "Java JNI" (FFM) to call GL/GLES functions * Allow extensions in GLSL codegen, and fix usage of extensions * Allow creating devices from GL 3.2 contexts; use the reported GLSL version (Many optimizations and fixes are not listed above) ##### Resources This version introduces a brand-new resources system, many APIs have been added, but are not listed below. * Add Resources.getImage() * Remove the runtime exception thrown by Resources * Ensure thread safety for all Resources API classes, fix several thread-safety issues in resources (AOSP bug) * Add SeekableInputStreamChannel, allow seeking in ZIP instead of stream reading * Optimize & fix decoding image from buffers * Optimize image MIME type decoding * Optimize decoding images from streams and paths * New methods to declare/add resources at runtime * Add Asset, AssetsProvider for retrieving assets * Allow multiple packages and namespaces in Resources ##### Widget * Fix TabLayout.setSelectedTabIndicatorColor() behavior * Add StaggeredGridView * Fix initial columns of GridView not AUTO_FIT * Fix ImageView bounds not set when layout unchanged and view detached * Fix RTL is not resolved in GridView children (AOSP bug) * Optimize GridView.onMeasure, avoid unnecessary measurement * Fix some views in AbsListView never get detached (AOSP bug) ##### Text * Link clicking on selectable text now checks actual cursor position * Optimize MeasuredParagraph.buildForStaticLayout in edge cases * Refactor PrecomputedText, many improvements and bug fixes (AOSP bug) * Optimize SpannableString.equals() * Add indexOfSpan map to SpannableStringInternal for performance, also null out reference in removeSpan() to avoid leaks (AOSP bug) * No longer truncate leading/trailing spaces in TextUtils.ellipsize * Avoid leaks in TextView's spannable (AOSP bug), also check text object identity to match DynamicLayout * Refactor BoringLayout + The legacy BoringLayout only works for LTR only text, now BoringLayout works for bidirectional text. And no longer work for simple Spanned text. It heavily depends on ShapedText API now, so you can think it's a high level wrapper over ShapedText. The bidi, ellipsizer, and text blob building are inlined in the BoringLayout class to improve performance. * Add method to TextPaint to obtain total advance and per-cluster advances for a bidi run * Add create flags for text array version of ShapedText * Add constructor for ShapedText to create layout from icu.Bidi * Move drawTextRun() from TextUtils to Canvas * Merge leading/trailing margin in text.Layout, improve performance * Fix Bidi heuristics being incorrect in some cases * Move all font options from Paint to TextPaint subclass * Move TabStops to internal package, and public TextPaint.getInternalPaint() * Move GetChars and TextRunShaper to graphics package * Fix concurrency issue of EmojiFont * Optimize several methods for measuring and shaping text * Add LineBreakConfig to text.DynamicLayout * Optimize GraphemeBreak and cursor movement * Fix cluster advance computation, use font-dependent clusters (HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS), instead of Unicode GCB * Improve toString(), substring() performance for several classes * Improve SpannedString and SpannableString constructor performance; always ignore NoCopySpan; never copy PARAGRAPH span if not at paragraph boundary * Fix SpannableString visibility #### Arc3D Shader Compiler * Keep tracking scope-level symbol table in AST nodes, also make scope level for switch block #### Build * Maven artifact is changed from `icyllis.modernui:ModernUI-Core` to `dev.icyllis:modernui-core` * Update dokka build * Add junit platform * Gradle 8.8 -> 9.3.1 * Java 17 -> 25 (for compiler and building, the target JVM is still 17) * Kotlin 1.9.22 -> 2.3.20 (compiler and stblib) * Update to Arc3D 2026.2.0 (Arc3D is now modular) * Use Arc3D from central maven instead of local clone * Use ModernUI from central maven instead of composite build
3.13.0.4 Release 06.06.2026

Modern UI 3.13.0.4 (NeoForge)

Підтримувані версії Minecraft
26.1 26.1.1 26.1.2
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.13.0.4 (3.13.0.3, 3.13.0.1) Changes from * 3.13.0.4 → 3.13.0.4 for Minecraft 26.1-26.1.2 * 3.12.0.4 → 3.13.0.3 for Minecraft 1.21.6-1.21.8 * 3.12.0.2 → 3.13.0.1 for Minecraft 1.21-1.21.1 #### NeoForge Extension 26.1.2 (1.21.8, 1.21.1) * (26.1+ only) Add Vulkan rendering backend, ModernUI Vulkan will be used when VulkanMod is used * (26.1+ only) Add "Global Volume Control" option for master volume multiplier * (1.21.1 only) Fix modern tooltip crash with ImmediatelyFast's hud_batching in HUD * (1.21.1, Forge and NeoForge only) Fix crash in datagen * (1.21.6+ only) Change surface origin to upper left to match Arc3D * Remove modifier restriction on arrow key movement on tooltip * Add API to register/create additional resources to the ModernUI resource system at runtime * Fix multiple mixin disable flags not work together * Add open SimpleScreen and MenuScreen classes to custom ModernUI screens * Add ImageStore to retrieve Images from Minecraft resources, fix possible threading issues * Add global "Theme" option for all ModernUI screens * Add "Linear Metrics" font option for the core framework * Add "Reset to Default" option to the context menu for all preferences * Miscellaneous UI improvements #### Forge Extension 26.1.2 (1.21.8, 1.21.1) * Equivalent to NeoForge version, except where noted #### Fabric Extension 26.1.2 (1.21.8, 1.21.1) * Functionally equivalent to NeoForge version, except where noted #### Modern Text Engine 26.1.2 (1.21.8, 1.21.1) * (26.1+ only) Add Vulkan rendering backend * (26.1+ only) Add support for player head and atlas sprite in text * (26.1+ only) Remove smart SDF shaders, remove mipmapping for outline fonts * (1.21.6+ only) Improve compatibility of modern prepared text * (1.21.1 only) Fix certain EditBox elements from the Create mod erroneously rendered with text shadows * (1.21.1 only) Add support for Font overriding in EditBox * (1.21.1 only) Fix EditBox hint text not shown * Fix line end spaces not stripped when breaking lines, also fix modern tooltip positioning * Fix color emoji with obfuscated style not render #### Core Framework ##### View * Add real CONTROL modifier, and update keybinds for macOS * Fix Toast.cancel() * Add method to set camera distance explicitly * Add methods to change ambient/spot shadow color * Allow shadow casting in reveal animations * Fix several dirty area accumulation issues that can cause ghosting ##### Graphics * Ensure running on LWJGL 3.4.2 and binary-compatible with LWJGL 3.3.1 * Update Vulkan initialization * Add Bitmap.subImage() to create sub-image view * Add methods to describe alpha type of Bitmap and Image exactly * Remove unsupported bitmap formats, deprecate RGBX_8888 (use new setOpaque() instead) * Add validation to Bitmap.wrap(), and handle 0 rowBytes/stride * ShapeDrawable's outline no longer relies on stroke opacity * Migrate everything to wide gamut, extended range colors * Refactor Drawable's alpha to float type, add wide color setters * Add dithering to ripple effects * Remove the RGB space and range restriction on Bitmap.setColorSpace(), this means you can use extended range colors (like extended Display P3) and CIE XYZ colors * Allow Image.createTextureFromBitmap to be called from non-UI threads * Fix race between Bitmap.close() and Bitmap.clone() * Refactor image (GPU) cache; fix thread-safety of Image.clone(); texture-backed image is no longer budgeted * Add new color packing format, which encodes extended range colors in 16-bit floating-point, in extended color space, using relative colorimetric rendering intent * Refactor several int color getters to long colors * Deprecate BMP and TGA support, will be removed in future * Optimize saving bitmap to path * Final refactor for ColorSpace-related classes * Add more Vulkan caps, and add caps dump * Add option to indicate that zero-to-one depth is used in OpenGL * Improve error logging * Simplify builtin color space access, fix some bugs * Refactor ColorTransform and color space methods * Introduce separate ChromaticAdaptation class * Change ColorSpace.Model to int constants * Update renderer test, Vulkan renderer * Complete the entire Vulkan rendering backend * ColorShader now takes original ColorSpace to handle absolute colorimetric intent * Make computeByteSize() return 0 for invalid row bytes * Add XYZ D65 space * Add Oklab support * Improve color space transformation + Optimize XYZ<->RGB conversion + Always uses abs response to handle extended range + Simplify RGB<->RGB transform computation (skip PCS) + Fix absolute rendering intent behavior * Remove references to Unsafe, now Arc3D no longer needs Unsafe * A8 and BW conversions no longer directly use Unsafe * Pixmap clear no longer uses Unsafe * Update usage of image offset=0 * No longer use Unsafe for copyImage() * Update pixel op and mem tests * Update low-precision load/store ops + No longer use LUT for 565 expansion, use only integer arithmetic, add 10-bit store ops * Change dither method from bayer matrix to R2 sequence * Replace Unsafe load ops * Replace Unsafe store ops with separate u and hb versions + Note that addr for heap is interpreted as byte offset to the first element, without array base offset anymore * Add validation for pixel memory address * Add unclamped/extended ColorSpace transformations * Avoid unnecessary object create for non-strict subset ImageShader * Relax range check in MathUtil, many checks are too strict, relax to handle unsigned integers * Add analytic 2D signed distance field generator * Fix unaligned memory access in building vertices * Add channel-based IIO stream impl * Add background compilation executor option * Workaround macOS OpenGL driver bug on depth-only draw pass * Add method to wrap backend image for interop * Use persistent mapping for Vulkan, similar to OpenGL, non-readback and host-visible * Ensure RenderPassSet is deduplicated and kept alive * Limit max engine max vertex bindings to 8 * Add option to limit max in-flight command buffers * Update surface create parameters * Add support for hairline text * Switch to Marlin Stroker and deprecate old PathStroker * Introduce immutable path data, and refactor Path class * Add Record canvas and BigRecord * Fix byte offset in Bitmap batch pixel copy operations * Add command buffer destructor * Delete many legacy usages of format * Add Vulkan graphics pipeline * Fix optimal pixel transfer buffer alignment * Rework the whole OpenGL texture format table (make it Vulkan-like) * Add more command buffer parameters * Add Vulkan queue management * Finish Vulkan descriptor set management * Implement Vulkan memory barrier management * Add RenderPassDesc to pipeline builder * Migrate to descriptor set layout for pipeline desc * Add immutable samplers to vkSetLayout * Sampler are now global objects * Add Vulkan buffer * Fix OpenGL readback buffer should not host-coherent or persistently mapped * Distinguish between BufferBindInfo and BufferSliceInfo * Add Vulkan sampler * Add Vulkan command buffer * Add Vulkan render pass management * Add Vulkan image view management * Add Vulkan framebuffers and framebuffer cache * Introduce consistent way to describe render pass and framebuffer + Clarify the usage of placeholder attachments and apply them in GL backend. + Fix some bugs in VulkanRenderPass creation. * Add full Vulkan render pass creation * Add definition for Vulkan compatible render passes * Move actual pipeline destruction to executing thread to ensure thread safety * Purge framebuffers only when needed instead of every frame * Refactor FramebufferDesc and RenderPassDesc * Add engine-level image formats * Add methods for wide gamut and extended range colors * Fix all the alignment issues for pixel operations * Support some new bitmap formats: GRAY_16, GRAY_ALPHA_1616, RGB_161616 * Add method to create Vulkan descriptor pool * Fix unaligned access in vectorized setPixel/Bitmap.clear() * Add Vulkan descriptor set pool * Add descriptor set layout * Fix ARGB mask swizzle, and reserve SDF mask type * Implement occlusion culling for the entire Granite Renderer * Separate paint and style, and use clip stack to handle fullscreen clear * Cleanup paint key and pipeline construction * Improve paint color handling and fix + If step solid color is used, the color of KeyContext will no longer be calculated since it's not used. + If shader is constant color, reduce to solid color. + Fix the case where step solid color is not used and the paint is solid color, then it should be in destination space. * Use a single paint block across multiple draws, by grouping pipeline analysis, pipeline building, and pipeline data gathering together * Separate image view and image proxy classes * Fix root of a cubic equation * Fix fragment textures should come before geometry textures * The sorting algorithm was changed from TimSort to BM Quicksort * Improve pipeline descriptor and fixes * LowerLeft surface origin is now partially supported (mainly for OpenGL backbuffer) * Add all enum values to ShaderDataType * Allow RRect effect producing hard edge and coverage AA * Fix RecordingContext destructor * Refactor GPU hierarchical clipping (see source code for details) * Fix Matrix.mapPoints() * Add more bounds check methods to Rect2* * Replace small-size zeroing at 4-byte aligned addresses with a custom loop * Avoid per-pipeline uniform deduplication + Avoid redundant deduplication while allowing uniform data to be shared across pipelines, simplify the logic. + Additionally, the size of BindBufferRange is the size of uniform block, not the padded stride. * Refactor buffer allocator for all kinds of buffers + All the get*Pointer methods now return BufferSubAllocator, it allows the caller to perform multiple sub-allocations and also allows multiple buffers to be suballocated in parallel (for UBO). + It also allows specifying an extra alignment offset for the start of each new vertex format, so that buffer binding offsets can be expressed using baseInstance and baseVertex, reducing the number of buffer bindings. + For mesh draw, we use the concepts of append and static data to simplify. Improvements to UBO allocation, exception handling. * Rework TextureDataGatherer for new render code * Fix error shader * Fix Matrix4 constructor * Add NullSurface for mock tests * Remove UByte index type * Merge geometry definition and remove SimpleShape * Fix degenerate line stroke and stroke-stroke is not drawn * Use jacobian matrix to compute device-space gradient for AA-box * Fix VertexInputLayout masks * Improve GL error handling * Switching from JNI to "Java JNI" (FFM) to call GL/GLES functions * Allow extensions in GLSL codegen, and fix usage of extensions * Allow creating devices from GL 3.2 contexts; use the reported GLSL version (Many optimizations and fixes are not listed above) ##### Resources This version introduces a brand-new resources system, many APIs have been added, but are not listed below. * Add Resources.getImage() * Remove the runtime exception thrown by Resources * Ensure thread safety for all Resources API classes, fix several thread-safety issues in resources (AOSP bug) * Add SeekableInputStreamChannel, allow seeking in ZIP instead of stream reading * Optimize & fix decoding image from buffers * Optimize image MIME type decoding * Optimize decoding images from streams and paths * New methods to declare/add resources at runtime * Add Asset, AssetsProvider for retrieving assets * Allow multiple packages and namespaces in Resources ##### Widget * Fix TabLayout.setSelectedTabIndicatorColor() behavior * Add StaggeredGridView * Fix initial columns of GridView not AUTO_FIT * Fix ImageView bounds not set when layout unchanged and view detached * Fix RTL is not resolved in GridView children (AOSP bug) * Optimize GridView.onMeasure, avoid unnecessary measurement * Fix some views in AbsListView never get detached (AOSP bug) ##### Text * Link clicking on selectable text now checks actual cursor position * Optimize MeasuredParagraph.buildForStaticLayout in edge cases * Refactor PrecomputedText, many improvements and bug fixes (AOSP bug) * Optimize SpannableString.equals() * Add indexOfSpan map to SpannableStringInternal for performance, also null out reference in removeSpan() to avoid leaks (AOSP bug) * No longer truncate leading/trailing spaces in TextUtils.ellipsize * Avoid leaks in TextView's spannable (AOSP bug), also check text object identity to match DynamicLayout * Refactor BoringLayout + The legacy BoringLayout only works for LTR only text, now BoringLayout works for bidirectional text. And no longer work for simple Spanned text. It heavily depends on ShapedText API now, so you can think it's a high level wrapper over ShapedText. The bidi, ellipsizer, and text blob building are inlined in the BoringLayout class to improve performance. * Add method to TextPaint to obtain total advance and per-cluster advances for a bidi run * Add create flags for text array version of ShapedText * Add constructor for ShapedText to create layout from icu.Bidi * Move drawTextRun() from TextUtils to Canvas * Merge leading/trailing margin in text.Layout, improve performance * Fix Bidi heuristics being incorrect in some cases * Move all font options from Paint to TextPaint subclass * Move TabStops to internal package, and public TextPaint.getInternalPaint() * Move GetChars and TextRunShaper to graphics package * Fix concurrency issue of EmojiFont * Optimize several methods for measuring and shaping text * Add LineBreakConfig to text.DynamicLayout * Optimize GraphemeBreak and cursor movement * Fix cluster advance computation, use font-dependent clusters (HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS), instead of Unicode GCB * Improve toString(), substring() performance for several classes * Improve SpannedString and SpannableString constructor performance; always ignore NoCopySpan; never copy PARAGRAPH span if not at paragraph boundary * Fix SpannableString visibility #### Arc3D Shader Compiler * Keep tracking scope-level symbol table in AST nodes, also make scope level for switch block #### Build * Maven artifact is changed from `icyllis.modernui:ModernUI-Core` to `dev.icyllis:modernui-core` * Update dokka build * Add junit platform * Gradle 8.8 -> 9.3.1 * Java 17 -> 25 (for compiler and building, the target JVM is still 17) * Kotlin 1.9.22 -> 2.3.20 (compiler and stblib) * Update to Arc3D 2026.2.0 (Arc3D is now modular) * Use Arc3D from central maven instead of local clone * Use ModernUI from central maven instead of composite build
3.13.0.3 Release 06.06.2026

Modern UI 3.13.0.3 (Fabric)

Підтримувані версії Minecraft
1.21.6 1.21.7 1.21.8
Завантажувачі / Платформи
fabric
Показати зміни
### Modern UI 3.13.0.3 #### NeoForge Extension 1.21.8 * (26.1+ only) Add Vulkan rendering backend, ModernUI Vulkan will be used when VulkanMod is used * (26.1+ only) Add "Global Volume Control" option for master volume multiplier * (1.21.1 only) Fix modern tooltip crash with ImmediatelyFast's hud_batching in HUD * (1.21.1, Forge and NeoForge only) Fix crash in datagen * (1.21.6+ only) Change surface origin to upper left to match Arc3D * Remove modifier restriction on arrow key movement on tooltip * Add API to register/create additional resources to the ModernUI resource system at runtime * Fix multiple mixin disable flags not work together * Add open SimpleScreen and MenuScreen classes to custom ModernUI screens * Add ImageStore to retrieve Images from Minecraft resources, fix possible threading issues * Add global "Theme" option for all ModernUI screens * Add "Linear Metrics" font option for the core framework * Add "Reset to Default" option to the context menu for all preferences * Miscellaneous UI improvements #### Forge Extension 1.21.8 * Equivalent to NeoForge version, except where noted #### Fabric Extension 1.21.8 * Functionally equivalent to NeoForge version, except where noted #### Modern Text Engine 1.21.8 * (26.1+ only) Add Vulkan rendering backend * (26.1+ only) Add support for player head and atlas sprite in text * (26.1+ only) Remove smart SDF shaders, remove mipmapping for outline fonts * (1.21.6+ only) Improve compatibility of modern prepared text * (1.21.1 only) Fix certain EditBox elements from the Create mod erroneously rendered with text shadows * (1.21.1 only) Add support for Font overriding in EditBox * (1.21.1 only) Fix EditBox hint text not shown * Fix line end spaces not stripped when breaking lines, also fix modern tooltip positioning * Fix color emoji with obfuscated style not render #### Core Framework ##### View * Add real CONTROL modifier, and update keybinds for macOS * Fix Toast.cancel() * Add method to set camera distance explicitly * Add methods to change ambient/spot shadow color * Allow shadow casting in reveal animations * Fix several dirty area accumulation issues that can cause ghosting ##### Graphics * Ensure running on LWJGL 3.4.2 and binary-compatible with LWJGL 3.3.1 * Update Vulkan initialization * Add Bitmap.subImage() to create sub-image view * Add methods to describe alpha type of Bitmap and Image exactly * Remove unsupported bitmap formats, deprecate RGBX_8888 (use new setOpaque() instead) * Add validation to Bitmap.wrap(), and handle 0 rowBytes/stride * ShapeDrawable's outline no longer relies on stroke opacity * Migrate everything to wide gamut, extended range colors * Refactor Drawable's alpha to float type, add wide color setters * Add dithering to ripple effects * Remove the RGB space and range restriction on Bitmap.setColorSpace(), this means you can use extended range colors (like extended Display P3) and CIE XYZ colors * Allow Image.createTextureFromBitmap to be called from non-UI threads * Fix race between Bitmap.close() and Bitmap.clone() * Refactor image (GPU) cache; fix thread-safety of Image.clone(); texture-backed image is no longer budgeted * Add new color packing format, which encodes extended range colors in 16-bit floating-point, in extended color space, using relative colorimetric rendering intent * Refactor several int color getters to long colors * Deprecate BMP and TGA support, will be removed in future * Optimize saving bitmap to path * Final refactor for ColorSpace-related classes * Add more Vulkan caps, and add caps dump * Add option to indicate that zero-to-one depth is used in OpenGL * Improve error logging * Simplify builtin color space access, fix some bugs * Refactor ColorTransform and color space methods * Introduce separate ChromaticAdaptation class * Change ColorSpace.Model to int constants * Update renderer test, Vulkan renderer * Complete the entire Vulkan rendering backend * ColorShader now takes original ColorSpace to handle absolute colorimetric intent * Make computeByteSize() return 0 for invalid row bytes * Add XYZ D65 space * Add Oklab support * Improve color space transformation + Optimize XYZ<->RGB conversion + Always uses abs response to handle extended range + Simplify RGB<->RGB transform computation (skip PCS) + Fix absolute rendering intent behavior * Remove references to Unsafe, now Arc3D no longer needs Unsafe * A8 and BW conversions no longer directly use Unsafe * Pixmap clear no longer uses Unsafe * Update usage of image offset=0 * No longer use Unsafe for copyImage() * Update pixel op and mem tests * Update low-precision load/store ops + No longer use LUT for 565 expansion, use only integer arithmetic, add 10-bit store ops * Change dither method from bayer matrix to R2 sequence * Replace Unsafe load ops * Replace Unsafe store ops with separate u and hb versions + Note that addr for heap is interpreted as byte offset to the first element, without array base offset anymore * Add validation for pixel memory address * Add unclamped/extended ColorSpace transformations * Avoid unnecessary object create for non-strict subset ImageShader * Relax range check in MathUtil, many checks are too strict, relax to handle unsigned integers * Add analytic 2D signed distance field generator * Fix unaligned memory access in building vertices * Add channel-based IIO stream impl * Add background compilation executor option * Workaround macOS OpenGL driver bug on depth-only draw pass * Add method to wrap backend image for interop * Use persistent mapping for Vulkan, similar to OpenGL, non-readback and host-visible * Ensure RenderPassSet is deduplicated and kept alive * Limit max engine max vertex bindings to 8 * Add option to limit max in-flight command buffers * Update surface create parameters * Add support for hairline text * Switch to Marlin Stroker and deprecate old PathStroker * Introduce immutable path data, and refactor Path class * Add Record canvas and BigRecord * Fix byte offset in Bitmap batch pixel copy operations * Add command buffer destructor * Delete many legacy usages of format * Add Vulkan graphics pipeline * Fix optimal pixel transfer buffer alignment * Rework the whole OpenGL texture format table (make it Vulkan-like) * Add more command buffer parameters * Add Vulkan queue management * Finish Vulkan descriptor set management * Implement Vulkan memory barrier management * Add RenderPassDesc to pipeline builder * Migrate to descriptor set layout for pipeline desc * Add immutable samplers to vkSetLayout * Sampler are now global objects * Add Vulkan buffer * Fix OpenGL readback buffer should not host-coherent or persistently mapped * Distinguish between BufferBindInfo and BufferSliceInfo * Add Vulkan sampler * Add Vulkan command buffer * Add Vulkan render pass management * Add Vulkan image view management * Add Vulkan framebuffers and framebuffer cache * Introduce consistent way to describe render pass and framebuffer + Clarify the usage of placeholder attachments and apply them in GL backend. + Fix some bugs in VulkanRenderPass creation. * Add full Vulkan render pass creation * Add definition for Vulkan compatible render passes * Move actual pipeline destruction to executing thread to ensure thread safety * Purge framebuffers only when needed instead of every frame * Refactor FramebufferDesc and RenderPassDesc * Add engine-level image formats * Add methods for wide gamut and extended range colors * Fix all the alignment issues for pixel operations * Support some new bitmap formats: GRAY_16, GRAY_ALPHA_1616, RGB_161616 * Add method to create Vulkan descriptor pool * Fix unaligned access in vectorized setPixel/Bitmap.clear() * Add Vulkan descriptor set pool * Add descriptor set layout * Fix ARGB mask swizzle, and reserve SDF mask type * Implement occlusion culling for the entire Granite Renderer * Separate paint and style, and use clip stack to handle fullscreen clear * Cleanup paint key and pipeline construction * Improve paint color handling and fix + If step solid color is used, the color of KeyContext will no longer be calculated since it's not used. + If shader is constant color, reduce to solid color. + Fix the case where step solid color is not used and the paint is solid color, then it should be in destination space. * Use a single paint block across multiple draws, by grouping pipeline analysis, pipeline building, and pipeline data gathering together * Separate image view and image proxy classes * Fix root of a cubic equation * Fix fragment textures should come before geometry textures * The sorting algorithm was changed from TimSort to BM Quicksort * Improve pipeline descriptor and fixes * LowerLeft surface origin is now partially supported (mainly for OpenGL backbuffer) * Add all enum values to ShaderDataType * Allow RRect effect producing hard edge and coverage AA * Fix RecordingContext destructor * Refactor GPU hierarchical clipping (see source code for details) * Fix Matrix.mapPoints() * Add more bounds check methods to Rect2* * Replace small-size zeroing at 4-byte aligned addresses with a custom loop * Avoid per-pipeline uniform deduplication + Avoid redundant deduplication while allowing uniform data to be shared across pipelines, simplify the logic. + Additionally, the size of BindBufferRange is the size of uniform block, not the padded stride. * Refactor buffer allocator for all kinds of buffers + All the get*Pointer methods now return BufferSubAllocator, it allows the caller to perform multiple sub-allocations and also allows multiple buffers to be suballocated in parallel (for UBO). + It also allows specifying an extra alignment offset for the start of each new vertex format, so that buffer binding offsets can be expressed using baseInstance and baseVertex, reducing the number of buffer bindings. + For mesh draw, we use the concepts of append and static data to simplify. Improvements to UBO allocation, exception handling. * Rework TextureDataGatherer for new render code * Fix error shader * Fix Matrix4 constructor * Add NullSurface for mock tests * Remove UByte index type * Merge geometry definition and remove SimpleShape * Fix degenerate line stroke and stroke-stroke is not drawn * Use jacobian matrix to compute device-space gradient for AA-box * Fix VertexInputLayout masks * Improve GL error handling * Switching from JNI to "Java JNI" (FFM) to call GL/GLES functions * Allow extensions in GLSL codegen, and fix usage of extensions * Allow creating devices from GL 3.2 contexts; use the reported GLSL version (Many optimizations and fixes are not listed above) ##### Resources This version introduces a brand-new resources system, many APIs have been added, but are not listed below. * Add Resources.getImage() * Remove the runtime exception thrown by Resources * Ensure thread safety for all Resources API classes, fix several thread-safety issues in resources (AOSP bug) * Add SeekableInputStreamChannel, allow seeking in ZIP instead of stream reading * Optimize & fix decoding image from buffers * Optimize image MIME type decoding * Optimize decoding images from streams and paths * New methods to declare/add resources at runtime * Add Asset, AssetsProvider for retrieving assets * Allow multiple packages and namespaces in Resources ##### Widget * Fix TabLayout.setSelectedTabIndicatorColor() behavior * Add StaggeredGridView * Fix initial columns of GridView not AUTO_FIT * Fix ImageView bounds not set when layout unchanged and view detached * Fix RTL is not resolved in GridView children (AOSP bug) * Optimize GridView.onMeasure, avoid unnecessary measurement * Fix some views in AbsListView never get detached (AOSP bug) ##### Text * Link clicking on selectable text now checks actual cursor position * Optimize MeasuredParagraph.buildForStaticLayout in edge cases * Refactor PrecomputedText, many improvements and bug fixes (AOSP bug) * Optimize SpannableString.equals() * Add indexOfSpan map to SpannableStringInternal for performance, also null out reference in removeSpan() to avoid leaks (AOSP bug) * No longer truncate leading/trailing spaces in TextUtils.ellipsize * Avoid leaks in TextView's spannable (AOSP bug), also check text object identity to match DynamicLayout * Refactor BoringLayout + The legacy BoringLayout only works for LTR only text, now BoringLayout works for bidirectional text. And no longer work for simple Spanned text. It heavily depends on ShapedText API now, so you can think it's a high level wrapper over ShapedText. The bidi, ellipsizer, and text blob building are inlined in the BoringLayout class to improve performance. * Add method to TextPaint to obtain total advance and per-cluster advances for a bidi run * Add create flags for text array version of ShapedText * Add constructor for ShapedText to create layout from icu.Bidi * Move drawTextRun() from TextUtils to Canvas * Merge leading/trailing margin in text.Layout, improve performance * Fix Bidi heuristics being incorrect in some cases * Move all font options from Paint to TextPaint subclass * Move TabStops to internal package, and public TextPaint.getInternalPaint() * Move GetChars and TextRunShaper to graphics package * Fix concurrency issue of EmojiFont * Optimize several methods for measuring and shaping text * Add LineBreakConfig to text.DynamicLayout * Optimize GraphemeBreak and cursor movement * Fix cluster advance computation, use font-dependent clusters (HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS), instead of Unicode GCB * Improve toString(), substring() performance for several classes * Improve SpannedString and SpannableString constructor performance; always ignore NoCopySpan; never copy PARAGRAPH span if not at paragraph boundary * Fix SpannableString visibility #### Arc3D Shader Compiler * Keep tracking scope-level symbol table in AST nodes, also make scope level for switch block #### Build * Maven artifact is changed from `icyllis.modernui:ModernUI-Core` to `dev.icyllis:modernui-core` * Update dokka build * Add junit platform * Gradle 8.8 -> 9.3.1 * Java 17 -> 25 (for compiler and building, the target JVM is still 17) * Kotlin 1.9.22 -> 2.3.20 (compiler and stblib) * Update to Arc3D 2026.2.0 (Arc3D is now modular) * Use Arc3D from central maven instead of local clone * Use ModernUI from central maven instead of composite build
3.13.0.3 Release 06.06.2026

Modern UI 3.13.0.3 (Forge)

Підтримувані версії Minecraft
1.21.6 1.21.7 1.21.8
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.13.0.3 #### NeoForge Extension 1.21.8 * (26.1+ only) Add Vulkan rendering backend, ModernUI Vulkan will be used when VulkanMod is used * (26.1+ only) Add "Global Volume Control" option for master volume multiplier * (1.21.1 only) Fix modern tooltip crash with ImmediatelyFast's hud_batching in HUD * (1.21.1, Forge and NeoForge only) Fix crash in datagen * (1.21.6+ only) Change surface origin to upper left to match Arc3D * Remove modifier restriction on arrow key movement on tooltip * Add API to register/create additional resources to the ModernUI resource system at runtime * Fix multiple mixin disable flags not work together * Add open SimpleScreen and MenuScreen classes to custom ModernUI screens * Add ImageStore to retrieve Images from Minecraft resources, fix possible threading issues * Add global "Theme" option for all ModernUI screens * Add "Linear Metrics" font option for the core framework * Add "Reset to Default" option to the context menu for all preferences * Miscellaneous UI improvements #### Forge Extension 1.21.8 * Equivalent to NeoForge version, except where noted #### Fabric Extension 1.21.8 * Functionally equivalent to NeoForge version, except where noted #### Modern Text Engine 1.21.8 * (26.1+ only) Add Vulkan rendering backend * (26.1+ only) Add support for player head and atlas sprite in text * (26.1+ only) Remove smart SDF shaders, remove mipmapping for outline fonts * (1.21.6+ only) Improve compatibility of modern prepared text * (1.21.1 only) Fix certain EditBox elements from the Create mod erroneously rendered with text shadows * (1.21.1 only) Add support for Font overriding in EditBox * (1.21.1 only) Fix EditBox hint text not shown * Fix line end spaces not stripped when breaking lines, also fix modern tooltip positioning * Fix color emoji with obfuscated style not render #### Core Framework ##### View * Add real CONTROL modifier, and update keybinds for macOS * Fix Toast.cancel() * Add method to set camera distance explicitly * Add methods to change ambient/spot shadow color * Allow shadow casting in reveal animations * Fix several dirty area accumulation issues that can cause ghosting ##### Graphics * Ensure running on LWJGL 3.4.2 and binary-compatible with LWJGL 3.3.1 * Update Vulkan initialization * Add Bitmap.subImage() to create sub-image view * Add methods to describe alpha type of Bitmap and Image exactly * Remove unsupported bitmap formats, deprecate RGBX_8888 (use new setOpaque() instead) * Add validation to Bitmap.wrap(), and handle 0 rowBytes/stride * ShapeDrawable's outline no longer relies on stroke opacity * Migrate everything to wide gamut, extended range colors * Refactor Drawable's alpha to float type, add wide color setters * Add dithering to ripple effects * Remove the RGB space and range restriction on Bitmap.setColorSpace(), this means you can use extended range colors (like extended Display P3) and CIE XYZ colors * Allow Image.createTextureFromBitmap to be called from non-UI threads * Fix race between Bitmap.close() and Bitmap.clone() * Refactor image (GPU) cache; fix thread-safety of Image.clone(); texture-backed image is no longer budgeted * Add new color packing format, which encodes extended range colors in 16-bit floating-point, in extended color space, using relative colorimetric rendering intent * Refactor several int color getters to long colors * Deprecate BMP and TGA support, will be removed in future * Optimize saving bitmap to path * Final refactor for ColorSpace-related classes * Add more Vulkan caps, and add caps dump * Add option to indicate that zero-to-one depth is used in OpenGL * Improve error logging * Simplify builtin color space access, fix some bugs * Refactor ColorTransform and color space methods * Introduce separate ChromaticAdaptation class * Change ColorSpace.Model to int constants * Update renderer test, Vulkan renderer * Complete the entire Vulkan rendering backend * ColorShader now takes original ColorSpace to handle absolute colorimetric intent * Make computeByteSize() return 0 for invalid row bytes * Add XYZ D65 space * Add Oklab support * Improve color space transformation + Optimize XYZ<->RGB conversion + Always uses abs response to handle extended range + Simplify RGB<->RGB transform computation (skip PCS) + Fix absolute rendering intent behavior * Remove references to Unsafe, now Arc3D no longer needs Unsafe * A8 and BW conversions no longer directly use Unsafe * Pixmap clear no longer uses Unsafe * Update usage of image offset=0 * No longer use Unsafe for copyImage() * Update pixel op and mem tests * Update low-precision load/store ops + No longer use LUT for 565 expansion, use only integer arithmetic, add 10-bit store ops * Change dither method from bayer matrix to R2 sequence * Replace Unsafe load ops * Replace Unsafe store ops with separate u and hb versions + Note that addr for heap is interpreted as byte offset to the first element, without array base offset anymore * Add validation for pixel memory address * Add unclamped/extended ColorSpace transformations * Avoid unnecessary object create for non-strict subset ImageShader * Relax range check in MathUtil, many checks are too strict, relax to handle unsigned integers * Add analytic 2D signed distance field generator * Fix unaligned memory access in building vertices * Add channel-based IIO stream impl * Add background compilation executor option * Workaround macOS OpenGL driver bug on depth-only draw pass * Add method to wrap backend image for interop * Use persistent mapping for Vulkan, similar to OpenGL, non-readback and host-visible * Ensure RenderPassSet is deduplicated and kept alive * Limit max engine max vertex bindings to 8 * Add option to limit max in-flight command buffers * Update surface create parameters * Add support for hairline text * Switch to Marlin Stroker and deprecate old PathStroker * Introduce immutable path data, and refactor Path class * Add Record canvas and BigRecord * Fix byte offset in Bitmap batch pixel copy operations * Add command buffer destructor * Delete many legacy usages of format * Add Vulkan graphics pipeline * Fix optimal pixel transfer buffer alignment * Rework the whole OpenGL texture format table (make it Vulkan-like) * Add more command buffer parameters * Add Vulkan queue management * Finish Vulkan descriptor set management * Implement Vulkan memory barrier management * Add RenderPassDesc to pipeline builder * Migrate to descriptor set layout for pipeline desc * Add immutable samplers to vkSetLayout * Sampler are now global objects * Add Vulkan buffer * Fix OpenGL readback buffer should not host-coherent or persistently mapped * Distinguish between BufferBindInfo and BufferSliceInfo * Add Vulkan sampler * Add Vulkan command buffer * Add Vulkan render pass management * Add Vulkan image view management * Add Vulkan framebuffers and framebuffer cache * Introduce consistent way to describe render pass and framebuffer + Clarify the usage of placeholder attachments and apply them in GL backend. + Fix some bugs in VulkanRenderPass creation. * Add full Vulkan render pass creation * Add definition for Vulkan compatible render passes * Move actual pipeline destruction to executing thread to ensure thread safety * Purge framebuffers only when needed instead of every frame * Refactor FramebufferDesc and RenderPassDesc * Add engine-level image formats * Add methods for wide gamut and extended range colors * Fix all the alignment issues for pixel operations * Support some new bitmap formats: GRAY_16, GRAY_ALPHA_1616, RGB_161616 * Add method to create Vulkan descriptor pool * Fix unaligned access in vectorized setPixel/Bitmap.clear() * Add Vulkan descriptor set pool * Add descriptor set layout * Fix ARGB mask swizzle, and reserve SDF mask type * Implement occlusion culling for the entire Granite Renderer * Separate paint and style, and use clip stack to handle fullscreen clear * Cleanup paint key and pipeline construction * Improve paint color handling and fix + If step solid color is used, the color of KeyContext will no longer be calculated since it's not used. + If shader is constant color, reduce to solid color. + Fix the case where step solid color is not used and the paint is solid color, then it should be in destination space. * Use a single paint block across multiple draws, by grouping pipeline analysis, pipeline building, and pipeline data gathering together * Separate image view and image proxy classes * Fix root of a cubic equation * Fix fragment textures should come before geometry textures * The sorting algorithm was changed from TimSort to BM Quicksort * Improve pipeline descriptor and fixes * LowerLeft surface origin is now partially supported (mainly for OpenGL backbuffer) * Add all enum values to ShaderDataType * Allow RRect effect producing hard edge and coverage AA * Fix RecordingContext destructor * Refactor GPU hierarchical clipping (see source code for details) * Fix Matrix.mapPoints() * Add more bounds check methods to Rect2* * Replace small-size zeroing at 4-byte aligned addresses with a custom loop * Avoid per-pipeline uniform deduplication + Avoid redundant deduplication while allowing uniform data to be shared across pipelines, simplify the logic. + Additionally, the size of BindBufferRange is the size of uniform block, not the padded stride. * Refactor buffer allocator for all kinds of buffers + All the get*Pointer methods now return BufferSubAllocator, it allows the caller to perform multiple sub-allocations and also allows multiple buffers to be suballocated in parallel (for UBO). + It also allows specifying an extra alignment offset for the start of each new vertex format, so that buffer binding offsets can be expressed using baseInstance and baseVertex, reducing the number of buffer bindings. + For mesh draw, we use the concepts of append and static data to simplify. Improvements to UBO allocation, exception handling. * Rework TextureDataGatherer for new render code * Fix error shader * Fix Matrix4 constructor * Add NullSurface for mock tests * Remove UByte index type * Merge geometry definition and remove SimpleShape * Fix degenerate line stroke and stroke-stroke is not drawn * Use jacobian matrix to compute device-space gradient for AA-box * Fix VertexInputLayout masks * Improve GL error handling * Switching from JNI to "Java JNI" (FFM) to call GL/GLES functions * Allow extensions in GLSL codegen, and fix usage of extensions * Allow creating devices from GL 3.2 contexts; use the reported GLSL version (Many optimizations and fixes are not listed above) ##### Resources This version introduces a brand-new resources system, many APIs have been added, but are not listed below. * Add Resources.getImage() * Remove the runtime exception thrown by Resources * Ensure thread safety for all Resources API classes, fix several thread-safety issues in resources (AOSP bug) * Add SeekableInputStreamChannel, allow seeking in ZIP instead of stream reading * Optimize & fix decoding image from buffers * Optimize image MIME type decoding * Optimize decoding images from streams and paths * New methods to declare/add resources at runtime * Add Asset, AssetsProvider for retrieving assets * Allow multiple packages and namespaces in Resources ##### Widget * Fix TabLayout.setSelectedTabIndicatorColor() behavior * Add StaggeredGridView * Fix initial columns of GridView not AUTO_FIT * Fix ImageView bounds not set when layout unchanged and view detached * Fix RTL is not resolved in GridView children (AOSP bug) * Optimize GridView.onMeasure, avoid unnecessary measurement * Fix some views in AbsListView never get detached (AOSP bug) ##### Text * Link clicking on selectable text now checks actual cursor position * Optimize MeasuredParagraph.buildForStaticLayout in edge cases * Refactor PrecomputedText, many improvements and bug fixes (AOSP bug) * Optimize SpannableString.equals() * Add indexOfSpan map to SpannableStringInternal for performance, also null out reference in removeSpan() to avoid leaks (AOSP bug) * No longer truncate leading/trailing spaces in TextUtils.ellipsize * Avoid leaks in TextView's spannable (AOSP bug), also check text object identity to match DynamicLayout * Refactor BoringLayout + The legacy BoringLayout only works for LTR only text, now BoringLayout works for bidirectional text. And no longer work for simple Spanned text. It heavily depends on ShapedText API now, so you can think it's a high level wrapper over ShapedText. The bidi, ellipsizer, and text blob building are inlined in the BoringLayout class to improve performance. * Add method to TextPaint to obtain total advance and per-cluster advances for a bidi run * Add create flags for text array version of ShapedText * Add constructor for ShapedText to create layout from icu.Bidi * Move drawTextRun() from TextUtils to Canvas * Merge leading/trailing margin in text.Layout, improve performance * Fix Bidi heuristics being incorrect in some cases * Move all font options from Paint to TextPaint subclass * Move TabStops to internal package, and public TextPaint.getInternalPaint() * Move GetChars and TextRunShaper to graphics package * Fix concurrency issue of EmojiFont * Optimize several methods for measuring and shaping text * Add LineBreakConfig to text.DynamicLayout * Optimize GraphemeBreak and cursor movement * Fix cluster advance computation, use font-dependent clusters (HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS), instead of Unicode GCB * Improve toString(), substring() performance for several classes * Improve SpannedString and SpannableString constructor performance; always ignore NoCopySpan; never copy PARAGRAPH span if not at paragraph boundary * Fix SpannableString visibility #### Arc3D Shader Compiler * Keep tracking scope-level symbol table in AST nodes, also make scope level for switch block #### Build * Maven artifact is changed from `icyllis.modernui:ModernUI-Core` to `dev.icyllis:modernui-core` * Update dokka build * Add junit platform * Gradle 8.8 -> 9.3.1 * Java 17 -> 25 (for compiler and building, the target JVM is still 17) * Kotlin 1.9.22 -> 2.3.20 (compiler and stblib) * Update to Arc3D 2026.2.0 (Arc3D is now modular) * Use Arc3D from central maven instead of local clone * Use ModernUI from central maven instead of composite build
3.13.0.3 Release 06.06.2026

Modern UI 3.13.0.3 (NeoForge)

Підтримувані версії Minecraft
1.21.6 1.21.7 1.21.8
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.13.0.3 #### NeoForge Extension 1.21.8 * (26.1+ only) Add Vulkan rendering backend, ModernUI Vulkan will be used when VulkanMod is used * (26.1+ only) Add "Global Volume Control" option for master volume multiplier * (1.21.1 only) Fix modern tooltip crash with ImmediatelyFast's hud_batching in HUD * (1.21.1, Forge and NeoForge only) Fix crash in datagen * (1.21.6+ only) Change surface origin to upper left to match Arc3D * Remove modifier restriction on arrow key movement on tooltip * Add API to register/create additional resources to the ModernUI resource system at runtime * Fix multiple mixin disable flags not work together * Add open SimpleScreen and MenuScreen classes to custom ModernUI screens * Add ImageStore to retrieve Images from Minecraft resources, fix possible threading issues * Add global "Theme" option for all ModernUI screens * Add "Linear Metrics" font option for the core framework * Add "Reset to Default" option to the context menu for all preferences * Miscellaneous UI improvements #### Forge Extension 1.21.8 * Equivalent to NeoForge version, except where noted #### Fabric Extension 1.21.8 * Functionally equivalent to NeoForge version, except where noted #### Modern Text Engine 1.21.8 * (26.1+ only) Add Vulkan rendering backend * (26.1+ only) Add support for player head and atlas sprite in text * (26.1+ only) Remove smart SDF shaders, remove mipmapping for outline fonts * (1.21.6+ only) Improve compatibility of modern prepared text * (1.21.1 only) Fix certain EditBox elements from the Create mod erroneously rendered with text shadows * (1.21.1 only) Add support for Font overriding in EditBox * (1.21.1 only) Fix EditBox hint text not shown * Fix line end spaces not stripped when breaking lines, also fix modern tooltip positioning * Fix color emoji with obfuscated style not render #### Core Framework ##### View * Add real CONTROL modifier, and update keybinds for macOS * Fix Toast.cancel() * Add method to set camera distance explicitly * Add methods to change ambient/spot shadow color * Allow shadow casting in reveal animations * Fix several dirty area accumulation issues that can cause ghosting ##### Graphics * Ensure running on LWJGL 3.4.2 and binary-compatible with LWJGL 3.3.1 * Update Vulkan initialization * Add Bitmap.subImage() to create sub-image view * Add methods to describe alpha type of Bitmap and Image exactly * Remove unsupported bitmap formats, deprecate RGBX_8888 (use new setOpaque() instead) * Add validation to Bitmap.wrap(), and handle 0 rowBytes/stride * ShapeDrawable's outline no longer relies on stroke opacity * Migrate everything to wide gamut, extended range colors * Refactor Drawable's alpha to float type, add wide color setters * Add dithering to ripple effects * Remove the RGB space and range restriction on Bitmap.setColorSpace(), this means you can use extended range colors (like extended Display P3) and CIE XYZ colors * Allow Image.createTextureFromBitmap to be called from non-UI threads * Fix race between Bitmap.close() and Bitmap.clone() * Refactor image (GPU) cache; fix thread-safety of Image.clone(); texture-backed image is no longer budgeted * Add new color packing format, which encodes extended range colors in 16-bit floating-point, in extended color space, using relative colorimetric rendering intent * Refactor several int color getters to long colors * Deprecate BMP and TGA support, will be removed in future * Optimize saving bitmap to path * Final refactor for ColorSpace-related classes * Add more Vulkan caps, and add caps dump * Add option to indicate that zero-to-one depth is used in OpenGL * Improve error logging * Simplify builtin color space access, fix some bugs * Refactor ColorTransform and color space methods * Introduce separate ChromaticAdaptation class * Change ColorSpace.Model to int constants * Update renderer test, Vulkan renderer * Complete the entire Vulkan rendering backend * ColorShader now takes original ColorSpace to handle absolute colorimetric intent * Make computeByteSize() return 0 for invalid row bytes * Add XYZ D65 space * Add Oklab support * Improve color space transformation + Optimize XYZ<->RGB conversion + Always uses abs response to handle extended range + Simplify RGB<->RGB transform computation (skip PCS) + Fix absolute rendering intent behavior * Remove references to Unsafe, now Arc3D no longer needs Unsafe * A8 and BW conversions no longer directly use Unsafe * Pixmap clear no longer uses Unsafe * Update usage of image offset=0 * No longer use Unsafe for copyImage() * Update pixel op and mem tests * Update low-precision load/store ops + No longer use LUT for 565 expansion, use only integer arithmetic, add 10-bit store ops * Change dither method from bayer matrix to R2 sequence * Replace Unsafe load ops * Replace Unsafe store ops with separate u and hb versions + Note that addr for heap is interpreted as byte offset to the first element, without array base offset anymore * Add validation for pixel memory address * Add unclamped/extended ColorSpace transformations * Avoid unnecessary object create for non-strict subset ImageShader * Relax range check in MathUtil, many checks are too strict, relax to handle unsigned integers * Add analytic 2D signed distance field generator * Fix unaligned memory access in building vertices * Add channel-based IIO stream impl * Add background compilation executor option * Workaround macOS OpenGL driver bug on depth-only draw pass * Add method to wrap backend image for interop * Use persistent mapping for Vulkan, similar to OpenGL, non-readback and host-visible * Ensure RenderPassSet is deduplicated and kept alive * Limit max engine max vertex bindings to 8 * Add option to limit max in-flight command buffers * Update surface create parameters * Add support for hairline text * Switch to Marlin Stroker and deprecate old PathStroker * Introduce immutable path data, and refactor Path class * Add Record canvas and BigRecord * Fix byte offset in Bitmap batch pixel copy operations * Add command buffer destructor * Delete many legacy usages of format * Add Vulkan graphics pipeline * Fix optimal pixel transfer buffer alignment * Rework the whole OpenGL texture format table (make it Vulkan-like) * Add more command buffer parameters * Add Vulkan queue management * Finish Vulkan descriptor set management * Implement Vulkan memory barrier management * Add RenderPassDesc to pipeline builder * Migrate to descriptor set layout for pipeline desc * Add immutable samplers to vkSetLayout * Sampler are now global objects * Add Vulkan buffer * Fix OpenGL readback buffer should not host-coherent or persistently mapped * Distinguish between BufferBindInfo and BufferSliceInfo * Add Vulkan sampler * Add Vulkan command buffer * Add Vulkan render pass management * Add Vulkan image view management * Add Vulkan framebuffers and framebuffer cache * Introduce consistent way to describe render pass and framebuffer + Clarify the usage of placeholder attachments and apply them in GL backend. + Fix some bugs in VulkanRenderPass creation. * Add full Vulkan render pass creation * Add definition for Vulkan compatible render passes * Move actual pipeline destruction to executing thread to ensure thread safety * Purge framebuffers only when needed instead of every frame * Refactor FramebufferDesc and RenderPassDesc * Add engine-level image formats * Add methods for wide gamut and extended range colors * Fix all the alignment issues for pixel operations * Support some new bitmap formats: GRAY_16, GRAY_ALPHA_1616, RGB_161616 * Add method to create Vulkan descriptor pool * Fix unaligned access in vectorized setPixel/Bitmap.clear() * Add Vulkan descriptor set pool * Add descriptor set layout * Fix ARGB mask swizzle, and reserve SDF mask type * Implement occlusion culling for the entire Granite Renderer * Separate paint and style, and use clip stack to handle fullscreen clear * Cleanup paint key and pipeline construction * Improve paint color handling and fix + If step solid color is used, the color of KeyContext will no longer be calculated since it's not used. + If shader is constant color, reduce to solid color. + Fix the case where step solid color is not used and the paint is solid color, then it should be in destination space. * Use a single paint block across multiple draws, by grouping pipeline analysis, pipeline building, and pipeline data gathering together * Separate image view and image proxy classes * Fix root of a cubic equation * Fix fragment textures should come before geometry textures * The sorting algorithm was changed from TimSort to BM Quicksort * Improve pipeline descriptor and fixes * LowerLeft surface origin is now partially supported (mainly for OpenGL backbuffer) * Add all enum values to ShaderDataType * Allow RRect effect producing hard edge and coverage AA * Fix RecordingContext destructor * Refactor GPU hierarchical clipping (see source code for details) * Fix Matrix.mapPoints() * Add more bounds check methods to Rect2* * Replace small-size zeroing at 4-byte aligned addresses with a custom loop * Avoid per-pipeline uniform deduplication + Avoid redundant deduplication while allowing uniform data to be shared across pipelines, simplify the logic. + Additionally, the size of BindBufferRange is the size of uniform block, not the padded stride. * Refactor buffer allocator for all kinds of buffers + All the get*Pointer methods now return BufferSubAllocator, it allows the caller to perform multiple sub-allocations and also allows multiple buffers to be suballocated in parallel (for UBO). + It also allows specifying an extra alignment offset for the start of each new vertex format, so that buffer binding offsets can be expressed using baseInstance and baseVertex, reducing the number of buffer bindings. + For mesh draw, we use the concepts of append and static data to simplify. Improvements to UBO allocation, exception handling. * Rework TextureDataGatherer for new render code * Fix error shader * Fix Matrix4 constructor * Add NullSurface for mock tests * Remove UByte index type * Merge geometry definition and remove SimpleShape * Fix degenerate line stroke and stroke-stroke is not drawn * Use jacobian matrix to compute device-space gradient for AA-box * Fix VertexInputLayout masks * Improve GL error handling * Switching from JNI to "Java JNI" (FFM) to call GL/GLES functions * Allow extensions in GLSL codegen, and fix usage of extensions * Allow creating devices from GL 3.2 contexts; use the reported GLSL version (Many optimizations and fixes are not listed above) ##### Resources This version introduces a brand-new resources system, many APIs have been added, but are not listed below. * Add Resources.getImage() * Remove the runtime exception thrown by Resources * Ensure thread safety for all Resources API classes, fix several thread-safety issues in resources (AOSP bug) * Add SeekableInputStreamChannel, allow seeking in ZIP instead of stream reading * Optimize & fix decoding image from buffers * Optimize image MIME type decoding * Optimize decoding images from streams and paths * New methods to declare/add resources at runtime * Add Asset, AssetsProvider for retrieving assets * Allow multiple packages and namespaces in Resources ##### Widget * Fix TabLayout.setSelectedTabIndicatorColor() behavior * Add StaggeredGridView * Fix initial columns of GridView not AUTO_FIT * Fix ImageView bounds not set when layout unchanged and view detached * Fix RTL is not resolved in GridView children (AOSP bug) * Optimize GridView.onMeasure, avoid unnecessary measurement * Fix some views in AbsListView never get detached (AOSP bug) ##### Text * Link clicking on selectable text now checks actual cursor position * Optimize MeasuredParagraph.buildForStaticLayout in edge cases * Refactor PrecomputedText, many improvements and bug fixes (AOSP bug) * Optimize SpannableString.equals() * Add indexOfSpan map to SpannableStringInternal for performance, also null out reference in removeSpan() to avoid leaks (AOSP bug) * No longer truncate leading/trailing spaces in TextUtils.ellipsize * Avoid leaks in TextView's spannable (AOSP bug), also check text object identity to match DynamicLayout * Refactor BoringLayout + The legacy BoringLayout only works for LTR only text, now BoringLayout works for bidirectional text. And no longer work for simple Spanned text. It heavily depends on ShapedText API now, so you can think it's a high level wrapper over ShapedText. The bidi, ellipsizer, and text blob building are inlined in the BoringLayout class to improve performance. * Add method to TextPaint to obtain total advance and per-cluster advances for a bidi run * Add create flags for text array version of ShapedText * Add constructor for ShapedText to create layout from icu.Bidi * Move drawTextRun() from TextUtils to Canvas * Merge leading/trailing margin in text.Layout, improve performance * Fix Bidi heuristics being incorrect in some cases * Move all font options from Paint to TextPaint subclass * Move TabStops to internal package, and public TextPaint.getInternalPaint() * Move GetChars and TextRunShaper to graphics package * Fix concurrency issue of EmojiFont * Optimize several methods for measuring and shaping text * Add LineBreakConfig to text.DynamicLayout * Optimize GraphemeBreak and cursor movement * Fix cluster advance computation, use font-dependent clusters (HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS), instead of Unicode GCB * Improve toString(), substring() performance for several classes * Improve SpannedString and SpannableString constructor performance; always ignore NoCopySpan; never copy PARAGRAPH span if not at paragraph boundary * Fix SpannableString visibility #### Arc3D Shader Compiler * Keep tracking scope-level symbol table in AST nodes, also make scope level for switch block #### Build * Maven artifact is changed from `icyllis.modernui:ModernUI-Core` to `dev.icyllis:modernui-core` * Update dokka build * Add junit platform * Gradle 8.8 -> 9.3.1 * Java 17 -> 25 (for compiler and building, the target JVM is still 17) * Kotlin 1.9.22 -> 2.3.20 (compiler and stblib) * Update to Arc3D 2026.2.0 (Arc3D is now modular) * Use Arc3D from central maven instead of local clone * Use ModernUI from central maven instead of composite build
3.13.0.1 Release 06.06.2026

Modern UI 3.13.0.1 (Fabric)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.13.0.1 #### NeoForge Extension 1.21.1 * (1.21.1 only) Fix modern tooltip crash with ImmediatelyFast's hud_batching in HUD * (1.21.1, Forge and NeoForge only) Fix crash in datagen * (1.21.6+ only) Change surface origin to upper left to match Arc3D * Remove modifier restriction on arrow key movement on tooltip * Add API to register/create additional resources to the ModernUI resource system at runtime * Fix multiple mixin disable flags not work together * Add open SimpleScreen and MenuScreen classes to custom ModernUI screens * Add ImageStore to retrieve Images from Minecraft resources, fix possible threading issues * Add global "Theme" option for all ModernUI screens * Add "Linear Metrics" font option for the core framework * Add "Reset to Default" option to the context menu for all preferences * Miscellaneous UI improvements #### 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 * (1.21.1 only) Fix certain EditBox elements from the Create mod erroneously rendered with text shadows * (1.21.1 only) Add support for Font overriding in EditBox * (1.21.1 only) Fix EditBox hint text not shown * Fix line end spaces not stripped when breaking lines, also fix modern tooltip positioning * Fix color emoji with obfuscated style not render #### Core Framework ##### View * Add real CONTROL modifier, and update keybinds for macOS * Fix Toast.cancel() * Add method to set camera distance explicitly * Add methods to change ambient/spot shadow color * Allow shadow casting in reveal animations * Fix several dirty area accumulation issues that can cause ghosting ##### Graphics * Ensure running on LWJGL 3.4.2 and binary-compatible with LWJGL 3.3.1 * Update Vulkan initialization * Add Bitmap.subImage() to create sub-image view * Add methods to describe alpha type of Bitmap and Image exactly * Remove unsupported bitmap formats, deprecate RGBX_8888 (use new setOpaque() instead) * Add validation to Bitmap.wrap(), and handle 0 rowBytes/stride * ShapeDrawable's outline no longer relies on stroke opacity * Migrate everything to wide gamut, extended range colors * Refactor Drawable's alpha to float type, add wide color setters * Add dithering to ripple effects * Remove the RGB space and range restriction on Bitmap.setColorSpace(), this means you can use extended range colors (like extended Display P3) and CIE XYZ colors * Allow Image.createTextureFromBitmap to be called from non-UI threads * Fix race between Bitmap.close() and Bitmap.clone() * Refactor image (GPU) cache; fix thread-safety of Image.clone(); texture-backed image is no longer budgeted * Add new color packing format, which encodes extended range colors in 16-bit floating-point, in extended color space, using relative colorimetric rendering intent * Refactor several int color getters to long colors * Deprecate BMP and TGA support, will be removed in future * Optimize saving bitmap to path * Final refactor for ColorSpace-related classes * Add more Vulkan caps, and add caps dump * Add option to indicate that zero-to-one depth is used in OpenGL * Improve error logging * Simplify builtin color space access, fix some bugs * Refactor ColorTransform and color space methods * Introduce separate ChromaticAdaptation class * Change ColorSpace.Model to int constants * Update renderer test, Vulkan renderer * Complete the entire Vulkan rendering backend * ColorShader now takes original ColorSpace to handle absolute colorimetric intent * Make computeByteSize() return 0 for invalid row bytes * Add XYZ D65 space * Add Oklab support * Improve color space transformation + Optimize XYZ<->RGB conversion + Always uses abs response to handle extended range + Simplify RGB<->RGB transform computation (skip PCS) + Fix absolute rendering intent behavior * Remove references to Unsafe, now Arc3D no longer needs Unsafe * A8 and BW conversions no longer directly use Unsafe * Pixmap clear no longer uses Unsafe * Update usage of image offset=0 * No longer use Unsafe for copyImage() * Update pixel op and mem tests * Update low-precision load/store ops + No longer use LUT for 565 expansion, use only integer arithmetic, add 10-bit store ops * Change dither method from bayer matrix to R2 sequence * Replace Unsafe load ops * Replace Unsafe store ops with separate u and hb versions + Note that addr for heap is interpreted as byte offset to the first element, without array base offset anymore * Add validation for pixel memory address * Add unclamped/extended ColorSpace transformations * Avoid unnecessary object create for non-strict subset ImageShader * Relax range check in MathUtil, many checks are too strict, relax to handle unsigned integers * Add analytic 2D signed distance field generator * Fix unaligned memory access in building vertices * Add channel-based IIO stream impl * Add background compilation executor option * Workaround macOS OpenGL driver bug on depth-only draw pass * Add method to wrap backend image for interop * Use persistent mapping for Vulkan, similar to OpenGL, non-readback and host-visible * Ensure RenderPassSet is deduplicated and kept alive * Limit max engine max vertex bindings to 8 * Add option to limit max in-flight command buffers * Update surface create parameters * Add support for hairline text * Switch to Marlin Stroker and deprecate old PathStroker * Introduce immutable path data, and refactor Path class * Add Record canvas and BigRecord * Fix byte offset in Bitmap batch pixel copy operations * Add command buffer destructor * Delete many legacy usages of format * Add Vulkan graphics pipeline * Fix optimal pixel transfer buffer alignment * Rework the whole OpenGL texture format table (make it Vulkan-like) * Add more command buffer parameters * Add Vulkan queue management * Finish Vulkan descriptor set management * Implement Vulkan memory barrier management * Add RenderPassDesc to pipeline builder * Migrate to descriptor set layout for pipeline desc * Add immutable samplers to vkSetLayout * Sampler are now global objects * Add Vulkan buffer * Fix OpenGL readback buffer should not host-coherent or persistently mapped * Distinguish between BufferBindInfo and BufferSliceInfo * Add Vulkan sampler * Add Vulkan command buffer * Add Vulkan render pass management * Add Vulkan image view management * Add Vulkan framebuffers and framebuffer cache * Introduce consistent way to describe render pass and framebuffer + Clarify the usage of placeholder attachments and apply them in GL backend. + Fix some bugs in VulkanRenderPass creation. * Add full Vulkan render pass creation * Add definition for Vulkan compatible render passes * Move actual pipeline destruction to executing thread to ensure thread safety * Purge framebuffers only when needed instead of every frame * Refactor FramebufferDesc and RenderPassDesc * Add engine-level image formats * Add methods for wide gamut and extended range colors * Fix all the alignment issues for pixel operations * Support some new bitmap formats: GRAY_16, GRAY_ALPHA_1616, RGB_161616 * Add method to create Vulkan descriptor pool * Fix unaligned access in vectorized setPixel/Bitmap.clear() * Add Vulkan descriptor set pool * Add descriptor set layout * Fix ARGB mask swizzle, and reserve SDF mask type * Implement occlusion culling for the entire Granite Renderer * Separate paint and style, and use clip stack to handle fullscreen clear * Cleanup paint key and pipeline construction * Improve paint color handling and fix + If step solid color is used, the color of KeyContext will no longer be calculated since it's not used. + If shader is constant color, reduce to solid color. + Fix the case where step solid color is not used and the paint is solid color, then it should be in destination space. * Use a single paint block across multiple draws, by grouping pipeline analysis, pipeline building, and pipeline data gathering together * Separate image view and image proxy classes * Fix root of a cubic equation * Fix fragment textures should come before geometry textures * The sorting algorithm was changed from TimSort to BM Quicksort * Improve pipeline descriptor and fixes * LowerLeft surface origin is now partially supported (mainly for OpenGL backbuffer) * Add all enum values to ShaderDataType * Allow RRect effect producing hard edge and coverage AA * Fix RecordingContext destructor * Refactor GPU hierarchical clipping (see source code for details) * Fix Matrix.mapPoints() * Add more bounds check methods to Rect2* * Replace small-size zeroing at 4-byte aligned addresses with a custom loop * Avoid per-pipeline uniform deduplication + Avoid redundant deduplication while allowing uniform data to be shared across pipelines, simplify the logic. + Additionally, the size of BindBufferRange is the size of uniform block, not the padded stride. * Refactor buffer allocator for all kinds of buffers + All the get*Pointer methods now return BufferSubAllocator, it allows the caller to perform multiple sub-allocations and also allows multiple buffers to be suballocated in parallel (for UBO). + It also allows specifying an extra alignment offset for the start of each new vertex format, so that buffer binding offsets can be expressed using baseInstance and baseVertex, reducing the number of buffer bindings. + For mesh draw, we use the concepts of append and static data to simplify. Improvements to UBO allocation, exception handling. * Rework TextureDataGatherer for new render code * Fix error shader * Fix Matrix4 constructor * Add NullSurface for mock tests * Remove UByte index type * Merge geometry definition and remove SimpleShape * Fix degenerate line stroke and stroke-stroke is not drawn * Use jacobian matrix to compute device-space gradient for AA-box * Fix VertexInputLayout masks * Improve GL error handling * Switching from JNI to "Java JNI" (FFM) to call GL/GLES functions * Allow extensions in GLSL codegen, and fix usage of extensions * Allow creating devices from GL 3.2 contexts; use the reported GLSL version (Many optimizations and fixes are not listed above) ##### Resources This version introduces a brand-new resources system, many APIs have been added, but are not listed below. * Add Resources.getImage() * Remove the runtime exception thrown by Resources * Ensure thread safety for all Resources API classes, fix several thread-safety issues in resources (AOSP bug) * Add SeekableInputStreamChannel, allow seeking in ZIP instead of stream reading * Optimize & fix decoding image from buffers * Optimize image MIME type decoding * Optimize decoding images from streams and paths * New methods to declare/add resources at runtime * Add Asset, AssetsProvider for retrieving assets * Allow multiple packages and namespaces in Resources ##### Widget * Fix TabLayout.setSelectedTabIndicatorColor() behavior * Add StaggeredGridView * Fix initial columns of GridView not AUTO_FIT * Fix ImageView bounds not set when layout unchanged and view detached * Fix RTL is not resolved in GridView children (AOSP bug) * Optimize GridView.onMeasure, avoid unnecessary measurement * Fix some views in AbsListView never get detached (AOSP bug) ##### Text * Link clicking on selectable text now checks actual cursor position * Optimize MeasuredParagraph.buildForStaticLayout in edge cases * Refactor PrecomputedText, many improvements and bug fixes (AOSP bug) * Optimize SpannableString.equals() * Add indexOfSpan map to SpannableStringInternal for performance, also null out reference in removeSpan() to avoid leaks (AOSP bug) * No longer truncate leading/trailing spaces in TextUtils.ellipsize * Avoid leaks in TextView's spannable (AOSP bug), also check text object identity to match DynamicLayout * Refactor BoringLayout + The legacy BoringLayout only works for LTR only text, now BoringLayout works for bidirectional text. And no longer work for simple Spanned text. It heavily depends on ShapedText API now, so you can think it's a high level wrapper over ShapedText. The bidi, ellipsizer, and text blob building are inlined in the BoringLayout class to improve performance. * Add method to TextPaint to obtain total advance and per-cluster advances for a bidi run * Add create flags for text array version of ShapedText * Add constructor for ShapedText to create layout from icu.Bidi * Move drawTextRun() from TextUtils to Canvas * Merge leading/trailing margin in text.Layout, improve performance * Fix Bidi heuristics being incorrect in some cases * Move all font options from Paint to TextPaint subclass * Move TabStops to internal package, and public TextPaint.getInternalPaint() * Move GetChars and TextRunShaper to graphics package * Fix concurrency issue of EmojiFont * Optimize several methods for measuring and shaping text * Add LineBreakConfig to text.DynamicLayout * Optimize GraphemeBreak and cursor movement * Fix cluster advance computation, use font-dependent clusters (HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS), instead of Unicode GCB * Improve toString(), substring() performance for several classes * Improve SpannedString and SpannableString constructor performance; always ignore NoCopySpan; never copy PARAGRAPH span if not at paragraph boundary * Fix SpannableString visibility #### Arc3D Shader Compiler * Keep tracking scope-level symbol table in AST nodes, also make scope level for switch block #### Build * Maven artifact is changed from `icyllis.modernui:ModernUI-Core` to `dev.icyllis:modernui-core` * Update dokka build * Add junit platform * Gradle 8.8 -> 9.3.1 * Java 17 -> 25 (for compiler and building, the target JVM is still 17) * Kotlin 1.9.22 -> 2.3.20 (compiler and stblib) * Update to Arc3D 2026.2.0 (Arc3D is now modular) * Use Arc3D from central maven instead of local clone * Use ModernUI from central maven instead of composite build
3.13.0.1 Release 06.06.2026

Modern UI 3.13.0.1 (Forge)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.13.0.1 #### NeoForge Extension 1.21.1 * (1.21.1 only) Fix modern tooltip crash with ImmediatelyFast's hud_batching in HUD * (1.21.1, Forge and NeoForge only) Fix crash in datagen * (1.21.6+ only) Change surface origin to upper left to match Arc3D * Remove modifier restriction on arrow key movement on tooltip * Add API to register/create additional resources to the ModernUI resource system at runtime * Fix multiple mixin disable flags not work together * Add open SimpleScreen and MenuScreen classes to custom ModernUI screens * Add ImageStore to retrieve Images from Minecraft resources, fix possible threading issues * Add global "Theme" option for all ModernUI screens * Add "Linear Metrics" font option for the core framework * Add "Reset to Default" option to the context menu for all preferences * Miscellaneous UI improvements #### 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 * (1.21.1 only) Fix certain EditBox elements from the Create mod erroneously rendered with text shadows * (1.21.1 only) Add support for Font overriding in EditBox * (1.21.1 only) Fix EditBox hint text not shown * Fix line end spaces not stripped when breaking lines, also fix modern tooltip positioning * Fix color emoji with obfuscated style not render #### Core Framework ##### View * Add real CONTROL modifier, and update keybinds for macOS * Fix Toast.cancel() * Add method to set camera distance explicitly * Add methods to change ambient/spot shadow color * Allow shadow casting in reveal animations * Fix several dirty area accumulation issues that can cause ghosting ##### Graphics * Ensure running on LWJGL 3.4.2 and binary-compatible with LWJGL 3.3.1 * Update Vulkan initialization * Add Bitmap.subImage() to create sub-image view * Add methods to describe alpha type of Bitmap and Image exactly * Remove unsupported bitmap formats, deprecate RGBX_8888 (use new setOpaque() instead) * Add validation to Bitmap.wrap(), and handle 0 rowBytes/stride * ShapeDrawable's outline no longer relies on stroke opacity * Migrate everything to wide gamut, extended range colors * Refactor Drawable's alpha to float type, add wide color setters * Add dithering to ripple effects * Remove the RGB space and range restriction on Bitmap.setColorSpace(), this means you can use extended range colors (like extended Display P3) and CIE XYZ colors * Allow Image.createTextureFromBitmap to be called from non-UI threads * Fix race between Bitmap.close() and Bitmap.clone() * Refactor image (GPU) cache; fix thread-safety of Image.clone(); texture-backed image is no longer budgeted * Add new color packing format, which encodes extended range colors in 16-bit floating-point, in extended color space, using relative colorimetric rendering intent * Refactor several int color getters to long colors * Deprecate BMP and TGA support, will be removed in future * Optimize saving bitmap to path * Final refactor for ColorSpace-related classes * Add more Vulkan caps, and add caps dump * Add option to indicate that zero-to-one depth is used in OpenGL * Improve error logging * Simplify builtin color space access, fix some bugs * Refactor ColorTransform and color space methods * Introduce separate ChromaticAdaptation class * Change ColorSpace.Model to int constants * Update renderer test, Vulkan renderer * Complete the entire Vulkan rendering backend * ColorShader now takes original ColorSpace to handle absolute colorimetric intent * Make computeByteSize() return 0 for invalid row bytes * Add XYZ D65 space * Add Oklab support * Improve color space transformation + Optimize XYZ<->RGB conversion + Always uses abs response to handle extended range + Simplify RGB<->RGB transform computation (skip PCS) + Fix absolute rendering intent behavior * Remove references to Unsafe, now Arc3D no longer needs Unsafe * A8 and BW conversions no longer directly use Unsafe * Pixmap clear no longer uses Unsafe * Update usage of image offset=0 * No longer use Unsafe for copyImage() * Update pixel op and mem tests * Update low-precision load/store ops + No longer use LUT for 565 expansion, use only integer arithmetic, add 10-bit store ops * Change dither method from bayer matrix to R2 sequence * Replace Unsafe load ops * Replace Unsafe store ops with separate u and hb versions + Note that addr for heap is interpreted as byte offset to the first element, without array base offset anymore * Add validation for pixel memory address * Add unclamped/extended ColorSpace transformations * Avoid unnecessary object create for non-strict subset ImageShader * Relax range check in MathUtil, many checks are too strict, relax to handle unsigned integers * Add analytic 2D signed distance field generator * Fix unaligned memory access in building vertices * Add channel-based IIO stream impl * Add background compilation executor option * Workaround macOS OpenGL driver bug on depth-only draw pass * Add method to wrap backend image for interop * Use persistent mapping for Vulkan, similar to OpenGL, non-readback and host-visible * Ensure RenderPassSet is deduplicated and kept alive * Limit max engine max vertex bindings to 8 * Add option to limit max in-flight command buffers * Update surface create parameters * Add support for hairline text * Switch to Marlin Stroker and deprecate old PathStroker * Introduce immutable path data, and refactor Path class * Add Record canvas and BigRecord * Fix byte offset in Bitmap batch pixel copy operations * Add command buffer destructor * Delete many legacy usages of format * Add Vulkan graphics pipeline * Fix optimal pixel transfer buffer alignment * Rework the whole OpenGL texture format table (make it Vulkan-like) * Add more command buffer parameters * Add Vulkan queue management * Finish Vulkan descriptor set management * Implement Vulkan memory barrier management * Add RenderPassDesc to pipeline builder * Migrate to descriptor set layout for pipeline desc * Add immutable samplers to vkSetLayout * Sampler are now global objects * Add Vulkan buffer * Fix OpenGL readback buffer should not host-coherent or persistently mapped * Distinguish between BufferBindInfo and BufferSliceInfo * Add Vulkan sampler * Add Vulkan command buffer * Add Vulkan render pass management * Add Vulkan image view management * Add Vulkan framebuffers and framebuffer cache * Introduce consistent way to describe render pass and framebuffer + Clarify the usage of placeholder attachments and apply them in GL backend. + Fix some bugs in VulkanRenderPass creation. * Add full Vulkan render pass creation * Add definition for Vulkan compatible render passes * Move actual pipeline destruction to executing thread to ensure thread safety * Purge framebuffers only when needed instead of every frame * Refactor FramebufferDesc and RenderPassDesc * Add engine-level image formats * Add methods for wide gamut and extended range colors * Fix all the alignment issues for pixel operations * Support some new bitmap formats: GRAY_16, GRAY_ALPHA_1616, RGB_161616 * Add method to create Vulkan descriptor pool * Fix unaligned access in vectorized setPixel/Bitmap.clear() * Add Vulkan descriptor set pool * Add descriptor set layout * Fix ARGB mask swizzle, and reserve SDF mask type * Implement occlusion culling for the entire Granite Renderer * Separate paint and style, and use clip stack to handle fullscreen clear * Cleanup paint key and pipeline construction * Improve paint color handling and fix + If step solid color is used, the color of KeyContext will no longer be calculated since it's not used. + If shader is constant color, reduce to solid color. + Fix the case where step solid color is not used and the paint is solid color, then it should be in destination space. * Use a single paint block across multiple draws, by grouping pipeline analysis, pipeline building, and pipeline data gathering together * Separate image view and image proxy classes * Fix root of a cubic equation * Fix fragment textures should come before geometry textures * The sorting algorithm was changed from TimSort to BM Quicksort * Improve pipeline descriptor and fixes * LowerLeft surface origin is now partially supported (mainly for OpenGL backbuffer) * Add all enum values to ShaderDataType * Allow RRect effect producing hard edge and coverage AA * Fix RecordingContext destructor * Refactor GPU hierarchical clipping (see source code for details) * Fix Matrix.mapPoints() * Add more bounds check methods to Rect2* * Replace small-size zeroing at 4-byte aligned addresses with a custom loop * Avoid per-pipeline uniform deduplication + Avoid redundant deduplication while allowing uniform data to be shared across pipelines, simplify the logic. + Additionally, the size of BindBufferRange is the size of uniform block, not the padded stride. * Refactor buffer allocator for all kinds of buffers + All the get*Pointer methods now return BufferSubAllocator, it allows the caller to perform multiple sub-allocations and also allows multiple buffers to be suballocated in parallel (for UBO). + It also allows specifying an extra alignment offset for the start of each new vertex format, so that buffer binding offsets can be expressed using baseInstance and baseVertex, reducing the number of buffer bindings. + For mesh draw, we use the concepts of append and static data to simplify. Improvements to UBO allocation, exception handling. * Rework TextureDataGatherer for new render code * Fix error shader * Fix Matrix4 constructor * Add NullSurface for mock tests * Remove UByte index type * Merge geometry definition and remove SimpleShape * Fix degenerate line stroke and stroke-stroke is not drawn * Use jacobian matrix to compute device-space gradient for AA-box * Fix VertexInputLayout masks * Improve GL error handling * Switching from JNI to "Java JNI" (FFM) to call GL/GLES functions * Allow extensions in GLSL codegen, and fix usage of extensions * Allow creating devices from GL 3.2 contexts; use the reported GLSL version (Many optimizations and fixes are not listed above) ##### Resources This version introduces a brand-new resources system, many APIs have been added, but are not listed below. * Add Resources.getImage() * Remove the runtime exception thrown by Resources * Ensure thread safety for all Resources API classes, fix several thread-safety issues in resources (AOSP bug) * Add SeekableInputStreamChannel, allow seeking in ZIP instead of stream reading * Optimize & fix decoding image from buffers * Optimize image MIME type decoding * Optimize decoding images from streams and paths * New methods to declare/add resources at runtime * Add Asset, AssetsProvider for retrieving assets * Allow multiple packages and namespaces in Resources ##### Widget * Fix TabLayout.setSelectedTabIndicatorColor() behavior * Add StaggeredGridView * Fix initial columns of GridView not AUTO_FIT * Fix ImageView bounds not set when layout unchanged and view detached * Fix RTL is not resolved in GridView children (AOSP bug) * Optimize GridView.onMeasure, avoid unnecessary measurement * Fix some views in AbsListView never get detached (AOSP bug) ##### Text * Link clicking on selectable text now checks actual cursor position * Optimize MeasuredParagraph.buildForStaticLayout in edge cases * Refactor PrecomputedText, many improvements and bug fixes (AOSP bug) * Optimize SpannableString.equals() * Add indexOfSpan map to SpannableStringInternal for performance, also null out reference in removeSpan() to avoid leaks (AOSP bug) * No longer truncate leading/trailing spaces in TextUtils.ellipsize * Avoid leaks in TextView's spannable (AOSP bug), also check text object identity to match DynamicLayout * Refactor BoringLayout + The legacy BoringLayout only works for LTR only text, now BoringLayout works for bidirectional text. And no longer work for simple Spanned text. It heavily depends on ShapedText API now, so you can think it's a high level wrapper over ShapedText. The bidi, ellipsizer, and text blob building are inlined in the BoringLayout class to improve performance. * Add method to TextPaint to obtain total advance and per-cluster advances for a bidi run * Add create flags for text array version of ShapedText * Add constructor for ShapedText to create layout from icu.Bidi * Move drawTextRun() from TextUtils to Canvas * Merge leading/trailing margin in text.Layout, improve performance * Fix Bidi heuristics being incorrect in some cases * Move all font options from Paint to TextPaint subclass * Move TabStops to internal package, and public TextPaint.getInternalPaint() * Move GetChars and TextRunShaper to graphics package * Fix concurrency issue of EmojiFont * Optimize several methods for measuring and shaping text * Add LineBreakConfig to text.DynamicLayout * Optimize GraphemeBreak and cursor movement * Fix cluster advance computation, use font-dependent clusters (HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS), instead of Unicode GCB * Improve toString(), substring() performance for several classes * Improve SpannedString and SpannableString constructor performance; always ignore NoCopySpan; never copy PARAGRAPH span if not at paragraph boundary * Fix SpannableString visibility #### Arc3D Shader Compiler * Keep tracking scope-level symbol table in AST nodes, also make scope level for switch block #### Build * Maven artifact is changed from `icyllis.modernui:ModernUI-Core` to `dev.icyllis:modernui-core` * Update dokka build * Add junit platform * Gradle 8.8 -> 9.3.1 * Java 17 -> 25 (for compiler and building, the target JVM is still 17) * Kotlin 1.9.22 -> 2.3.20 (compiler and stblib) * Update to Arc3D 2026.2.0 (Arc3D is now modular) * Use Arc3D from central maven instead of local clone * Use ModernUI from central maven instead of composite build
3.13.0.1 Release 06.06.2026

Modern UI 3.13.0.1 (NeoForge)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.13.0.1 #### NeoForge Extension 1.21.1 * (1.21.1 only) Fix modern tooltip crash with ImmediatelyFast's hud_batching in HUD * (1.21.1, Forge and NeoForge only) Fix crash in datagen * (1.21.6+ only) Change surface origin to upper left to match Arc3D * Remove modifier restriction on arrow key movement on tooltip * Add API to register/create additional resources to the ModernUI resource system at runtime * Fix multiple mixin disable flags not work together * Add open SimpleScreen and MenuScreen classes to custom ModernUI screens * Add ImageStore to retrieve Images from Minecraft resources, fix possible threading issues * Add global "Theme" option for all ModernUI screens * Add "Linear Metrics" font option for the core framework * Add "Reset to Default" option to the context menu for all preferences * Miscellaneous UI improvements #### 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 * (1.21.1 only) Fix certain EditBox elements from the Create mod erroneously rendered with text shadows * (1.21.1 only) Add support for Font overriding in EditBox * (1.21.1 only) Fix EditBox hint text not shown * Fix line end spaces not stripped when breaking lines, also fix modern tooltip positioning * Fix color emoji with obfuscated style not render #### Core Framework ##### View * Add real CONTROL modifier, and update keybinds for macOS * Fix Toast.cancel() * Add method to set camera distance explicitly * Add methods to change ambient/spot shadow color * Allow shadow casting in reveal animations * Fix several dirty area accumulation issues that can cause ghosting ##### Graphics * Ensure running on LWJGL 3.4.2 and binary-compatible with LWJGL 3.3.1 * Update Vulkan initialization * Add Bitmap.subImage() to create sub-image view * Add methods to describe alpha type of Bitmap and Image exactly * Remove unsupported bitmap formats, deprecate RGBX_8888 (use new setOpaque() instead) * Add validation to Bitmap.wrap(), and handle 0 rowBytes/stride * ShapeDrawable's outline no longer relies on stroke opacity * Migrate everything to wide gamut, extended range colors * Refactor Drawable's alpha to float type, add wide color setters * Add dithering to ripple effects * Remove the RGB space and range restriction on Bitmap.setColorSpace(), this means you can use extended range colors (like extended Display P3) and CIE XYZ colors * Allow Image.createTextureFromBitmap to be called from non-UI threads * Fix race between Bitmap.close() and Bitmap.clone() * Refactor image (GPU) cache; fix thread-safety of Image.clone(); texture-backed image is no longer budgeted * Add new color packing format, which encodes extended range colors in 16-bit floating-point, in extended color space, using relative colorimetric rendering intent * Refactor several int color getters to long colors * Deprecate BMP and TGA support, will be removed in future * Optimize saving bitmap to path * Final refactor for ColorSpace-related classes * Add more Vulkan caps, and add caps dump * Add option to indicate that zero-to-one depth is used in OpenGL * Improve error logging * Simplify builtin color space access, fix some bugs * Refactor ColorTransform and color space methods * Introduce separate ChromaticAdaptation class * Change ColorSpace.Model to int constants * Update renderer test, Vulkan renderer * Complete the entire Vulkan rendering backend * ColorShader now takes original ColorSpace to handle absolute colorimetric intent * Make computeByteSize() return 0 for invalid row bytes * Add XYZ D65 space * Add Oklab support * Improve color space transformation + Optimize XYZ<->RGB conversion + Always uses abs response to handle extended range + Simplify RGB<->RGB transform computation (skip PCS) + Fix absolute rendering intent behavior * Remove references to Unsafe, now Arc3D no longer needs Unsafe * A8 and BW conversions no longer directly use Unsafe * Pixmap clear no longer uses Unsafe * Update usage of image offset=0 * No longer use Unsafe for copyImage() * Update pixel op and mem tests * Update low-precision load/store ops + No longer use LUT for 565 expansion, use only integer arithmetic, add 10-bit store ops * Change dither method from bayer matrix to R2 sequence * Replace Unsafe load ops * Replace Unsafe store ops with separate u and hb versions + Note that addr for heap is interpreted as byte offset to the first element, without array base offset anymore * Add validation for pixel memory address * Add unclamped/extended ColorSpace transformations * Avoid unnecessary object create for non-strict subset ImageShader * Relax range check in MathUtil, many checks are too strict, relax to handle unsigned integers * Add analytic 2D signed distance field generator * Fix unaligned memory access in building vertices * Add channel-based IIO stream impl * Add background compilation executor option * Workaround macOS OpenGL driver bug on depth-only draw pass * Add method to wrap backend image for interop * Use persistent mapping for Vulkan, similar to OpenGL, non-readback and host-visible * Ensure RenderPassSet is deduplicated and kept alive * Limit max engine max vertex bindings to 8 * Add option to limit max in-flight command buffers * Update surface create parameters * Add support for hairline text * Switch to Marlin Stroker and deprecate old PathStroker * Introduce immutable path data, and refactor Path class * Add Record canvas and BigRecord * Fix byte offset in Bitmap batch pixel copy operations * Add command buffer destructor * Delete many legacy usages of format * Add Vulkan graphics pipeline * Fix optimal pixel transfer buffer alignment * Rework the whole OpenGL texture format table (make it Vulkan-like) * Add more command buffer parameters * Add Vulkan queue management * Finish Vulkan descriptor set management * Implement Vulkan memory barrier management * Add RenderPassDesc to pipeline builder * Migrate to descriptor set layout for pipeline desc * Add immutable samplers to vkSetLayout * Sampler are now global objects * Add Vulkan buffer * Fix OpenGL readback buffer should not host-coherent or persistently mapped * Distinguish between BufferBindInfo and BufferSliceInfo * Add Vulkan sampler * Add Vulkan command buffer * Add Vulkan render pass management * Add Vulkan image view management * Add Vulkan framebuffers and framebuffer cache * Introduce consistent way to describe render pass and framebuffer + Clarify the usage of placeholder attachments and apply them in GL backend. + Fix some bugs in VulkanRenderPass creation. * Add full Vulkan render pass creation * Add definition for Vulkan compatible render passes * Move actual pipeline destruction to executing thread to ensure thread safety * Purge framebuffers only when needed instead of every frame * Refactor FramebufferDesc and RenderPassDesc * Add engine-level image formats * Add methods for wide gamut and extended range colors * Fix all the alignment issues for pixel operations * Support some new bitmap formats: GRAY_16, GRAY_ALPHA_1616, RGB_161616 * Add method to create Vulkan descriptor pool * Fix unaligned access in vectorized setPixel/Bitmap.clear() * Add Vulkan descriptor set pool * Add descriptor set layout * Fix ARGB mask swizzle, and reserve SDF mask type * Implement occlusion culling for the entire Granite Renderer * Separate paint and style, and use clip stack to handle fullscreen clear * Cleanup paint key and pipeline construction * Improve paint color handling and fix + If step solid color is used, the color of KeyContext will no longer be calculated since it's not used. + If shader is constant color, reduce to solid color. + Fix the case where step solid color is not used and the paint is solid color, then it should be in destination space. * Use a single paint block across multiple draws, by grouping pipeline analysis, pipeline building, and pipeline data gathering together * Separate image view and image proxy classes * Fix root of a cubic equation * Fix fragment textures should come before geometry textures * The sorting algorithm was changed from TimSort to BM Quicksort * Improve pipeline descriptor and fixes * LowerLeft surface origin is now partially supported (mainly for OpenGL backbuffer) * Add all enum values to ShaderDataType * Allow RRect effect producing hard edge and coverage AA * Fix RecordingContext destructor * Refactor GPU hierarchical clipping (see source code for details) * Fix Matrix.mapPoints() * Add more bounds check methods to Rect2* * Replace small-size zeroing at 4-byte aligned addresses with a custom loop * Avoid per-pipeline uniform deduplication + Avoid redundant deduplication while allowing uniform data to be shared across pipelines, simplify the logic. + Additionally, the size of BindBufferRange is the size of uniform block, not the padded stride. * Refactor buffer allocator for all kinds of buffers + All the get*Pointer methods now return BufferSubAllocator, it allows the caller to perform multiple sub-allocations and also allows multiple buffers to be suballocated in parallel (for UBO). + It also allows specifying an extra alignment offset for the start of each new vertex format, so that buffer binding offsets can be expressed using baseInstance and baseVertex, reducing the number of buffer bindings. + For mesh draw, we use the concepts of append and static data to simplify. Improvements to UBO allocation, exception handling. * Rework TextureDataGatherer for new render code * Fix error shader * Fix Matrix4 constructor * Add NullSurface for mock tests * Remove UByte index type * Merge geometry definition and remove SimpleShape * Fix degenerate line stroke and stroke-stroke is not drawn * Use jacobian matrix to compute device-space gradient for AA-box * Fix VertexInputLayout masks * Improve GL error handling * Switching from JNI to "Java JNI" (FFM) to call GL/GLES functions * Allow extensions in GLSL codegen, and fix usage of extensions * Allow creating devices from GL 3.2 contexts; use the reported GLSL version (Many optimizations and fixes are not listed above) ##### Resources This version introduces a brand-new resources system, many APIs have been added, but are not listed below. * Add Resources.getImage() * Remove the runtime exception thrown by Resources * Ensure thread safety for all Resources API classes, fix several thread-safety issues in resources (AOSP bug) * Add SeekableInputStreamChannel, allow seeking in ZIP instead of stream reading * Optimize & fix decoding image from buffers * Optimize image MIME type decoding * Optimize decoding images from streams and paths * New methods to declare/add resources at runtime * Add Asset, AssetsProvider for retrieving assets * Allow multiple packages and namespaces in Resources ##### Widget * Fix TabLayout.setSelectedTabIndicatorColor() behavior * Add StaggeredGridView * Fix initial columns of GridView not AUTO_FIT * Fix ImageView bounds not set when layout unchanged and view detached * Fix RTL is not resolved in GridView children (AOSP bug) * Optimize GridView.onMeasure, avoid unnecessary measurement * Fix some views in AbsListView never get detached (AOSP bug) ##### Text * Link clicking on selectable text now checks actual cursor position * Optimize MeasuredParagraph.buildForStaticLayout in edge cases * Refactor PrecomputedText, many improvements and bug fixes (AOSP bug) * Optimize SpannableString.equals() * Add indexOfSpan map to SpannableStringInternal for performance, also null out reference in removeSpan() to avoid leaks (AOSP bug) * No longer truncate leading/trailing spaces in TextUtils.ellipsize * Avoid leaks in TextView's spannable (AOSP bug), also check text object identity to match DynamicLayout * Refactor BoringLayout + The legacy BoringLayout only works for LTR only text, now BoringLayout works for bidirectional text. And no longer work for simple Spanned text. It heavily depends on ShapedText API now, so you can think it's a high level wrapper over ShapedText. The bidi, ellipsizer, and text blob building are inlined in the BoringLayout class to improve performance. * Add method to TextPaint to obtain total advance and per-cluster advances for a bidi run * Add create flags for text array version of ShapedText * Add constructor for ShapedText to create layout from icu.Bidi * Move drawTextRun() from TextUtils to Canvas * Merge leading/trailing margin in text.Layout, improve performance * Fix Bidi heuristics being incorrect in some cases * Move all font options from Paint to TextPaint subclass * Move TabStops to internal package, and public TextPaint.getInternalPaint() * Move GetChars and TextRunShaper to graphics package * Fix concurrency issue of EmojiFont * Optimize several methods for measuring and shaping text * Add LineBreakConfig to text.DynamicLayout * Optimize GraphemeBreak and cursor movement * Fix cluster advance computation, use font-dependent clusters (HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS), instead of Unicode GCB * Improve toString(), substring() performance for several classes * Improve SpannedString and SpannableString constructor performance; always ignore NoCopySpan; never copy PARAGRAPH span if not at paragraph boundary * Fix SpannableString visibility #### Arc3D Shader Compiler * Keep tracking scope-level symbol table in AST nodes, also make scope level for switch block #### Build * Maven artifact is changed from `icyllis.modernui:ModernUI-Core` to `dev.icyllis:modernui-core` * Update dokka build * Add junit platform * Gradle 8.8 -> 9.3.1 * Java 17 -> 25 (for compiler and building, the target JVM is still 17) * Kotlin 1.9.22 -> 2.3.20 (compiler and stblib) * Update to Arc3D 2026.2.0 (Arc3D is now modular) * Use Arc3D from central maven instead of local clone * Use ModernUI from central maven instead of composite build
3.12.0.4 Release 23.09.2025

Modern UI 3.12.0.4 (Fabric)

Підтримувані версії Minecraft
1.21.6 1.21.7 1.21.8
Завантажувачі / Платформи
fabric
Показати зміни
### Modern UI 3.12.0.4 (3.12.0.3, 3.12.0.2, 3.12.0.1) Changes from * 3.11.1.11 → 3.12.0.4 for Minecraft 1.21.6-1.21.8 * 3.11.1.11 → 3.12.0.3 for Minecraft 1.21.4 * 3.11.1.9 → 3.12.0.2 for Minecraft 1.21-1.21.1 * 3.11.1.6 → 3.12.0.1 for Minecraft 1.20-1.20.1 #### NeoForge Extension 1.21.8 (1.21.4, 1.21.1) * (1.21.8 only) Fully port to 1.21.8 and adapt to the technical changes in vanilla * (1.21.8, NeoForge only) On Windows/Linux, you have to manually set `config/fml.toml > earlyWindowControl` to false; otherwise, your game will crash on the first launch — though you can simply restart it to resolve the issue; this will finally be resolved in MC 1.21.9+ * (1.21.8 only) Enable blur effect by default even when OptiFine is installed * (1.21.8 only) Delay applying the configuration until just before the game finishes loading * (1.21.8 only) Deprecate method for drawing rounded rectangles in `ExtendedGuiGraphics`, replaced by gradient rectangles * (1.21.8 only) `MinecraftSurfaceView.Renderer` no longer clips to the bounds of draw by default * (1.21.8 only) Modern rounded tooltip is applied at most once per frame; subsequent tooltips in the same frame are non-rounded * (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.8 (1.21.4, 1.21.1, 1.20.1) * (1.21.8 only) Migrate to new EventBus * Equivalent to NeoForge version, except where noted #### Fabric Extension 1.21.8 (1.21.4, 1.21.1, 1.20.1) * Functionally equivalent to NeoForge version, except where noted #### Modern Text Engine 1.21.8 (1.21.4, 1.21.1, 1.20.1) * (1.21.8 only) Port to 1.21.8 * (1.21.8 only) Ensure that the shadow layer and non-shadow layer of obfuscated text in GUI use the same glyphs. * (1.21.8 only) Separate and simplify text rendering logic for world and GUI: in world, always use SDF rendering; in the GUI, determine density and font size from CTM while ensuring pixel-aligned rendering. * (1.21.8 only) Delay font atlas resizing to the end of the frame * (1.21.8 only) `GlyphManager` is no longer initialized when Modern Text Engine is disabled * 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 3.12.0 * 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
3.12.0.4 Release 23.09.2025

Modern UI 3.12.0.4 (Forge)

Підтримувані версії Minecraft
1.21.6 1.21.7 1.21.8
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.12.0.4 (3.12.0.3, 3.12.0.2, 3.12.0.1) Changes from * 3.11.1.11 → 3.12.0.4 for Minecraft 1.21.6-1.21.8 * 3.11.1.11 → 3.12.0.3 for Minecraft 1.21.4 * 3.11.1.9 → 3.12.0.2 for Minecraft 1.21-1.21.1 * 3.11.1.6 → 3.12.0.1 for Minecraft 1.20-1.20.1 #### NeoForge Extension 1.21.8 (1.21.4, 1.21.1) * (1.21.8 only) Fully port to 1.21.8 and adapt to the technical changes in vanilla * (1.21.8, NeoForge only) On Windows/Linux, you have to manually set `config/fml.toml > earlyWindowControl` to false; otherwise, your game will crash on the first launch — though you can simply restart it to resolve the issue; this will finally be resolved in MC 1.21.9+ * (1.21.8 only) Enable blur effect by default even when OptiFine is installed * (1.21.8 only) Delay applying the configuration until just before the game finishes loading * (1.21.8 only) Deprecate method for drawing rounded rectangles in `ExtendedGuiGraphics`, replaced by gradient rectangles * (1.21.8 only) `MinecraftSurfaceView.Renderer` no longer clips to the bounds of draw by default * (1.21.8 only) Modern rounded tooltip is applied at most once per frame; subsequent tooltips in the same frame are non-rounded * (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.8 (1.21.4, 1.21.1, 1.20.1) * (1.21.8 only) Migrate to new EventBus * Equivalent to NeoForge version, except where noted #### Fabric Extension 1.21.8 (1.21.4, 1.21.1, 1.20.1) * Functionally equivalent to NeoForge version, except where noted #### Modern Text Engine 1.21.8 (1.21.4, 1.21.1, 1.20.1) * (1.21.8 only) Port to 1.21.8 * (1.21.8 only) Ensure that the shadow layer and non-shadow layer of obfuscated text in GUI use the same glyphs. * (1.21.8 only) Separate and simplify text rendering logic for world and GUI: in world, always use SDF rendering; in the GUI, determine density and font size from CTM while ensuring pixel-aligned rendering. * (1.21.8 only) Delay font atlas resizing to the end of the frame * (1.21.8 only) `GlyphManager` is no longer initialized when Modern Text Engine is disabled * 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 3.12.0 * 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
3.12.0.4 Release 23.09.2025

Modern UI 3.12.0.4 (NeoForge)

Підтримувані версії Minecraft
1.21.6 1.21.7 1.21.8
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.12.0.4 (3.12.0.3, 3.12.0.2, 3.12.0.1) Changes from * 3.11.1.11 → 3.12.0.4 for Minecraft 1.21.6-1.21.8 * 3.11.1.11 → 3.12.0.3 for Minecraft 1.21.4 * 3.11.1.9 → 3.12.0.2 for Minecraft 1.21-1.21.1 * 3.11.1.6 → 3.12.0.1 for Minecraft 1.20-1.20.1 #### NeoForge Extension 1.21.8 (1.21.4, 1.21.1) * (1.21.8 only) Fully port to 1.21.8 and adapt to the technical changes in vanilla * (1.21.8, NeoForge only) On Windows/Linux, you have to manually set `config/fml.toml > earlyWindowControl` to false; otherwise, your game will crash on the first launch — though you can simply restart it to resolve the issue; this will finally be resolved in MC 1.21.9+ * (1.21.8 only) Enable blur effect by default even when OptiFine is installed * (1.21.8 only) Delay applying the configuration until just before the game finishes loading * (1.21.8 only) Deprecate method for drawing rounded rectangles in `ExtendedGuiGraphics`, replaced by gradient rectangles * (1.21.8 only) `MinecraftSurfaceView.Renderer` no longer clips to the bounds of draw by default * (1.21.8 only) Modern rounded tooltip is applied at most once per frame; subsequent tooltips in the same frame are non-rounded * (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.8 (1.21.4, 1.21.1, 1.20.1) * (1.21.8 only) Migrate to new EventBus * Equivalent to NeoForge version, except where noted #### Fabric Extension 1.21.8 (1.21.4, 1.21.1, 1.20.1) * Functionally equivalent to NeoForge version, except where noted #### Modern Text Engine 1.21.8 (1.21.4, 1.21.1, 1.20.1) * (1.21.8 only) Port to 1.21.8 * (1.21.8 only) Ensure that the shadow layer and non-shadow layer of obfuscated text in GUI use the same glyphs. * (1.21.8 only) Separate and simplify text rendering logic for world and GUI: in world, always use SDF rendering; in the GUI, determine density and font size from CTM while ensuring pixel-aligned rendering. * (1.21.8 only) Delay font atlas resizing to the end of the frame * (1.21.8 only) `GlyphManager` is no longer initialized when Modern Text Engine is disabled * 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 3.12.0 * 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
3.12.0.3 Release 02.09.2025

Modern UI 3.12.0.3 (Fabric)

Підтримувані версії Minecraft
1.21.4
Завантажувачі / Платформи
fabric
Показати зміни
### 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
3.12.0.3 Release 02.09.2025

Modern UI 3.12.0.3 (Forge)

Підтримувані версії Minecraft
1.21.4
Завантажувачі / Платформи
forge
Показати зміни
### 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
3.12.0.3 Release 02.09.2025

Modern UI 3.12.0.3 (NeoForge)

Підтримувані версії Minecraft
1.21.4
Завантажувачі / Платформи
neoforge
Показати зміни
### 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
3.12.0.2 Release 02.09.2025

Modern UI 3.12.0.2 (Fabric)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### 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
3.12.0.2 Release 02.09.2025

Modern UI 3.12.0.2 (Forge)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
forge
Показати зміни
### 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
3.12.0.2 Release 02.09.2025

Modern UI 3.12.0.2 (NeoForge)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
neoforge
Показати зміни
### 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
3.12.0.1 Release 02.09.2025

Modern UI 3.12.0.1 (Fabric)

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### 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
3.12.0.1 Release 02.09.2025

Modern UI 3.12.0.1 (Forge)

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
forge neoforge
Показати зміни
### 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
3.11.1.11 Release 16.02.2025

Modern UI 3.11.1.11 (Fabric)

Підтримувані версії Minecraft
1.21.4
Завантажувачі / Платформи
fabric
Показати зміни
### 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
3.11.1.11 Release 16.02.2025

Modern UI 3.11.1.11 (Forge)

Підтримувані версії Minecraft
1.21.4
Завантажувачі / Платформи
forge
Показати зміни
### 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
3.11.1.11 Release 16.02.2025

Modern UI 3.11.1.11 (NeoForge)

Підтримувані версії Minecraft
1.21.4
Завантажувачі / Платформи
neoforge
Показати зміни
### 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
3.11.1.10 Release 16.02.2025

Modern UI 3.11.1.10 (Fabric)

Підтримувані версії Minecraft
1.21.3
Завантажувачі / Платформи
fabric quilt
Показати зміни
### 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
3.11.1.10 Release 16.02.2025

Modern UI 3.11.1.10 (Forge)

Підтримувані версії Minecraft
1.21.3
Завантажувачі / Платформи
forge
Показати зміни
### 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
3.11.1.10 Release 16.02.2025

Modern UI 3.11.1.10 (NeoForge)

Підтримувані версії Minecraft
1.21.2 1.21.3
Завантажувачі / Платформи
neoforge
Показати зміни
### 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
3.11.1.9 Release 16.02.2025

Modern UI 3.11.1.9 (Fabric)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### 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
3.11.1.9 Release 16.02.2025

Modern UI 3.11.1.9 (Forge)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
forge
Показати зміни
### 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
3.11.1.9 Release 16.02.2025

Modern UI 3.11.1.9 (NeoForge)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
neoforge
Показати зміни
### 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
3.11.1.8 Release 16.02.2025

Modern UI 3.11.1.8 (Fabric)

Підтримувані версії Minecraft
1.20.6
Завантажувачі / Платформи
fabric quilt
Показати зміни
### 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
3.11.1.8 Release 16.02.2025

Modern UI 3.11.1.8 (Forge)

Підтримувані версії Minecraft
1.20.6
Завантажувачі / Платформи
forge
Показати зміни
### 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
3.11.1.8 Release 16.02.2025

Modern UI 3.11.1.8 (NeoForge)

Підтримувані версії Minecraft
1.20.6
Завантажувачі / Платформи
neoforge
Показати зміни
### 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
3.11.1.7 Release 16.02.2025

Modern UI 3.11.1.7 (Fabric)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.11.1.7 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.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.20.4 * Equivalent to NeoForge version #### Fabric Extension 1.20.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.20.4 * Fix the compatibility with polytone * 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
3.11.1.7 Release 16.02.2025

Modern UI 3.11.1.7 (Forge)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.11.1.7 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.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.20.4 * Equivalent to NeoForge version #### Fabric Extension 1.20.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.20.4 * Fix the compatibility with polytone * 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
3.11.1.7 Release 16.02.2025

Modern UI 3.11.1.7 (NeoForge)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.11.1.7 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.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.20.4 * Equivalent to NeoForge version #### Fabric Extension 1.20.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.20.4 * Fix the compatibility with polytone * 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
3.11.1.6 Release 16.02.2025

Modern UI 3.11.1.6 (Fabric)

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.11.1.6 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. #### Forge Extension 1.20.1 / NeoForge Extension 1.20.1 * Suppress indirect crashes due to broken mod state * Ignore translation-z for exact tooltip positioning * Fix multiple tooltip colors not working #### Fabric Extension 1.20.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.20.1 * Fix the compatibility with polytone * 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
3.11.1.6 Release 16.02.2025

Modern UI 3.11.1.6 (Forge)

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
forge neoforge
Показати зміни
### Modern UI 3.11.1.6 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. #### Forge Extension 1.20.1 / NeoForge Extension 1.20.1 * Suppress indirect crashes due to broken mod state * Ignore translation-z for exact tooltip positioning * Fix multiple tooltip colors not working #### Fabric Extension 1.20.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.20.1 * Fix the compatibility with polytone * 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
3.11.1.5 Release 10.12.2024

Modern UI 3.11.1.5 (Fabric)

Підтримувані версії Minecraft
1.21.3
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.11.1.5 #### NeoForge Extension 1.21.3 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Vanilla blur now follow vanilla menu blurriness option * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix game loading complete sound "DING" not working * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Change the first font loading behavior to ensure bundled fonts are loaded * Some other fixes, improvements and optimizations #### Forge Extension 1.21.3 * Equivalent to NeoForge version #### Fabric Extension 1.21.3 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.21.3 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.1.5 Release 10.12.2024

Modern UI 3.11.1.5 (Forge)

Підтримувані версії Minecraft
1.21.3
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.11.1.5 #### NeoForge Extension 1.21.3 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Vanilla blur now follow vanilla menu blurriness option * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix game loading complete sound "DING" not working * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Change the first font loading behavior to ensure bundled fonts are loaded * Some other fixes, improvements and optimizations #### Forge Extension 1.21.3 * Equivalent to NeoForge version #### Fabric Extension 1.21.3 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.21.3 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.1.5 Release 10.12.2024

Modern UI 3.11.1.5 (NeoForge)

Підтримувані версії Minecraft
1.21.2 1.21.3
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.11.1.5 #### NeoForge Extension 1.21.3 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Vanilla blur now follow vanilla menu blurriness option * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix game loading complete sound "DING" not working * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Change the first font loading behavior to ensure bundled fonts are loaded * Some other fixes, improvements and optimizations #### Forge Extension 1.21.3 * Equivalent to NeoForge version #### Fabric Extension 1.21.3 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.21.3 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.1.4 Release 09.12.2024

Modern UI 3.11.1.4 (Fabric)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.11.1.4 #### NeoForge Extension 1.21.1 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Vanilla blur now follow vanilla menu blurriness option * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix game loading complete sound "DING" not working * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Change the first font loading behavior to ensure bundled fonts are loaded * Some other fixes, improvements and optimizations #### Forge Extension 1.21.1 * Equivalent to NeoForge version #### Fabric Extension 1.21.1 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.21.1 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.1.4 Release 09.12.2024

Modern UI 3.11.1.4 (Forge)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.11.1.4 #### NeoForge Extension 1.21.1 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Vanilla blur now follow vanilla menu blurriness option * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix game loading complete sound "DING" not working * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Change the first font loading behavior to ensure bundled fonts are loaded * Some other fixes, improvements and optimizations #### Forge Extension 1.21.1 * Equivalent to NeoForge version #### Fabric Extension 1.21.1 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.21.1 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.1.4 Release 09.12.2024

Modern UI 3.11.1.4 (NeoForge)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.11.1.4 #### NeoForge Extension 1.21.1 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Vanilla blur now follow vanilla menu blurriness option * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix game loading complete sound "DING" not working * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Change the first font loading behavior to ensure bundled fonts are loaded * Some other fixes, improvements and optimizations #### Forge Extension 1.21.1 * Equivalent to NeoForge version #### Fabric Extension 1.21.1 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.21.1 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.1.3 Release 09.12.2024

Modern UI 3.11.1.3 (Fabric)

Підтримувані версії Minecraft
1.20.6
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.11.1.3 #### NeoForge Extension 1.20.6 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Vanilla blur now follow vanilla menu blurriness option * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix game loading complete sound "DING" not working * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Some other fixes, improvements and optimizations #### Forge Extension 1.20.6 * Equivalent to NeoForge version #### Fabric Extension 1.20.6 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.20.6 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.1.3 Release 09.12.2024

Modern UI 3.11.1.3 (Forge)

Підтримувані версії Minecraft
1.20.6
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.11.1.3 #### NeoForge Extension 1.20.6 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Vanilla blur now follow vanilla menu blurriness option * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix game loading complete sound "DING" not working * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Some other fixes, improvements and optimizations #### Forge Extension 1.20.6 * Equivalent to NeoForge version #### Fabric Extension 1.20.6 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.20.6 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.1.3 Release 09.12.2024

Modern UI 3.11.1.3 (NeoForge)

Підтримувані версії Minecraft
1.20.6
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.11.1.3 #### NeoForge Extension 1.20.6 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Vanilla blur now follow vanilla menu blurriness option * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix game loading complete sound "DING" not working * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Some other fixes, improvements and optimizations #### Forge Extension 1.20.6 * Equivalent to NeoForge version #### Fabric Extension 1.20.6 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.20.6 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.1.2 Release 09.12.2024

Modern UI 3.11.1.2 (Fabric)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.11.1.2 #### NeoForge Extension 1.20.4 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix game loading complete sound "DING" not working * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Some other fixes, improvements and optimizations #### Forge Extension 1.20.4 * Equivalent to NeoForge version #### Fabric Extension 1.20.4 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.20.4 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.1.2 Release 09.12.2024

Modern UI 3.11.1.2 (Forge)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.11.1.2 #### NeoForge Extension 1.20.4 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix game loading complete sound "DING" not working * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Some other fixes, improvements and optimizations #### Forge Extension 1.20.4 * Equivalent to NeoForge version #### Fabric Extension 1.20.4 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.20.4 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.1.2 Release 09.12.2024

Modern UI 3.11.1.2 (NeoForge)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.11.1.2 #### NeoForge Extension 1.20.4 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix game loading complete sound "DING" not working * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Some other fixes, improvements and optimizations #### Forge Extension 1.20.4 * Equivalent to NeoForge version #### Fabric Extension 1.20.4 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.20.4 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.1.1 Release 09.12.2024

Modern UI 3.11.1.1 (Fabric)

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.11.1.1 #### Forge Extension 1.20.1 / NeoForge Extension 1.20.1 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Some other fixes, improvements and optimizations #### Fabric Extension 1.20.1 * Fix game loading complete sound "DING" not working in some cases * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.1 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.1.1 Release 09.12.2024

Modern UI 3.11.1.1 (Forge)

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
forge neoforge
Показати зміни
### Modern UI 3.11.1.1 #### Forge Extension 1.20.1 / NeoForge Extension 1.20.1 * Add ExtendedGuiGraphics that allows other mods to draw rounded rectangles in vanilla-based GUI * Add emoji shortcode suggestions * Fix lifecycle bug, improve UI slider * Fix tooltip title break not showing up on certain GPUs * Update to Emoji 16.0 * Fix startup crash on dedicated server * Fix crash in PojavLauncher * Some other fixes, improvements and optimizations #### Fabric Extension 1.20.1 * Fix game loading complete sound "DING" not working in some cases * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.1 * Improve experience level rendering * Optimize white texture and text effect rendering * No longer register fonts in minecraft namespace - Use `"font":"modernui:jetbrains-mono-medium"` to change font * Set max allowed value for minPixelDensityForSDF to 10 * Use point sampling for A8 atlas by default as an optimization - We prefer computeDeviceFontSize and allowSDFTextIn2D, if some mods use `RenderSystem.getModelViewMatrix()` to scale, or either of the above two options is false, or Shaders are active, you can set linearSamplingA8Atlas to true to get better quality * Align text shadow to pixel grid to improve rendering, change default shadow offset to 0.5 * Further improve text rendering quality at any scale (such as for Mekanism, JourneyMap), you can disable this by setting computeDeviceFontSize to false * Rework obfuscated char rendering, improve quality, balance performance and compatibility * Fix a bug in handling hover and click events with styleAtWidth() (which can cause single char after SPACE char not clickable) * Fix font index is not unsigned during layout * Always create 256x256 font texture for bitmap font when using dedicated texture * Use 32-bit int for bearing X and bearing Y, allow large metrics for bitmap fonts #### Core Framework * Allow to use MENU key to open/close context menu * Add option to create mutable Bitmap from encoded data * Add method to explicitly release Shader * Add method to clear a rectangle of Bitmap to some color * Add a number of methods to access/convert pixels in bulk * Add Bitmap.getColor4f() and Bitmap.setColor4f() to access pixel value at high precision * Add Bitmap.setFormat() and Bitmap.setPremultiplied() to reinterpret existing pixel data with a new type * Add a large number of pixel formats for Bitmap, and add methods for converting between different pixel formats, these new formats can also be used to create textures * Add density for Image, allowing it to be scaled in ImageDrawable/ImageView/ImageSpan * Replace some copy-on-read list with copy-on-write list * Disable default scroll bar for AbsListView * Not force skipping OpenGL error checks, always print GLCaps * Add fallback method to compute font metrics * Add method to create Bitmap by wrapping an existing address * Remove dimension restriction on Bitmap creation * Temporarily fix lifecycle never reaches RESUME state * Many other optimizations and internal changes #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Change Shader and ColorFilter to sealed interface (and RefCounted) * Add Pixmap.clear() to clear a rectangle of pixels * Add low precision pixel load function * Add half float support * Add 16-bit per channel pixel format conversion * Optimize pixel ops and loops * Refactor color types and optimize pixel format conversion * Rename rowStride to rowBytes, limit rowBytes to Int32.Max * Add method for access/convert pixels in bulk * Engine - Update the initialization of image format capabilities - Improve caps dump - Add named methods to Swizzle * OpenGL backend - Workaround Intel driver bug that causes rendering broken - Improve GLCaps initialization - Some other internal changes * Shader Compiler - Add initializer list grammar - Add vertex_id and instance_id builtin for OpenGL - Update SPIR-V generator for sampler operations - Add array stride decoration for all supported types for type matching - Update descriptor set validation - Initially add switch statement parsing - Tons of updates on SPIR-V code generator, SPIR-V generation is now basically functional, but not yet used in production - Add struct declaration grammar - Add scoped block grammar * Granite Renderer - Add workaround when there is no clamp_to_border support - Split up universal blend shader snippet * Vulkan backend - Add full method to create VulkanImage - Refactor some class structures - Add VulkanImageView - Add VulkanMemoryAllocator to allocate memory for images/buffers - Some other internal changes * Some other internal changes
3.11.0.4 Release 15.09.2024

Modern UI 3.11.0.4 (Fabric)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.11.0.4 #### NeoForge Extension 1.21.1 * Change default typeface/font loading behavior * Add option to replace vanilla blur effect with Modern UI for optimization * Allow setting blur radius to 0 to disable blur * Add MinecraftSurfaceView to handle raw rendering calls * Ensure that all (native/GPU) resources are closed when the game exits * Slightly improve the Center UI * Fix a random crash when opening/closing UI frequently * Rework tooltip rendering - Add white noise to shadow - Add dithering to gradient colors - Use L1 norm instead of L2 norm for coverage antialiasing - Change shadow approximation method - Change default border radius and shadow alpha - Add new conditions for adding the extra space below tooltip title line - If the first three lines of the tooltip have different styles, we consider the first line as the title - Reduce the saturation of default tooltip colors * Allow using arrow keys to manually scroll the tooltip * Add small epsilon to text Z value for tooltip rendering to work around FP errors on some GPUs * Optimize blur effect - Use texelFetch instead of texture - Remove the additional blit pass and render target because we work around a Minecraft bug - Try to cache the shader program and temporary render target for blurring, and handle errors - Apply blur effect to the screen background instead of the world, just like Minecraft 1.21 * Migrate to new rendering pipeline #### Forge Extension 1.21.1 * Equivalent to NeoForge version #### Fabric Extension 1.21.1 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.21.1 * Add compatibility for bitmap fonts with custom text shader * Enable linear metrics and disable font hinting by default * Add config to change the minimum pixel density for SDF text * Fix some possible bugs on text rendering * Optimize text rendering - Add texture cleanup to FontResourceManager - Simplify text layout rendering code - Use Math.round for aligning pixels - Fix glyph info for FontSet compatibility * Rework and optimize bitmap font rendering - Try to stitch bitmap font into atlas - Try to discard bitmap fonts if they have negative metrics, transparent pixels, or huge metrics - Saturate glyph metrics for bitmap font - Fix hashCode and equals for correct de-duplication * Adjust lod bias for normal text shader * Adjust bitmap font to match vanilla behavior - Adjust glyph advance calculation * Adjust Unicode font loading behavior - Any reference to vanilla Unicode font and UNIHEX font will redirect to current ModernUI default typeface list instead of system fonts, except for Minecraft default font set * Fix text layout bug when finding style transitions * Allow caching the missing glyph to atlas * Adopt full text rendering technology from core framework * Fix line breaker that may output no lines and keep consistency with vanilla behavior - This fix a bug with IBE Editor * Fix text strike cache invalidation for FontSet compatibility - This fix a bug with Create * Add text layout dump in advanced options * Add a command for debugging line breaker * Add methods for debugging text engine * Work around AMD driver bug before GCN 1 * Change the initial size of A8 font atlas to 2048x2048 * Fix crash when compacting font atlas #### Core Framework * Enable linear text by default, increase layout cache limit * Delete render thread executor * Delete old text rendering code * Add GradientDrawable that draw shapes with gradient colors * Update/fix ShapeDrawable with latest rendering pipeline * Add set/get ColorFilter to Drawable and ImageView Add ImageView.setImageTintBlendMode * Rework ImageDrawable.setSrcRect() method * Update ImageDrawable with antialias, dither, filter, and tile modes * Add setter/getter to change blend mode for edge effect * Change default blend mode for EdgeEffect from SRC_OVER to SRC_ATOP * Fix Matrix.mapRect() * Fix EdgeEffect centerX * Improve text rendering * Add AngularGradient API and implementation * Add RadialGradient API and implementation * Add LinearGradient API and implementation * Add GradientShader API and implementation * Add new draw methods to Canvas class * Add BlendModeColorFilter and make it work finally, default blend mode for ImageDrawable is SRC_IN * Add ColorFilter class that can be installed on Paint * Refactor Image class and fix Image.close() issue * Refactor Paint class * Add ImageShader class * Add Shader class that can be installed on Paint * Add TextView.setTextSize() that specifies a unit, default is sp * Full migration to the new rendering pipeline, Arc3D Granite Renderer; delete old GLSurfaceCanvas * Avoid re-layout on window minimized, since framebuffer is destroyed and size is 0 * Deprecate Canvas.saveLayer() for future layer compositor and render tree #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Remove old usage of Image.getSurfaceFlags * Add Image.getUniqueID() and static methods to create raster images * Add utility NoDrawCanvas NWayCanvas and PaintFilterCanvas * Fix Matrix.mapRect() is not correct * Fix compiler error * Optimize text ops if subRunToDevice is translation-only and pipeline does not require local coords trivially * Optimize matrix computation for text ops * Replace Matrix4 in rendering code with Matrix * Make Matrix4() construct an identity matrix, and Matrix4.identity() return a read-only identity matrix * Fix TextBlobBuilder offsets not reset after build * Add RoundRect flatten methods * Improve NoPixelsDevice clip tracking, remove ConservativeClip * Add DrawAtlas.purge() to free unused pages * Add implementation for gradients in other interpolation color spaces and for all hue interpolation methods * Allow DrawAtlas to perform an immediate compact * Rename some classes and methods * Change the default uniform buffer block size to 32KB * Fix color array copy in Vertices::makeCopy * Fix persistent mapping check in GLBuffer * Temporarily enable RGB texture in OpenGL * Try to share vertex array objects in OpenGL backend * Expose resource cleanup API, also cleanup framebuffer cache and strike cache * Review ResourceCache, fix some legacy issues * Add support for alpha-only images, add missing Shaders shader implementation * Purge framebuffers immediately after one attachment was destroyed * Complete the compatibility with OpenGL 3.3 and OpenGL ES 3.0 * Improve texture and renderbuffer creation * Deprecate old Device methods * Fix OpenGL 3.3 and GLSL 330 compatibility * Finalize BoundsManager, add samples * Add plus_clamped, minus, and minus_clamped blend info * Remove 01 coverage in non-aa case * Add blend equation in GL backend * Mark old code as deprecated * Implement basic functionality for final blender, enable dual source blending * Fully implement BakedTextBlob and TextBlobCache for text rendering * Fix blend shader doesn't compile * Add TextBlob as an immutable container for glyph rendering * Rework FramebufferDesc, add FramebufferCache to manage framebuffers * Basically implement texture copy task, implement Surface.onNewImageSnapshot() * Add factory method to create Surface * Implement Device management * Invalidate atlases if RC.snap() failed * Fix several threading issues for OpenGL backend * Handle ColorFilter properly * Add BlendModeShader * Fix color space transformation on paint's solid color * Add primitive color blending and color space transform * Add blending with shader and paint's alpha * Fix color space transformation on BlendModeColorFilter * Add implementation of BlendModeShader and BlendModeColorFilter * Remove Geometry interface * Add Vertices class and Vertices step to drawVertices * Add shader implementation for 42 blend modes * Fix arg name for uniforms that start with no mangle prefix * Add StaticBufferManager and Buffer-to-Buffer copy task * Fix ImageUploadTask bug * Implement remaining important Canvas methods * Add and implement new Canvas methods in Device * Fix depth is perspective-correct; the depth should be preserved, then multiply it by w. * Fix bugs on arc shader with square end * Finish methods to create and draw GlyphRuns * Add method to set Matrix elements * Fix Matrix4.hashCode() for negative zero * Add Geometry.getBounds() to compute bounds * Improve ClipStack to compute several bounds * Fix stroke inflation radius computation for inner and outer stroke * Optimize draw when it does not depend on dst * Fix several issues on Device * Implement the creation of AtlasSubRuns * Add method to compute res scales if matrix has perspective * Fix AnalyticSimpleBoxStep instance data type * Add method to draw pie and chord, optimize shaders * Add rendering with three cap types of stroke arcs initially * Implement Atlas text op at low level, improve solid color fast path, trying to handle primitive color * Fix ScalerContext_JDK does not return a reliable glyph bounds * Fix DrawAtlas assertion and GlyphAtlasManager row stride * Fix Strike and ScalerContext bugs, remove stroke cap in StrikeDesc * Improve finite check and non-invertible matrix * Add RendererProvider to manage GeometryRenderers * Finish implementation of atlas management for draw ops and glyph atlas * Calculate the Path byte size when generating Glyph in Strike * Implement Strike, StrikeCache, and ScalerContext basically * Add Paint.setPathEffect(), add missing javadoc in Font * Add Path.transform(), add PathIterator.getFillRule() * Add GPU dithering implementation (no texture lookup) * Fix GLCaps.FormatInfo for RGB565 * Update Paint and related classes * Make Blender and ColorFilter strictly ref-counted * Add Shader.isConstant() * Fix Canvas.drawCircle() * Add Paint.setColor4f() * Fix Paint.setStrokeWidth() and Paint.setStrokeMiter() for NaN values * Remove Paint's SmoothWidth, MaskFilter and ImageFilter * Add PathEffect skeleton class * Fix several hashCode implementation for negative zeros * Update Paint.nothingToDraw() for more blend modes * Add more methods to RoundRect * Update Surface, Canvas, and related classes * Add Stroke, PathIterable, update PathStroker * Optimize shaders * Use short-circuit for transfer function * Use texelFetch for cubic shader, remove invImageSize uniform * Add perspective correction for local matrix shader * Extract color space transform from image shaders * Ensure subset sampling does not use mipmaps * Implement bicubic and strict subset sampling * Change AnalyticSimpleBoxStep to use L1 norm * Fix bug on GLImageDesc.equals() * Fix bug on uniform block layout * Change Paint constants and SamplingOptions, adding classes for text rendering * Done depth stencil work, fix several bugs * Add flipY and unorm clamp for PixelUtils * Implement LinearGradient, RadialGradient, AngularGradient * Fix bugs on ImageShader.makeSubset() * Fix bugs on premul & unpremul in some classes * Improve ColorSpace transform, add PixelUtils.convertPixels() * Add new ColorSpace transform shader * Fix GLSampler TEXTURE_WRAP_R is not set, add validation for SamplerDesc * Fix Matrix4.invert, add Matrix.toMatrix4, fix UniformDataGatherer for mat3 * Make Paint, PaintParams, and Draw classes closeable * Fix TextureTracker; rename gradient shaders * Optimize box shader * Accumulated updates on fragment effects and shading pipeline * Implement simple pixel upload using image-to-image copy * Add new Shader and ColorFilter classes * Rename PixelMap to Pixmap, PixelRef to Pixels * Switch slow JNI to PixelUtils.copyImage() for array to off-heap copy * Remove the offset parameter of Buffer.unmap() * Finish AnalyticSimpleBoxStep * Allow implicit conversion between numerics * Add DepthStencilSettings and BoundsManager, limit the number of geometry steps * Optimize vertex writer and uniform writer, optimize uniform data deduplication * Basically complete the Granite Renderer * Add geometry projection, solid color simplification * Finish RenderPassTask execution Fix scissor origin, initial scissor setup * Complete DrawPass's texture sampler binding * Add TextureDataGatherer, texture sampler binding and tracker * Add UniformDataGatherer and UniformDataCache * Fix Matrix4.store() * Add framebuffer creation and some tests * Some work on new PipelineBuilder * Update Buffer, GLBuffer, persistent mapping and so on * Accumulative updates for new renderer * Add method for updating clip draws * Update ClipStack * Improve vertex specification and buffer binding * Rename the project from 'Arc 3D' to 'Arc3D' * Commit all accumulative updates * Change BlendMode.apply() to static methods * Accumulative updates for the new pipeline * Attempt to refactor pipeline * Add more classes for new pipeline * Add frexp & ldexp impl * Some attempts on pipeline * Refactor GPU Image, RenderTarget, SurfaceProxy classes; remove Texture * Add Image and Framebuffer creation, add reusable framebuffers * Refactor GpuResource class hierarchy * Support GL_CONTEXT_LOST * Tons of work on Engine and OpenGL backend, not listed * Add pre-defined extensions to compile options * A lot of work on abstraction between GL3 and GLES3 * Initially add GLInterface for both OpenGL & OpenGL ES support * Add std140/std430 layout qualifiers, add include directive parsing * Abandon usage of GLSL ARB extensions that core in later versions * Fix GLCaps crash for some capabilities * Fix some bugs in preprocessing * Other improvements * Add new preprocessing methods, allow sub-range source * Add StringLiteral grammar, fix Whitespace grammar * Add FatalError to terminate compiler * Add identifier name length check (1024 at most) * Add benchmark between Arc3D and shaderc (glslang) * Update Lexer * Add directive grammar * Add 'using' grammar for type aliases * Add newline token, fix block comment grammar
3.11.0.4 Release 15.09.2024

Modern UI 3.11.0.4 (Forge)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.11.0.4 #### NeoForge Extension 1.21.1 * Change default typeface/font loading behavior * Add option to replace vanilla blur effect with Modern UI for optimization * Allow setting blur radius to 0 to disable blur * Add MinecraftSurfaceView to handle raw rendering calls * Ensure that all (native/GPU) resources are closed when the game exits * Slightly improve the Center UI * Fix a random crash when opening/closing UI frequently * Rework tooltip rendering - Add white noise to shadow - Add dithering to gradient colors - Use L1 norm instead of L2 norm for coverage antialiasing - Change shadow approximation method - Change default border radius and shadow alpha - Add new conditions for adding the extra space below tooltip title line - If the first three lines of the tooltip have different styles, we consider the first line as the title - Reduce the saturation of default tooltip colors * Allow using arrow keys to manually scroll the tooltip * Add small epsilon to text Z value for tooltip rendering to work around FP errors on some GPUs * Optimize blur effect - Use texelFetch instead of texture - Remove the additional blit pass and render target because we work around a Minecraft bug - Try to cache the shader program and temporary render target for blurring, and handle errors - Apply blur effect to the screen background instead of the world, just like Minecraft 1.21 * Migrate to new rendering pipeline #### Forge Extension 1.21.1 * Equivalent to NeoForge version #### Fabric Extension 1.21.1 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.21.1 * Add compatibility for bitmap fonts with custom text shader * Enable linear metrics and disable font hinting by default * Add config to change the minimum pixel density for SDF text * Fix some possible bugs on text rendering * Optimize text rendering - Add texture cleanup to FontResourceManager - Simplify text layout rendering code - Use Math.round for aligning pixels - Fix glyph info for FontSet compatibility * Rework and optimize bitmap font rendering - Try to stitch bitmap font into atlas - Try to discard bitmap fonts if they have negative metrics, transparent pixels, or huge metrics - Saturate glyph metrics for bitmap font - Fix hashCode and equals for correct de-duplication * Adjust lod bias for normal text shader * Adjust bitmap font to match vanilla behavior - Adjust glyph advance calculation * Adjust Unicode font loading behavior - Any reference to vanilla Unicode font and UNIHEX font will redirect to current ModernUI default typeface list instead of system fonts, except for Minecraft default font set * Fix text layout bug when finding style transitions * Allow caching the missing glyph to atlas * Adopt full text rendering technology from core framework * Fix line breaker that may output no lines and keep consistency with vanilla behavior - This fix a bug with IBE Editor * Fix text strike cache invalidation for FontSet compatibility - This fix a bug with Create * Add text layout dump in advanced options * Add a command for debugging line breaker * Add methods for debugging text engine * Work around AMD driver bug before GCN 1 * Change the initial size of A8 font atlas to 2048x2048 * Fix crash when compacting font atlas #### Core Framework * Enable linear text by default, increase layout cache limit * Delete render thread executor * Delete old text rendering code * Add GradientDrawable that draw shapes with gradient colors * Update/fix ShapeDrawable with latest rendering pipeline * Add set/get ColorFilter to Drawable and ImageView Add ImageView.setImageTintBlendMode * Rework ImageDrawable.setSrcRect() method * Update ImageDrawable with antialias, dither, filter, and tile modes * Add setter/getter to change blend mode for edge effect * Change default blend mode for EdgeEffect from SRC_OVER to SRC_ATOP * Fix Matrix.mapRect() * Fix EdgeEffect centerX * Improve text rendering * Add AngularGradient API and implementation * Add RadialGradient API and implementation * Add LinearGradient API and implementation * Add GradientShader API and implementation * Add new draw methods to Canvas class * Add BlendModeColorFilter and make it work finally, default blend mode for ImageDrawable is SRC_IN * Add ColorFilter class that can be installed on Paint * Refactor Image class and fix Image.close() issue * Refactor Paint class * Add ImageShader class * Add Shader class that can be installed on Paint * Add TextView.setTextSize() that specifies a unit, default is sp * Full migration to the new rendering pipeline, Arc3D Granite Renderer; delete old GLSurfaceCanvas * Avoid re-layout on window minimized, since framebuffer is destroyed and size is 0 * Deprecate Canvas.saveLayer() for future layer compositor and render tree #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Remove old usage of Image.getSurfaceFlags * Add Image.getUniqueID() and static methods to create raster images * Add utility NoDrawCanvas NWayCanvas and PaintFilterCanvas * Fix Matrix.mapRect() is not correct * Fix compiler error * Optimize text ops if subRunToDevice is translation-only and pipeline does not require local coords trivially * Optimize matrix computation for text ops * Replace Matrix4 in rendering code with Matrix * Make Matrix4() construct an identity matrix, and Matrix4.identity() return a read-only identity matrix * Fix TextBlobBuilder offsets not reset after build * Add RoundRect flatten methods * Improve NoPixelsDevice clip tracking, remove ConservativeClip * Add DrawAtlas.purge() to free unused pages * Add implementation for gradients in other interpolation color spaces and for all hue interpolation methods * Allow DrawAtlas to perform an immediate compact * Rename some classes and methods * Change the default uniform buffer block size to 32KB * Fix color array copy in Vertices::makeCopy * Fix persistent mapping check in GLBuffer * Temporarily enable RGB texture in OpenGL * Try to share vertex array objects in OpenGL backend * Expose resource cleanup API, also cleanup framebuffer cache and strike cache * Review ResourceCache, fix some legacy issues * Add support for alpha-only images, add missing Shaders shader implementation * Purge framebuffers immediately after one attachment was destroyed * Complete the compatibility with OpenGL 3.3 and OpenGL ES 3.0 * Improve texture and renderbuffer creation * Deprecate old Device methods * Fix OpenGL 3.3 and GLSL 330 compatibility * Finalize BoundsManager, add samples * Add plus_clamped, minus, and minus_clamped blend info * Remove 01 coverage in non-aa case * Add blend equation in GL backend * Mark old code as deprecated * Implement basic functionality for final blender, enable dual source blending * Fully implement BakedTextBlob and TextBlobCache for text rendering * Fix blend shader doesn't compile * Add TextBlob as an immutable container for glyph rendering * Rework FramebufferDesc, add FramebufferCache to manage framebuffers * Basically implement texture copy task, implement Surface.onNewImageSnapshot() * Add factory method to create Surface * Implement Device management * Invalidate atlases if RC.snap() failed * Fix several threading issues for OpenGL backend * Handle ColorFilter properly * Add BlendModeShader * Fix color space transformation on paint's solid color * Add primitive color blending and color space transform * Add blending with shader and paint's alpha * Fix color space transformation on BlendModeColorFilter * Add implementation of BlendModeShader and BlendModeColorFilter * Remove Geometry interface * Add Vertices class and Vertices step to drawVertices * Add shader implementation for 42 blend modes * Fix arg name for uniforms that start with no mangle prefix * Add StaticBufferManager and Buffer-to-Buffer copy task * Fix ImageUploadTask bug * Implement remaining important Canvas methods * Add and implement new Canvas methods in Device * Fix depth is perspective-correct; the depth should be preserved, then multiply it by w. * Fix bugs on arc shader with square end * Finish methods to create and draw GlyphRuns * Add method to set Matrix elements * Fix Matrix4.hashCode() for negative zero * Add Geometry.getBounds() to compute bounds * Improve ClipStack to compute several bounds * Fix stroke inflation radius computation for inner and outer stroke * Optimize draw when it does not depend on dst * Fix several issues on Device * Implement the creation of AtlasSubRuns * Add method to compute res scales if matrix has perspective * Fix AnalyticSimpleBoxStep instance data type * Add method to draw pie and chord, optimize shaders * Add rendering with three cap types of stroke arcs initially * Implement Atlas text op at low level, improve solid color fast path, trying to handle primitive color * Fix ScalerContext_JDK does not return a reliable glyph bounds * Fix DrawAtlas assertion and GlyphAtlasManager row stride * Fix Strike and ScalerContext bugs, remove stroke cap in StrikeDesc * Improve finite check and non-invertible matrix * Add RendererProvider to manage GeometryRenderers * Finish implementation of atlas management for draw ops and glyph atlas * Calculate the Path byte size when generating Glyph in Strike * Implement Strike, StrikeCache, and ScalerContext basically * Add Paint.setPathEffect(), add missing javadoc in Font * Add Path.transform(), add PathIterator.getFillRule() * Add GPU dithering implementation (no texture lookup) * Fix GLCaps.FormatInfo for RGB565 * Update Paint and related classes * Make Blender and ColorFilter strictly ref-counted * Add Shader.isConstant() * Fix Canvas.drawCircle() * Add Paint.setColor4f() * Fix Paint.setStrokeWidth() and Paint.setStrokeMiter() for NaN values * Remove Paint's SmoothWidth, MaskFilter and ImageFilter * Add PathEffect skeleton class * Fix several hashCode implementation for negative zeros * Update Paint.nothingToDraw() for more blend modes * Add more methods to RoundRect * Update Surface, Canvas, and related classes * Add Stroke, PathIterable, update PathStroker * Optimize shaders * Use short-circuit for transfer function * Use texelFetch for cubic shader, remove invImageSize uniform * Add perspective correction for local matrix shader * Extract color space transform from image shaders * Ensure subset sampling does not use mipmaps * Implement bicubic and strict subset sampling * Change AnalyticSimpleBoxStep to use L1 norm * Fix bug on GLImageDesc.equals() * Fix bug on uniform block layout * Change Paint constants and SamplingOptions, adding classes for text rendering * Done depth stencil work, fix several bugs * Add flipY and unorm clamp for PixelUtils * Implement LinearGradient, RadialGradient, AngularGradient * Fix bugs on ImageShader.makeSubset() * Fix bugs on premul & unpremul in some classes * Improve ColorSpace transform, add PixelUtils.convertPixels() * Add new ColorSpace transform shader * Fix GLSampler TEXTURE_WRAP_R is not set, add validation for SamplerDesc * Fix Matrix4.invert, add Matrix.toMatrix4, fix UniformDataGatherer for mat3 * Make Paint, PaintParams, and Draw classes closeable * Fix TextureTracker; rename gradient shaders * Optimize box shader * Accumulated updates on fragment effects and shading pipeline * Implement simple pixel upload using image-to-image copy * Add new Shader and ColorFilter classes * Rename PixelMap to Pixmap, PixelRef to Pixels * Switch slow JNI to PixelUtils.copyImage() for array to off-heap copy * Remove the offset parameter of Buffer.unmap() * Finish AnalyticSimpleBoxStep * Allow implicit conversion between numerics * Add DepthStencilSettings and BoundsManager, limit the number of geometry steps * Optimize vertex writer and uniform writer, optimize uniform data deduplication * Basically complete the Granite Renderer * Add geometry projection, solid color simplification * Finish RenderPassTask execution Fix scissor origin, initial scissor setup * Complete DrawPass's texture sampler binding * Add TextureDataGatherer, texture sampler binding and tracker * Add UniformDataGatherer and UniformDataCache * Fix Matrix4.store() * Add framebuffer creation and some tests * Some work on new PipelineBuilder * Update Buffer, GLBuffer, persistent mapping and so on * Accumulative updates for new renderer * Add method for updating clip draws * Update ClipStack * Improve vertex specification and buffer binding * Rename the project from 'Arc 3D' to 'Arc3D' * Commit all accumulative updates * Change BlendMode.apply() to static methods * Accumulative updates for the new pipeline * Attempt to refactor pipeline * Add more classes for new pipeline * Add frexp & ldexp impl * Some attempts on pipeline * Refactor GPU Image, RenderTarget, SurfaceProxy classes; remove Texture * Add Image and Framebuffer creation, add reusable framebuffers * Refactor GpuResource class hierarchy * Support GL_CONTEXT_LOST * Tons of work on Engine and OpenGL backend, not listed * Add pre-defined extensions to compile options * A lot of work on abstraction between GL3 and GLES3 * Initially add GLInterface for both OpenGL & OpenGL ES support * Add std140/std430 layout qualifiers, add include directive parsing * Abandon usage of GLSL ARB extensions that core in later versions * Fix GLCaps crash for some capabilities * Fix some bugs in preprocessing * Other improvements * Add new preprocessing methods, allow sub-range source * Add StringLiteral grammar, fix Whitespace grammar * Add FatalError to terminate compiler * Add identifier name length check (1024 at most) * Add benchmark between Arc3D and shaderc (glslang) * Update Lexer * Add directive grammar * Add 'using' grammar for type aliases * Add newline token, fix block comment grammar
3.11.0.4 Release 15.09.2024

Modern UI 3.11.0.4 (NeoForge)

Підтримувані версії Minecraft
1.21 1.21.1
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.11.0.4 #### NeoForge Extension 1.21.1 * Change default typeface/font loading behavior * Add option to replace vanilla blur effect with Modern UI for optimization * Allow setting blur radius to 0 to disable blur * Add MinecraftSurfaceView to handle raw rendering calls * Ensure that all (native/GPU) resources are closed when the game exits * Slightly improve the Center UI * Fix a random crash when opening/closing UI frequently * Rework tooltip rendering - Add white noise to shadow - Add dithering to gradient colors - Use L1 norm instead of L2 norm for coverage antialiasing - Change shadow approximation method - Change default border radius and shadow alpha - Add new conditions for adding the extra space below tooltip title line - If the first three lines of the tooltip have different styles, we consider the first line as the title - Reduce the saturation of default tooltip colors * Allow using arrow keys to manually scroll the tooltip * Add small epsilon to text Z value for tooltip rendering to work around FP errors on some GPUs * Optimize blur effect - Use texelFetch instead of texture - Remove the additional blit pass and render target because we work around a Minecraft bug - Try to cache the shader program and temporary render target for blurring, and handle errors - Apply blur effect to the screen background instead of the world, just like Minecraft 1.21 * Migrate to new rendering pipeline #### Forge Extension 1.21.1 * Equivalent to NeoForge version #### Fabric Extension 1.21.1 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.21.1 * Add compatibility for bitmap fonts with custom text shader * Enable linear metrics and disable font hinting by default * Add config to change the minimum pixel density for SDF text * Fix some possible bugs on text rendering * Optimize text rendering - Add texture cleanup to FontResourceManager - Simplify text layout rendering code - Use Math.round for aligning pixels - Fix glyph info for FontSet compatibility * Rework and optimize bitmap font rendering - Try to stitch bitmap font into atlas - Try to discard bitmap fonts if they have negative metrics, transparent pixels, or huge metrics - Saturate glyph metrics for bitmap font - Fix hashCode and equals for correct de-duplication * Adjust lod bias for normal text shader * Adjust bitmap font to match vanilla behavior - Adjust glyph advance calculation * Adjust Unicode font loading behavior - Any reference to vanilla Unicode font and UNIHEX font will redirect to current ModernUI default typeface list instead of system fonts, except for Minecraft default font set * Fix text layout bug when finding style transitions * Allow caching the missing glyph to atlas * Adopt full text rendering technology from core framework * Fix line breaker that may output no lines and keep consistency with vanilla behavior - This fix a bug with IBE Editor * Fix text strike cache invalidation for FontSet compatibility - This fix a bug with Create * Add text layout dump in advanced options * Add a command for debugging line breaker * Add methods for debugging text engine * Work around AMD driver bug before GCN 1 * Change the initial size of A8 font atlas to 2048x2048 * Fix crash when compacting font atlas #### Core Framework * Enable linear text by default, increase layout cache limit * Delete render thread executor * Delete old text rendering code * Add GradientDrawable that draw shapes with gradient colors * Update/fix ShapeDrawable with latest rendering pipeline * Add set/get ColorFilter to Drawable and ImageView Add ImageView.setImageTintBlendMode * Rework ImageDrawable.setSrcRect() method * Update ImageDrawable with antialias, dither, filter, and tile modes * Add setter/getter to change blend mode for edge effect * Change default blend mode for EdgeEffect from SRC_OVER to SRC_ATOP * Fix Matrix.mapRect() * Fix EdgeEffect centerX * Improve text rendering * Add AngularGradient API and implementation * Add RadialGradient API and implementation * Add LinearGradient API and implementation * Add GradientShader API and implementation * Add new draw methods to Canvas class * Add BlendModeColorFilter and make it work finally, default blend mode for ImageDrawable is SRC_IN * Add ColorFilter class that can be installed on Paint * Refactor Image class and fix Image.close() issue * Refactor Paint class * Add ImageShader class * Add Shader class that can be installed on Paint * Add TextView.setTextSize() that specifies a unit, default is sp * Full migration to the new rendering pipeline, Arc3D Granite Renderer; delete old GLSurfaceCanvas * Avoid re-layout on window minimized, since framebuffer is destroyed and size is 0 * Deprecate Canvas.saveLayer() for future layer compositor and render tree #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Remove old usage of Image.getSurfaceFlags * Add Image.getUniqueID() and static methods to create raster images * Add utility NoDrawCanvas NWayCanvas and PaintFilterCanvas * Fix Matrix.mapRect() is not correct * Fix compiler error * Optimize text ops if subRunToDevice is translation-only and pipeline does not require local coords trivially * Optimize matrix computation for text ops * Replace Matrix4 in rendering code with Matrix * Make Matrix4() construct an identity matrix, and Matrix4.identity() return a read-only identity matrix * Fix TextBlobBuilder offsets not reset after build * Add RoundRect flatten methods * Improve NoPixelsDevice clip tracking, remove ConservativeClip * Add DrawAtlas.purge() to free unused pages * Add implementation for gradients in other interpolation color spaces and for all hue interpolation methods * Allow DrawAtlas to perform an immediate compact * Rename some classes and methods * Change the default uniform buffer block size to 32KB * Fix color array copy in Vertices::makeCopy * Fix persistent mapping check in GLBuffer * Temporarily enable RGB texture in OpenGL * Try to share vertex array objects in OpenGL backend * Expose resource cleanup API, also cleanup framebuffer cache and strike cache * Review ResourceCache, fix some legacy issues * Add support for alpha-only images, add missing Shaders shader implementation * Purge framebuffers immediately after one attachment was destroyed * Complete the compatibility with OpenGL 3.3 and OpenGL ES 3.0 * Improve texture and renderbuffer creation * Deprecate old Device methods * Fix OpenGL 3.3 and GLSL 330 compatibility * Finalize BoundsManager, add samples * Add plus_clamped, minus, and minus_clamped blend info * Remove 01 coverage in non-aa case * Add blend equation in GL backend * Mark old code as deprecated * Implement basic functionality for final blender, enable dual source blending * Fully implement BakedTextBlob and TextBlobCache for text rendering * Fix blend shader doesn't compile * Add TextBlob as an immutable container for glyph rendering * Rework FramebufferDesc, add FramebufferCache to manage framebuffers * Basically implement texture copy task, implement Surface.onNewImageSnapshot() * Add factory method to create Surface * Implement Device management * Invalidate atlases if RC.snap() failed * Fix several threading issues for OpenGL backend * Handle ColorFilter properly * Add BlendModeShader * Fix color space transformation on paint's solid color * Add primitive color blending and color space transform * Add blending with shader and paint's alpha * Fix color space transformation on BlendModeColorFilter * Add implementation of BlendModeShader and BlendModeColorFilter * Remove Geometry interface * Add Vertices class and Vertices step to drawVertices * Add shader implementation for 42 blend modes * Fix arg name for uniforms that start with no mangle prefix * Add StaticBufferManager and Buffer-to-Buffer copy task * Fix ImageUploadTask bug * Implement remaining important Canvas methods * Add and implement new Canvas methods in Device * Fix depth is perspective-correct; the depth should be preserved, then multiply it by w. * Fix bugs on arc shader with square end * Finish methods to create and draw GlyphRuns * Add method to set Matrix elements * Fix Matrix4.hashCode() for negative zero * Add Geometry.getBounds() to compute bounds * Improve ClipStack to compute several bounds * Fix stroke inflation radius computation for inner and outer stroke * Optimize draw when it does not depend on dst * Fix several issues on Device * Implement the creation of AtlasSubRuns * Add method to compute res scales if matrix has perspective * Fix AnalyticSimpleBoxStep instance data type * Add method to draw pie and chord, optimize shaders * Add rendering with three cap types of stroke arcs initially * Implement Atlas text op at low level, improve solid color fast path, trying to handle primitive color * Fix ScalerContext_JDK does not return a reliable glyph bounds * Fix DrawAtlas assertion and GlyphAtlasManager row stride * Fix Strike and ScalerContext bugs, remove stroke cap in StrikeDesc * Improve finite check and non-invertible matrix * Add RendererProvider to manage GeometryRenderers * Finish implementation of atlas management for draw ops and glyph atlas * Calculate the Path byte size when generating Glyph in Strike * Implement Strike, StrikeCache, and ScalerContext basically * Add Paint.setPathEffect(), add missing javadoc in Font * Add Path.transform(), add PathIterator.getFillRule() * Add GPU dithering implementation (no texture lookup) * Fix GLCaps.FormatInfo for RGB565 * Update Paint and related classes * Make Blender and ColorFilter strictly ref-counted * Add Shader.isConstant() * Fix Canvas.drawCircle() * Add Paint.setColor4f() * Fix Paint.setStrokeWidth() and Paint.setStrokeMiter() for NaN values * Remove Paint's SmoothWidth, MaskFilter and ImageFilter * Add PathEffect skeleton class * Fix several hashCode implementation for negative zeros * Update Paint.nothingToDraw() for more blend modes * Add more methods to RoundRect * Update Surface, Canvas, and related classes * Add Stroke, PathIterable, update PathStroker * Optimize shaders * Use short-circuit for transfer function * Use texelFetch for cubic shader, remove invImageSize uniform * Add perspective correction for local matrix shader * Extract color space transform from image shaders * Ensure subset sampling does not use mipmaps * Implement bicubic and strict subset sampling * Change AnalyticSimpleBoxStep to use L1 norm * Fix bug on GLImageDesc.equals() * Fix bug on uniform block layout * Change Paint constants and SamplingOptions, adding classes for text rendering * Done depth stencil work, fix several bugs * Add flipY and unorm clamp for PixelUtils * Implement LinearGradient, RadialGradient, AngularGradient * Fix bugs on ImageShader.makeSubset() * Fix bugs on premul & unpremul in some classes * Improve ColorSpace transform, add PixelUtils.convertPixels() * Add new ColorSpace transform shader * Fix GLSampler TEXTURE_WRAP_R is not set, add validation for SamplerDesc * Fix Matrix4.invert, add Matrix.toMatrix4, fix UniformDataGatherer for mat3 * Make Paint, PaintParams, and Draw classes closeable * Fix TextureTracker; rename gradient shaders * Optimize box shader * Accumulated updates on fragment effects and shading pipeline * Implement simple pixel upload using image-to-image copy * Add new Shader and ColorFilter classes * Rename PixelMap to Pixmap, PixelRef to Pixels * Switch slow JNI to PixelUtils.copyImage() for array to off-heap copy * Remove the offset parameter of Buffer.unmap() * Finish AnalyticSimpleBoxStep * Allow implicit conversion between numerics * Add DepthStencilSettings and BoundsManager, limit the number of geometry steps * Optimize vertex writer and uniform writer, optimize uniform data deduplication * Basically complete the Granite Renderer * Add geometry projection, solid color simplification * Finish RenderPassTask execution Fix scissor origin, initial scissor setup * Complete DrawPass's texture sampler binding * Add TextureDataGatherer, texture sampler binding and tracker * Add UniformDataGatherer and UniformDataCache * Fix Matrix4.store() * Add framebuffer creation and some tests * Some work on new PipelineBuilder * Update Buffer, GLBuffer, persistent mapping and so on * Accumulative updates for new renderer * Add method for updating clip draws * Update ClipStack * Improve vertex specification and buffer binding * Rename the project from 'Arc 3D' to 'Arc3D' * Commit all accumulative updates * Change BlendMode.apply() to static methods * Accumulative updates for the new pipeline * Attempt to refactor pipeline * Add more classes for new pipeline * Add frexp & ldexp impl * Some attempts on pipeline * Refactor GPU Image, RenderTarget, SurfaceProxy classes; remove Texture * Add Image and Framebuffer creation, add reusable framebuffers * Refactor GpuResource class hierarchy * Support GL_CONTEXT_LOST * Tons of work on Engine and OpenGL backend, not listed * Add pre-defined extensions to compile options * A lot of work on abstraction between GL3 and GLES3 * Initially add GLInterface for both OpenGL & OpenGL ES support * Add std140/std430 layout qualifiers, add include directive parsing * Abandon usage of GLSL ARB extensions that core in later versions * Fix GLCaps crash for some capabilities * Fix some bugs in preprocessing * Other improvements * Add new preprocessing methods, allow sub-range source * Add StringLiteral grammar, fix Whitespace grammar * Add FatalError to terminate compiler * Add identifier name length check (1024 at most) * Add benchmark between Arc3D and shaderc (glslang) * Update Lexer * Add directive grammar * Add 'using' grammar for type aliases * Add newline token, fix block comment grammar
3.11.0.3 Release 15.09.2024

Modern UI 3.11.0.3 (Fabric)

Підтримувані версії Minecraft
1.20.6
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.11.0.3 #### NeoForge Extension 1.20.6 * Change default typeface/font loading behavior * Add option to replace vanilla blur effect with Modern UI for optimization * Allow setting blur radius to 0 to disable blur * Add MinecraftSurfaceView to handle raw rendering calls * Ensure that all (native/GPU) resources are closed when the game exits * Slightly improve the Center UI * Fix a random crash when opening/closing UI frequently * Rework tooltip rendering - Add white noise to shadow - Add dithering to gradient colors - Use L1 norm instead of L2 norm for coverage antialiasing - Change shadow approximation method - Change default border radius and shadow alpha - Add new conditions for adding the extra space below tooltip title line - If the first three lines of the tooltip have different styles, we consider the first line as the title - Reduce the saturation of default tooltip colors * Allow using arrow keys to manually scroll the tooltip * Add small epsilon to text Z value for tooltip rendering to work around FP errors on some GPUs * Optimize blur effect - Use texelFetch instead of texture - Remove the additional blit pass and render target because we work around a Minecraft bug - Try to cache the shader program and temporary render target for blurring, and handle errors - Apply blur effect to the screen background instead of the world, just like Minecraft 1.21 * Migrate to new rendering pipeline #### Forge Extension 1.20.6 * Equivalent to NeoForge version #### Fabric Extension 1.20.6 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.20.6 * Add compatibility for bitmap fonts with custom text shader * Enable linear metrics and disable font hinting by default * Add config to change the minimum pixel density for SDF text * Fix some possible bugs on text rendering * Optimize text rendering - Add texture cleanup to FontResourceManager - Simplify text layout rendering code - Use Math.round for aligning pixels - Fix glyph info for FontSet compatibility * Rework and optimize bitmap font rendering - Try to stitch bitmap font into atlas - Try to discard bitmap fonts if they have negative metrics, transparent pixels, or huge metrics - Saturate glyph metrics for bitmap font - Fix hashCode and equals for correct de-duplication * Adjust lod bias for normal text shader * Adjust bitmap font to match vanilla behavior - Adjust glyph advance calculation * Adjust Unicode font loading behavior - Any reference to vanilla Unicode font and UNIHEX font will redirect to current ModernUI default typeface list instead of system fonts, except for Minecraft default font set * Fix text layout bug when finding style transitions * Allow caching the missing glyph to atlas * Adopt full text rendering technology from core framework * Fix line breaker that may output no lines and keep consistency with vanilla behavior - This fix a bug with IBE Editor * Fix text strike cache invalidation for FontSet compatibility - This fix a bug with Create * Add text layout dump in advanced options * Add a command for debugging line breaker * Add methods for debugging text engine * Work around AMD driver bug before GCN 1 * Change the initial size of A8 font atlas to 2048x2048 * Fix crash when compacting font atlas #### Core Framework * Enable linear text by default, increase layout cache limit * Delete render thread executor * Delete old text rendering code * Add GradientDrawable that draw shapes with gradient colors * Update/fix ShapeDrawable with latest rendering pipeline * Add set/get ColorFilter to Drawable and ImageView Add ImageView.setImageTintBlendMode * Rework ImageDrawable.setSrcRect() method * Update ImageDrawable with antialias, dither, filter, and tile modes * Add setter/getter to change blend mode for edge effect * Change default blend mode for EdgeEffect from SRC_OVER to SRC_ATOP * Fix Matrix.mapRect() * Fix EdgeEffect centerX * Improve text rendering * Add AngularGradient API and implementation * Add RadialGradient API and implementation * Add LinearGradient API and implementation * Add GradientShader API and implementation * Add new draw methods to Canvas class * Add BlendModeColorFilter and make it work finally, default blend mode for ImageDrawable is SRC_IN * Add ColorFilter class that can be installed on Paint * Refactor Image class and fix Image.close() issue * Refactor Paint class * Add ImageShader class * Add Shader class that can be installed on Paint * Add TextView.setTextSize() that specifies a unit, default is sp * Full migration to the new rendering pipeline, Arc3D Granite Renderer; delete old GLSurfaceCanvas * Avoid re-layout on window minimized, since framebuffer is destroyed and size is 0 * Deprecate Canvas.saveLayer() for future layer compositor and render tree #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Remove old usage of Image.getSurfaceFlags * Add Image.getUniqueID() and static methods to create raster images * Add utility NoDrawCanvas NWayCanvas and PaintFilterCanvas * Fix Matrix.mapRect() is not correct * Fix compiler error * Optimize text ops if subRunToDevice is translation-only and pipeline does not require local coords trivially * Optimize matrix computation for text ops * Replace Matrix4 in rendering code with Matrix * Make Matrix4() construct an identity matrix, and Matrix4.identity() return a read-only identity matrix * Fix TextBlobBuilder offsets not reset after build * Add RoundRect flatten methods * Improve NoPixelsDevice clip tracking, remove ConservativeClip * Add DrawAtlas.purge() to free unused pages * Add implementation for gradients in other interpolation color spaces and for all hue interpolation methods * Allow DrawAtlas to perform an immediate compact * Rename some classes and methods * Change the default uniform buffer block size to 32KB * Fix color array copy in Vertices::makeCopy * Fix persistent mapping check in GLBuffer * Temporarily enable RGB texture in OpenGL * Try to share vertex array objects in OpenGL backend * Expose resource cleanup API, also cleanup framebuffer cache and strike cache * Review ResourceCache, fix some legacy issues * Add support for alpha-only images, add missing Shaders shader implementation * Purge framebuffers immediately after one attachment was destroyed * Complete the compatibility with OpenGL 3.3 and OpenGL ES 3.0 * Improve texture and renderbuffer creation * Deprecate old Device methods * Fix OpenGL 3.3 and GLSL 330 compatibility * Finalize BoundsManager, add samples * Add plus_clamped, minus, and minus_clamped blend info * Remove 01 coverage in non-aa case * Add blend equation in GL backend * Mark old code as deprecated * Implement basic functionality for final blender, enable dual source blending * Fully implement BakedTextBlob and TextBlobCache for text rendering * Fix blend shader doesn't compile * Add TextBlob as an immutable container for glyph rendering * Rework FramebufferDesc, add FramebufferCache to manage framebuffers * Basically implement texture copy task, implement Surface.onNewImageSnapshot() * Add factory method to create Surface * Implement Device management * Invalidate atlases if RC.snap() failed * Fix several threading issues for OpenGL backend * Handle ColorFilter properly * Add BlendModeShader * Fix color space transformation on paint's solid color * Add primitive color blending and color space transform * Add blending with shader and paint's alpha * Fix color space transformation on BlendModeColorFilter * Add implementation of BlendModeShader and BlendModeColorFilter * Remove Geometry interface * Add Vertices class and Vertices step to drawVertices * Add shader implementation for 42 blend modes * Fix arg name for uniforms that start with no mangle prefix * Add StaticBufferManager and Buffer-to-Buffer copy task * Fix ImageUploadTask bug * Implement remaining important Canvas methods * Add and implement new Canvas methods in Device * Fix depth is perspective-correct; the depth should be preserved, then multiply it by w. * Fix bugs on arc shader with square end * Finish methods to create and draw GlyphRuns * Add method to set Matrix elements * Fix Matrix4.hashCode() for negative zero * Add Geometry.getBounds() to compute bounds * Improve ClipStack to compute several bounds * Fix stroke inflation radius computation for inner and outer stroke * Optimize draw when it does not depend on dst * Fix several issues on Device * Implement the creation of AtlasSubRuns * Add method to compute res scales if matrix has perspective * Fix AnalyticSimpleBoxStep instance data type * Add method to draw pie and chord, optimize shaders * Add rendering with three cap types of stroke arcs initially * Implement Atlas text op at low level, improve solid color fast path, trying to handle primitive color * Fix ScalerContext_JDK does not return a reliable glyph bounds * Fix DrawAtlas assertion and GlyphAtlasManager row stride * Fix Strike and ScalerContext bugs, remove stroke cap in StrikeDesc * Improve finite check and non-invertible matrix * Add RendererProvider to manage GeometryRenderers * Finish implementation of atlas management for draw ops and glyph atlas * Calculate the Path byte size when generating Glyph in Strike * Implement Strike, StrikeCache, and ScalerContext basically * Add Paint.setPathEffect(), add missing javadoc in Font * Add Path.transform(), add PathIterator.getFillRule() * Add GPU dithering implementation (no texture lookup) * Fix GLCaps.FormatInfo for RGB565 * Update Paint and related classes * Make Blender and ColorFilter strictly ref-counted * Add Shader.isConstant() * Fix Canvas.drawCircle() * Add Paint.setColor4f() * Fix Paint.setStrokeWidth() and Paint.setStrokeMiter() for NaN values * Remove Paint's SmoothWidth, MaskFilter and ImageFilter * Add PathEffect skeleton class * Fix several hashCode implementation for negative zeros * Update Paint.nothingToDraw() for more blend modes * Add more methods to RoundRect * Update Surface, Canvas, and related classes * Add Stroke, PathIterable, update PathStroker * Optimize shaders * Use short-circuit for transfer function * Use texelFetch for cubic shader, remove invImageSize uniform * Add perspective correction for local matrix shader * Extract color space transform from image shaders * Ensure subset sampling does not use mipmaps * Implement bicubic and strict subset sampling * Change AnalyticSimpleBoxStep to use L1 norm * Fix bug on GLImageDesc.equals() * Fix bug on uniform block layout * Change Paint constants and SamplingOptions, adding classes for text rendering * Done depth stencil work, fix several bugs * Add flipY and unorm clamp for PixelUtils * Implement LinearGradient, RadialGradient, AngularGradient * Fix bugs on ImageShader.makeSubset() * Fix bugs on premul & unpremul in some classes * Improve ColorSpace transform, add PixelUtils.convertPixels() * Add new ColorSpace transform shader * Fix GLSampler TEXTURE_WRAP_R is not set, add validation for SamplerDesc * Fix Matrix4.invert, add Matrix.toMatrix4, fix UniformDataGatherer for mat3 * Make Paint, PaintParams, and Draw classes closeable * Fix TextureTracker; rename gradient shaders * Optimize box shader * Accumulated updates on fragment effects and shading pipeline * Implement simple pixel upload using image-to-image copy * Add new Shader and ColorFilter classes * Rename PixelMap to Pixmap, PixelRef to Pixels * Switch slow JNI to PixelUtils.copyImage() for array to off-heap copy * Remove the offset parameter of Buffer.unmap() * Finish AnalyticSimpleBoxStep * Allow implicit conversion between numerics * Add DepthStencilSettings and BoundsManager, limit the number of geometry steps * Optimize vertex writer and uniform writer, optimize uniform data deduplication * Basically complete the Granite Renderer * Add geometry projection, solid color simplification * Finish RenderPassTask execution Fix scissor origin, initial scissor setup * Complete DrawPass's texture sampler binding * Add TextureDataGatherer, texture sampler binding and tracker * Add UniformDataGatherer and UniformDataCache * Fix Matrix4.store() * Add framebuffer creation and some tests * Some work on new PipelineBuilder * Update Buffer, GLBuffer, persistent mapping and so on * Accumulative updates for new renderer * Add method for updating clip draws * Update ClipStack * Improve vertex specification and buffer binding * Rename the project from 'Arc 3D' to 'Arc3D' * Commit all accumulative updates * Change BlendMode.apply() to static methods * Accumulative updates for the new pipeline * Attempt to refactor pipeline * Add more classes for new pipeline * Add frexp & ldexp impl * Some attempts on pipeline * Refactor GPU Image, RenderTarget, SurfaceProxy classes; remove Texture * Add Image and Framebuffer creation, add reusable framebuffers * Refactor GpuResource class hierarchy * Support GL_CONTEXT_LOST * Tons of work on Engine and OpenGL backend, not listed * Add pre-defined extensions to compile options * A lot of work on abstraction between GL3 and GLES3 * Initially add GLInterface for both OpenGL & OpenGL ES support * Add std140/std430 layout qualifiers, add include directive parsing * Abandon usage of GLSL ARB extensions that core in later versions * Fix GLCaps crash for some capabilities * Fix some bugs in preprocessing * Other improvements * Add new preprocessing methods, allow sub-range source * Add StringLiteral grammar, fix Whitespace grammar * Add FatalError to terminate compiler * Add identifier name length check (1024 at most) * Add benchmark between Arc3D and shaderc (glslang) * Update Lexer * Add directive grammar * Add 'using' grammar for type aliases * Add newline token, fix block comment grammar
3.11.0.3 Release 15.09.2024

Modern UI 3.11.0.3 (Forge)

Підтримувані версії Minecraft
1.20.6
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.11.0.3 #### NeoForge Extension 1.20.6 * Change default typeface/font loading behavior * Add option to replace vanilla blur effect with Modern UI for optimization * Allow setting blur radius to 0 to disable blur * Add MinecraftSurfaceView to handle raw rendering calls * Ensure that all (native/GPU) resources are closed when the game exits * Slightly improve the Center UI * Fix a random crash when opening/closing UI frequently * Rework tooltip rendering - Add white noise to shadow - Add dithering to gradient colors - Use L1 norm instead of L2 norm for coverage antialiasing - Change shadow approximation method - Change default border radius and shadow alpha - Add new conditions for adding the extra space below tooltip title line - If the first three lines of the tooltip have different styles, we consider the first line as the title - Reduce the saturation of default tooltip colors * Allow using arrow keys to manually scroll the tooltip * Add small epsilon to text Z value for tooltip rendering to work around FP errors on some GPUs * Optimize blur effect - Use texelFetch instead of texture - Remove the additional blit pass and render target because we work around a Minecraft bug - Try to cache the shader program and temporary render target for blurring, and handle errors - Apply blur effect to the screen background instead of the world, just like Minecraft 1.21 * Migrate to new rendering pipeline #### Forge Extension 1.20.6 * Equivalent to NeoForge version #### Fabric Extension 1.20.6 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.20.6 * Add compatibility for bitmap fonts with custom text shader * Enable linear metrics and disable font hinting by default * Add config to change the minimum pixel density for SDF text * Fix some possible bugs on text rendering * Optimize text rendering - Add texture cleanup to FontResourceManager - Simplify text layout rendering code - Use Math.round for aligning pixels - Fix glyph info for FontSet compatibility * Rework and optimize bitmap font rendering - Try to stitch bitmap font into atlas - Try to discard bitmap fonts if they have negative metrics, transparent pixels, or huge metrics - Saturate glyph metrics for bitmap font - Fix hashCode and equals for correct de-duplication * Adjust lod bias for normal text shader * Adjust bitmap font to match vanilla behavior - Adjust glyph advance calculation * Adjust Unicode font loading behavior - Any reference to vanilla Unicode font and UNIHEX font will redirect to current ModernUI default typeface list instead of system fonts, except for Minecraft default font set * Fix text layout bug when finding style transitions * Allow caching the missing glyph to atlas * Adopt full text rendering technology from core framework * Fix line breaker that may output no lines and keep consistency with vanilla behavior - This fix a bug with IBE Editor * Fix text strike cache invalidation for FontSet compatibility - This fix a bug with Create * Add text layout dump in advanced options * Add a command for debugging line breaker * Add methods for debugging text engine * Work around AMD driver bug before GCN 1 * Change the initial size of A8 font atlas to 2048x2048 * Fix crash when compacting font atlas #### Core Framework * Enable linear text by default, increase layout cache limit * Delete render thread executor * Delete old text rendering code * Add GradientDrawable that draw shapes with gradient colors * Update/fix ShapeDrawable with latest rendering pipeline * Add set/get ColorFilter to Drawable and ImageView Add ImageView.setImageTintBlendMode * Rework ImageDrawable.setSrcRect() method * Update ImageDrawable with antialias, dither, filter, and tile modes * Add setter/getter to change blend mode for edge effect * Change default blend mode for EdgeEffect from SRC_OVER to SRC_ATOP * Fix Matrix.mapRect() * Fix EdgeEffect centerX * Improve text rendering * Add AngularGradient API and implementation * Add RadialGradient API and implementation * Add LinearGradient API and implementation * Add GradientShader API and implementation * Add new draw methods to Canvas class * Add BlendModeColorFilter and make it work finally, default blend mode for ImageDrawable is SRC_IN * Add ColorFilter class that can be installed on Paint * Refactor Image class and fix Image.close() issue * Refactor Paint class * Add ImageShader class * Add Shader class that can be installed on Paint * Add TextView.setTextSize() that specifies a unit, default is sp * Full migration to the new rendering pipeline, Arc3D Granite Renderer; delete old GLSurfaceCanvas * Avoid re-layout on window minimized, since framebuffer is destroyed and size is 0 * Deprecate Canvas.saveLayer() for future layer compositor and render tree #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Remove old usage of Image.getSurfaceFlags * Add Image.getUniqueID() and static methods to create raster images * Add utility NoDrawCanvas NWayCanvas and PaintFilterCanvas * Fix Matrix.mapRect() is not correct * Fix compiler error * Optimize text ops if subRunToDevice is translation-only and pipeline does not require local coords trivially * Optimize matrix computation for text ops * Replace Matrix4 in rendering code with Matrix * Make Matrix4() construct an identity matrix, and Matrix4.identity() return a read-only identity matrix * Fix TextBlobBuilder offsets not reset after build * Add RoundRect flatten methods * Improve NoPixelsDevice clip tracking, remove ConservativeClip * Add DrawAtlas.purge() to free unused pages * Add implementation for gradients in other interpolation color spaces and for all hue interpolation methods * Allow DrawAtlas to perform an immediate compact * Rename some classes and methods * Change the default uniform buffer block size to 32KB * Fix color array copy in Vertices::makeCopy * Fix persistent mapping check in GLBuffer * Temporarily enable RGB texture in OpenGL * Try to share vertex array objects in OpenGL backend * Expose resource cleanup API, also cleanup framebuffer cache and strike cache * Review ResourceCache, fix some legacy issues * Add support for alpha-only images, add missing Shaders shader implementation * Purge framebuffers immediately after one attachment was destroyed * Complete the compatibility with OpenGL 3.3 and OpenGL ES 3.0 * Improve texture and renderbuffer creation * Deprecate old Device methods * Fix OpenGL 3.3 and GLSL 330 compatibility * Finalize BoundsManager, add samples * Add plus_clamped, minus, and minus_clamped blend info * Remove 01 coverage in non-aa case * Add blend equation in GL backend * Mark old code as deprecated * Implement basic functionality for final blender, enable dual source blending * Fully implement BakedTextBlob and TextBlobCache for text rendering * Fix blend shader doesn't compile * Add TextBlob as an immutable container for glyph rendering * Rework FramebufferDesc, add FramebufferCache to manage framebuffers * Basically implement texture copy task, implement Surface.onNewImageSnapshot() * Add factory method to create Surface * Implement Device management * Invalidate atlases if RC.snap() failed * Fix several threading issues for OpenGL backend * Handle ColorFilter properly * Add BlendModeShader * Fix color space transformation on paint's solid color * Add primitive color blending and color space transform * Add blending with shader and paint's alpha * Fix color space transformation on BlendModeColorFilter * Add implementation of BlendModeShader and BlendModeColorFilter * Remove Geometry interface * Add Vertices class and Vertices step to drawVertices * Add shader implementation for 42 blend modes * Fix arg name for uniforms that start with no mangle prefix * Add StaticBufferManager and Buffer-to-Buffer copy task * Fix ImageUploadTask bug * Implement remaining important Canvas methods * Add and implement new Canvas methods in Device * Fix depth is perspective-correct; the depth should be preserved, then multiply it by w. * Fix bugs on arc shader with square end * Finish methods to create and draw GlyphRuns * Add method to set Matrix elements * Fix Matrix4.hashCode() for negative zero * Add Geometry.getBounds() to compute bounds * Improve ClipStack to compute several bounds * Fix stroke inflation radius computation for inner and outer stroke * Optimize draw when it does not depend on dst * Fix several issues on Device * Implement the creation of AtlasSubRuns * Add method to compute res scales if matrix has perspective * Fix AnalyticSimpleBoxStep instance data type * Add method to draw pie and chord, optimize shaders * Add rendering with three cap types of stroke arcs initially * Implement Atlas text op at low level, improve solid color fast path, trying to handle primitive color * Fix ScalerContext_JDK does not return a reliable glyph bounds * Fix DrawAtlas assertion and GlyphAtlasManager row stride * Fix Strike and ScalerContext bugs, remove stroke cap in StrikeDesc * Improve finite check and non-invertible matrix * Add RendererProvider to manage GeometryRenderers * Finish implementation of atlas management for draw ops and glyph atlas * Calculate the Path byte size when generating Glyph in Strike * Implement Strike, StrikeCache, and ScalerContext basically * Add Paint.setPathEffect(), add missing javadoc in Font * Add Path.transform(), add PathIterator.getFillRule() * Add GPU dithering implementation (no texture lookup) * Fix GLCaps.FormatInfo for RGB565 * Update Paint and related classes * Make Blender and ColorFilter strictly ref-counted * Add Shader.isConstant() * Fix Canvas.drawCircle() * Add Paint.setColor4f() * Fix Paint.setStrokeWidth() and Paint.setStrokeMiter() for NaN values * Remove Paint's SmoothWidth, MaskFilter and ImageFilter * Add PathEffect skeleton class * Fix several hashCode implementation for negative zeros * Update Paint.nothingToDraw() for more blend modes * Add more methods to RoundRect * Update Surface, Canvas, and related classes * Add Stroke, PathIterable, update PathStroker * Optimize shaders * Use short-circuit for transfer function * Use texelFetch for cubic shader, remove invImageSize uniform * Add perspective correction for local matrix shader * Extract color space transform from image shaders * Ensure subset sampling does not use mipmaps * Implement bicubic and strict subset sampling * Change AnalyticSimpleBoxStep to use L1 norm * Fix bug on GLImageDesc.equals() * Fix bug on uniform block layout * Change Paint constants and SamplingOptions, adding classes for text rendering * Done depth stencil work, fix several bugs * Add flipY and unorm clamp for PixelUtils * Implement LinearGradient, RadialGradient, AngularGradient * Fix bugs on ImageShader.makeSubset() * Fix bugs on premul & unpremul in some classes * Improve ColorSpace transform, add PixelUtils.convertPixels() * Add new ColorSpace transform shader * Fix GLSampler TEXTURE_WRAP_R is not set, add validation for SamplerDesc * Fix Matrix4.invert, add Matrix.toMatrix4, fix UniformDataGatherer for mat3 * Make Paint, PaintParams, and Draw classes closeable * Fix TextureTracker; rename gradient shaders * Optimize box shader * Accumulated updates on fragment effects and shading pipeline * Implement simple pixel upload using image-to-image copy * Add new Shader and ColorFilter classes * Rename PixelMap to Pixmap, PixelRef to Pixels * Switch slow JNI to PixelUtils.copyImage() for array to off-heap copy * Remove the offset parameter of Buffer.unmap() * Finish AnalyticSimpleBoxStep * Allow implicit conversion between numerics * Add DepthStencilSettings and BoundsManager, limit the number of geometry steps * Optimize vertex writer and uniform writer, optimize uniform data deduplication * Basically complete the Granite Renderer * Add geometry projection, solid color simplification * Finish RenderPassTask execution Fix scissor origin, initial scissor setup * Complete DrawPass's texture sampler binding * Add TextureDataGatherer, texture sampler binding and tracker * Add UniformDataGatherer and UniformDataCache * Fix Matrix4.store() * Add framebuffer creation and some tests * Some work on new PipelineBuilder * Update Buffer, GLBuffer, persistent mapping and so on * Accumulative updates for new renderer * Add method for updating clip draws * Update ClipStack * Improve vertex specification and buffer binding * Rename the project from 'Arc 3D' to 'Arc3D' * Commit all accumulative updates * Change BlendMode.apply() to static methods * Accumulative updates for the new pipeline * Attempt to refactor pipeline * Add more classes for new pipeline * Add frexp & ldexp impl * Some attempts on pipeline * Refactor GPU Image, RenderTarget, SurfaceProxy classes; remove Texture * Add Image and Framebuffer creation, add reusable framebuffers * Refactor GpuResource class hierarchy * Support GL_CONTEXT_LOST * Tons of work on Engine and OpenGL backend, not listed * Add pre-defined extensions to compile options * A lot of work on abstraction between GL3 and GLES3 * Initially add GLInterface for both OpenGL & OpenGL ES support * Add std140/std430 layout qualifiers, add include directive parsing * Abandon usage of GLSL ARB extensions that core in later versions * Fix GLCaps crash for some capabilities * Fix some bugs in preprocessing * Other improvements * Add new preprocessing methods, allow sub-range source * Add StringLiteral grammar, fix Whitespace grammar * Add FatalError to terminate compiler * Add identifier name length check (1024 at most) * Add benchmark between Arc3D and shaderc (glslang) * Update Lexer * Add directive grammar * Add 'using' grammar for type aliases * Add newline token, fix block comment grammar
3.11.0.3 Release 15.09.2024

Modern UI 3.11.0.3 (NeoForge)

Підтримувані версії Minecraft
1.20.6
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.11.0.3 #### NeoForge Extension 1.20.6 * Change default typeface/font loading behavior * Add option to replace vanilla blur effect with Modern UI for optimization * Allow setting blur radius to 0 to disable blur * Add MinecraftSurfaceView to handle raw rendering calls * Ensure that all (native/GPU) resources are closed when the game exits * Slightly improve the Center UI * Fix a random crash when opening/closing UI frequently * Rework tooltip rendering - Add white noise to shadow - Add dithering to gradient colors - Use L1 norm instead of L2 norm for coverage antialiasing - Change shadow approximation method - Change default border radius and shadow alpha - Add new conditions for adding the extra space below tooltip title line - If the first three lines of the tooltip have different styles, we consider the first line as the title - Reduce the saturation of default tooltip colors * Allow using arrow keys to manually scroll the tooltip * Add small epsilon to text Z value for tooltip rendering to work around FP errors on some GPUs * Optimize blur effect - Use texelFetch instead of texture - Remove the additional blit pass and render target because we work around a Minecraft bug - Try to cache the shader program and temporary render target for blurring, and handle errors - Apply blur effect to the screen background instead of the world, just like Minecraft 1.21 * Migrate to new rendering pipeline #### Forge Extension 1.20.6 * Equivalent to NeoForge version #### Fabric Extension 1.20.6 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.20.6 * Add compatibility for bitmap fonts with custom text shader * Enable linear metrics and disable font hinting by default * Add config to change the minimum pixel density for SDF text * Fix some possible bugs on text rendering * Optimize text rendering - Add texture cleanup to FontResourceManager - Simplify text layout rendering code - Use Math.round for aligning pixels - Fix glyph info for FontSet compatibility * Rework and optimize bitmap font rendering - Try to stitch bitmap font into atlas - Try to discard bitmap fonts if they have negative metrics, transparent pixels, or huge metrics - Saturate glyph metrics for bitmap font - Fix hashCode and equals for correct de-duplication * Adjust lod bias for normal text shader * Adjust bitmap font to match vanilla behavior - Adjust glyph advance calculation * Adjust Unicode font loading behavior - Any reference to vanilla Unicode font and UNIHEX font will redirect to current ModernUI default typeface list instead of system fonts, except for Minecraft default font set * Fix text layout bug when finding style transitions * Allow caching the missing glyph to atlas * Adopt full text rendering technology from core framework * Fix line breaker that may output no lines and keep consistency with vanilla behavior - This fix a bug with IBE Editor * Fix text strike cache invalidation for FontSet compatibility - This fix a bug with Create * Add text layout dump in advanced options * Add a command for debugging line breaker * Add methods for debugging text engine * Work around AMD driver bug before GCN 1 * Change the initial size of A8 font atlas to 2048x2048 * Fix crash when compacting font atlas #### Core Framework * Enable linear text by default, increase layout cache limit * Delete render thread executor * Delete old text rendering code * Add GradientDrawable that draw shapes with gradient colors * Update/fix ShapeDrawable with latest rendering pipeline * Add set/get ColorFilter to Drawable and ImageView Add ImageView.setImageTintBlendMode * Rework ImageDrawable.setSrcRect() method * Update ImageDrawable with antialias, dither, filter, and tile modes * Add setter/getter to change blend mode for edge effect * Change default blend mode for EdgeEffect from SRC_OVER to SRC_ATOP * Fix Matrix.mapRect() * Fix EdgeEffect centerX * Improve text rendering * Add AngularGradient API and implementation * Add RadialGradient API and implementation * Add LinearGradient API and implementation * Add GradientShader API and implementation * Add new draw methods to Canvas class * Add BlendModeColorFilter and make it work finally, default blend mode for ImageDrawable is SRC_IN * Add ColorFilter class that can be installed on Paint * Refactor Image class and fix Image.close() issue * Refactor Paint class * Add ImageShader class * Add Shader class that can be installed on Paint * Add TextView.setTextSize() that specifies a unit, default is sp * Full migration to the new rendering pipeline, Arc3D Granite Renderer; delete old GLSurfaceCanvas * Avoid re-layout on window minimized, since framebuffer is destroyed and size is 0 * Deprecate Canvas.saveLayer() for future layer compositor and render tree #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Remove old usage of Image.getSurfaceFlags * Add Image.getUniqueID() and static methods to create raster images * Add utility NoDrawCanvas NWayCanvas and PaintFilterCanvas * Fix Matrix.mapRect() is not correct * Fix compiler error * Optimize text ops if subRunToDevice is translation-only and pipeline does not require local coords trivially * Optimize matrix computation for text ops * Replace Matrix4 in rendering code with Matrix * Make Matrix4() construct an identity matrix, and Matrix4.identity() return a read-only identity matrix * Fix TextBlobBuilder offsets not reset after build * Add RoundRect flatten methods * Improve NoPixelsDevice clip tracking, remove ConservativeClip * Add DrawAtlas.purge() to free unused pages * Add implementation for gradients in other interpolation color spaces and for all hue interpolation methods * Allow DrawAtlas to perform an immediate compact * Rename some classes and methods * Change the default uniform buffer block size to 32KB * Fix color array copy in Vertices::makeCopy * Fix persistent mapping check in GLBuffer * Temporarily enable RGB texture in OpenGL * Try to share vertex array objects in OpenGL backend * Expose resource cleanup API, also cleanup framebuffer cache and strike cache * Review ResourceCache, fix some legacy issues * Add support for alpha-only images, add missing Shaders shader implementation * Purge framebuffers immediately after one attachment was destroyed * Complete the compatibility with OpenGL 3.3 and OpenGL ES 3.0 * Improve texture and renderbuffer creation * Deprecate old Device methods * Fix OpenGL 3.3 and GLSL 330 compatibility * Finalize BoundsManager, add samples * Add plus_clamped, minus, and minus_clamped blend info * Remove 01 coverage in non-aa case * Add blend equation in GL backend * Mark old code as deprecated * Implement basic functionality for final blender, enable dual source blending * Fully implement BakedTextBlob and TextBlobCache for text rendering * Fix blend shader doesn't compile * Add TextBlob as an immutable container for glyph rendering * Rework FramebufferDesc, add FramebufferCache to manage framebuffers * Basically implement texture copy task, implement Surface.onNewImageSnapshot() * Add factory method to create Surface * Implement Device management * Invalidate atlases if RC.snap() failed * Fix several threading issues for OpenGL backend * Handle ColorFilter properly * Add BlendModeShader * Fix color space transformation on paint's solid color * Add primitive color blending and color space transform * Add blending with shader and paint's alpha * Fix color space transformation on BlendModeColorFilter * Add implementation of BlendModeShader and BlendModeColorFilter * Remove Geometry interface * Add Vertices class and Vertices step to drawVertices * Add shader implementation for 42 blend modes * Fix arg name for uniforms that start with no mangle prefix * Add StaticBufferManager and Buffer-to-Buffer copy task * Fix ImageUploadTask bug * Implement remaining important Canvas methods * Add and implement new Canvas methods in Device * Fix depth is perspective-correct; the depth should be preserved, then multiply it by w. * Fix bugs on arc shader with square end * Finish methods to create and draw GlyphRuns * Add method to set Matrix elements * Fix Matrix4.hashCode() for negative zero * Add Geometry.getBounds() to compute bounds * Improve ClipStack to compute several bounds * Fix stroke inflation radius computation for inner and outer stroke * Optimize draw when it does not depend on dst * Fix several issues on Device * Implement the creation of AtlasSubRuns * Add method to compute res scales if matrix has perspective * Fix AnalyticSimpleBoxStep instance data type * Add method to draw pie and chord, optimize shaders * Add rendering with three cap types of stroke arcs initially * Implement Atlas text op at low level, improve solid color fast path, trying to handle primitive color * Fix ScalerContext_JDK does not return a reliable glyph bounds * Fix DrawAtlas assertion and GlyphAtlasManager row stride * Fix Strike and ScalerContext bugs, remove stroke cap in StrikeDesc * Improve finite check and non-invertible matrix * Add RendererProvider to manage GeometryRenderers * Finish implementation of atlas management for draw ops and glyph atlas * Calculate the Path byte size when generating Glyph in Strike * Implement Strike, StrikeCache, and ScalerContext basically * Add Paint.setPathEffect(), add missing javadoc in Font * Add Path.transform(), add PathIterator.getFillRule() * Add GPU dithering implementation (no texture lookup) * Fix GLCaps.FormatInfo for RGB565 * Update Paint and related classes * Make Blender and ColorFilter strictly ref-counted * Add Shader.isConstant() * Fix Canvas.drawCircle() * Add Paint.setColor4f() * Fix Paint.setStrokeWidth() and Paint.setStrokeMiter() for NaN values * Remove Paint's SmoothWidth, MaskFilter and ImageFilter * Add PathEffect skeleton class * Fix several hashCode implementation for negative zeros * Update Paint.nothingToDraw() for more blend modes * Add more methods to RoundRect * Update Surface, Canvas, and related classes * Add Stroke, PathIterable, update PathStroker * Optimize shaders * Use short-circuit for transfer function * Use texelFetch for cubic shader, remove invImageSize uniform * Add perspective correction for local matrix shader * Extract color space transform from image shaders * Ensure subset sampling does not use mipmaps * Implement bicubic and strict subset sampling * Change AnalyticSimpleBoxStep to use L1 norm * Fix bug on GLImageDesc.equals() * Fix bug on uniform block layout * Change Paint constants and SamplingOptions, adding classes for text rendering * Done depth stencil work, fix several bugs * Add flipY and unorm clamp for PixelUtils * Implement LinearGradient, RadialGradient, AngularGradient * Fix bugs on ImageShader.makeSubset() * Fix bugs on premul & unpremul in some classes * Improve ColorSpace transform, add PixelUtils.convertPixels() * Add new ColorSpace transform shader * Fix GLSampler TEXTURE_WRAP_R is not set, add validation for SamplerDesc * Fix Matrix4.invert, add Matrix.toMatrix4, fix UniformDataGatherer for mat3 * Make Paint, PaintParams, and Draw classes closeable * Fix TextureTracker; rename gradient shaders * Optimize box shader * Accumulated updates on fragment effects and shading pipeline * Implement simple pixel upload using image-to-image copy * Add new Shader and ColorFilter classes * Rename PixelMap to Pixmap, PixelRef to Pixels * Switch slow JNI to PixelUtils.copyImage() for array to off-heap copy * Remove the offset parameter of Buffer.unmap() * Finish AnalyticSimpleBoxStep * Allow implicit conversion between numerics * Add DepthStencilSettings and BoundsManager, limit the number of geometry steps * Optimize vertex writer and uniform writer, optimize uniform data deduplication * Basically complete the Granite Renderer * Add geometry projection, solid color simplification * Finish RenderPassTask execution Fix scissor origin, initial scissor setup * Complete DrawPass's texture sampler binding * Add TextureDataGatherer, texture sampler binding and tracker * Add UniformDataGatherer and UniformDataCache * Fix Matrix4.store() * Add framebuffer creation and some tests * Some work on new PipelineBuilder * Update Buffer, GLBuffer, persistent mapping and so on * Accumulative updates for new renderer * Add method for updating clip draws * Update ClipStack * Improve vertex specification and buffer binding * Rename the project from 'Arc 3D' to 'Arc3D' * Commit all accumulative updates * Change BlendMode.apply() to static methods * Accumulative updates for the new pipeline * Attempt to refactor pipeline * Add more classes for new pipeline * Add frexp & ldexp impl * Some attempts on pipeline * Refactor GPU Image, RenderTarget, SurfaceProxy classes; remove Texture * Add Image and Framebuffer creation, add reusable framebuffers * Refactor GpuResource class hierarchy * Support GL_CONTEXT_LOST * Tons of work on Engine and OpenGL backend, not listed * Add pre-defined extensions to compile options * A lot of work on abstraction between GL3 and GLES3 * Initially add GLInterface for both OpenGL & OpenGL ES support * Add std140/std430 layout qualifiers, add include directive parsing * Abandon usage of GLSL ARB extensions that core in later versions * Fix GLCaps crash for some capabilities * Fix some bugs in preprocessing * Other improvements * Add new preprocessing methods, allow sub-range source * Add StringLiteral grammar, fix Whitespace grammar * Add FatalError to terminate compiler * Add identifier name length check (1024 at most) * Add benchmark between Arc3D and shaderc (glslang) * Update Lexer * Add directive grammar * Add 'using' grammar for type aliases * Add newline token, fix block comment grammar
3.11.0.2 Release 15.09.2024

Modern UI 3.11.0.2 (Fabric)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.11.0.2 #### NeoForge Extension 1.20.4 * Add MinecraftSurfaceView to handle raw rendering calls * Ensure that all (native/GPU) resources are closed when the game exits * Slightly improve the Center UI * Fix a random crash when opening/closing UI frequently * Rework tooltip rendering - Add white noise to shadow - Add dithering to gradient colors - Use L1 norm instead of L2 norm for coverage antialiasing - Change shadow approximation method - Change default border radius and shadow alpha - Add new conditions for adding the extra space below tooltip title line - If the first three lines of the tooltip have different styles, we consider the first line as the title - Reduce the saturation of default tooltip colors * Allow using arrow keys to manually scroll the tooltip * Add small epsilon to text Z value for tooltip rendering to work around FP errors on some GPUs * Optimize blur effect - Use texelFetch instead of texture - Remove the additional blit pass and render target because we work around a Minecraft bug - Try to cache the shader program and temporary render target for blurring, and handle errors - Apply blur effect to the screen background instead of the world, just like Minecraft 1.21 * Migrate to new rendering pipeline #### Forge Extension 1.20.4 * Equivalent to NeoForge version #### Fabric Extension 1.20.4 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.20.4 * Add compatibility for bitmap fonts with custom text shader * Enable linear metrics and disable font hinting by default * Add config to change the minimum pixel density for SDF text * Fix some possible bugs on text rendering * Optimize text rendering - Add texture cleanup to FontResourceManager - Simplify text layout rendering code - Use Math.round for aligning pixels - Fix glyph info for FontSet compatibility * Rework and optimize bitmap font rendering - Try to stitch bitmap font into atlas - Try to discard bitmap fonts if they have negative metrics, transparent pixels, or huge metrics - Saturate glyph metrics for bitmap font - Fix hashCode and equals for correct de-duplication * Adjust lod bias for normal text shader * Adjust bitmap font to match vanilla behavior - Adjust glyph advance calculation * Adjust Unicode font loading behavior - Any reference to vanilla Unicode font and UNIHEX font will redirect to current ModernUI default typeface list instead of system fonts, except for Minecraft default font set * Fix text layout bug when finding style transitions * Allow caching the missing glyph to atlas * Adopt full text rendering technology from core framework * Fix line breaker that may output no lines and keep consistency with vanilla behavior - This fix a bug with IBE Editor * Fix text strike cache invalidation for FontSet compatibility - This fix a bug with Create * Add text layout dump in advanced options * Add a command for debugging line breaker * Add methods for debugging text engine #### Core Framework * Enable linear text by default, increase layout cache limit * Delete render thread executor * Delete old text rendering code * Add GradientDrawable that draw shapes with gradient colors * Update/fix ShapeDrawable with latest rendering pipeline * Add set/get ColorFilter to Drawable and ImageView Add ImageView.setImageTintBlendMode * Rework ImageDrawable.setSrcRect() method * Update ImageDrawable with antialias, dither, filter, and tile modes * Add setter/getter to change blend mode for edge effect * Change default blend mode for EdgeEffect from SRC_OVER to SRC_ATOP * Fix Matrix.mapRect() * Fix EdgeEffect centerX * Improve text rendering * Add AngularGradient API and implementation * Add RadialGradient API and implementation * Add LinearGradient API and implementation * Add GradientShader API and implementation * Add new draw methods to Canvas class * Add BlendModeColorFilter and make it work finally, default blend mode for ImageDrawable is SRC_IN * Add ColorFilter class that can be installed on Paint * Refactor Image class and fix Image.close() issue * Refactor Paint class * Add ImageShader class * Add Shader class that can be installed on Paint * Add TextView.setTextSize() that specifies a unit, default is sp * Full migration to the new rendering pipeline, Arc3D Granite Renderer; delete old GLSurfaceCanvas * Avoid re-layout on window minimized, since framebuffer is destroyed and size is 0 * Deprecate Canvas.saveLayer() for future layer compositor and render tree #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Remove old usage of Image.getSurfaceFlags * Add Image.getUniqueID() and static methods to create raster images * Add utility NoDrawCanvas NWayCanvas and PaintFilterCanvas * Fix Matrix.mapRect() is not correct * Fix compiler error * Optimize text ops if subRunToDevice is translation-only and pipeline does not require local coords trivially * Optimize matrix computation for text ops * Replace Matrix4 in rendering code with Matrix * Make Matrix4() construct an identity matrix, and Matrix4.identity() return a read-only identity matrix * Fix TextBlobBuilder offsets not reset after build * Add RoundRect flatten methods * Improve NoPixelsDevice clip tracking, remove ConservativeClip * Add DrawAtlas.purge() to free unused pages * Add implementation for gradients in other interpolation color spaces and for all hue interpolation methods * Allow DrawAtlas to perform an immediate compact * Rename some classes and methods * Change the default uniform buffer block size to 32KB * Fix color array copy in Vertices::makeCopy * Fix persistent mapping check in GLBuffer * Temporarily enable RGB texture in OpenGL * Try to share vertex array objects in OpenGL backend * Expose resource cleanup API, also cleanup framebuffer cache and strike cache * Review ResourceCache, fix some legacy issues * Add support for alpha-only images, add missing Shaders shader implementation * Purge framebuffers immediately after one attachment was destroyed * Complete the compatibility with OpenGL 3.3 and OpenGL ES 3.0 * Improve texture and renderbuffer creation * Deprecate old Device methods * Fix OpenGL 3.3 and GLSL 330 compatibility * Finalize BoundsManager, add samples * Add plus_clamped, minus, and minus_clamped blend info * Remove 01 coverage in non-aa case * Add blend equation in GL backend * Mark old code as deprecated * Implement basic functionality for final blender, enable dual source blending * Fully implement BakedTextBlob and TextBlobCache for text rendering * Fix blend shader doesn't compile * Add TextBlob as an immutable container for glyph rendering * Rework FramebufferDesc, add FramebufferCache to manage framebuffers * Basically implement texture copy task, implement Surface.onNewImageSnapshot() * Add factory method to create Surface * Implement Device management * Invalidate atlases if RC.snap() failed * Fix several threading issues for OpenGL backend * Handle ColorFilter properly * Add BlendModeShader * Fix color space transformation on paint's solid color * Add primitive color blending and color space transform * Add blending with shader and paint's alpha * Fix color space transformation on BlendModeColorFilter * Add implementation of BlendModeShader and BlendModeColorFilter * Remove Geometry interface * Add Vertices class and Vertices step to drawVertices * Add shader implementation for 42 blend modes * Fix arg name for uniforms that start with no mangle prefix * Add StaticBufferManager and Buffer-to-Buffer copy task * Fix ImageUploadTask bug * Implement remaining important Canvas methods * Add and implement new Canvas methods in Device * Fix depth is perspective-correct; the depth should be preserved, then multiply it by w. * Fix bugs on arc shader with square end * Finish methods to create and draw GlyphRuns * Add method to set Matrix elements * Fix Matrix4.hashCode() for negative zero * Add Geometry.getBounds() to compute bounds * Improve ClipStack to compute several bounds * Fix stroke inflation radius computation for inner and outer stroke * Optimize draw when it does not depend on dst * Fix several issues on Device * Implement the creation of AtlasSubRuns * Add method to compute res scales if matrix has perspective * Fix AnalyticSimpleBoxStep instance data type * Add method to draw pie and chord, optimize shaders * Add rendering with three cap types of stroke arcs initially * Implement Atlas text op at low level, improve solid color fast path, trying to handle primitive color * Fix ScalerContext_JDK does not return a reliable glyph bounds * Fix DrawAtlas assertion and GlyphAtlasManager row stride * Fix Strike and ScalerContext bugs, remove stroke cap in StrikeDesc * Improve finite check and non-invertible matrix * Add RendererProvider to manage GeometryRenderers * Finish implementation of atlas management for draw ops and glyph atlas * Calculate the Path byte size when generating Glyph in Strike * Implement Strike, StrikeCache, and ScalerContext basically * Add Paint.setPathEffect(), add missing javadoc in Font * Add Path.transform(), add PathIterator.getFillRule() * Add GPU dithering implementation (no texture lookup) * Fix GLCaps.FormatInfo for RGB565 * Update Paint and related classes * Make Blender and ColorFilter strictly ref-counted * Add Shader.isConstant() * Fix Canvas.drawCircle() * Add Paint.setColor4f() * Fix Paint.setStrokeWidth() and Paint.setStrokeMiter() for NaN values * Remove Paint's SmoothWidth, MaskFilter and ImageFilter * Add PathEffect skeleton class * Fix several hashCode implementation for negative zeros * Update Paint.nothingToDraw() for more blend modes * Add more methods to RoundRect * Update Surface, Canvas, and related classes * Add Stroke, PathIterable, update PathStroker * Optimize shaders * Use short-circuit for transfer function * Use texelFetch for cubic shader, remove invImageSize uniform * Add perspective correction for local matrix shader * Extract color space transform from image shaders * Ensure subset sampling does not use mipmaps * Implement bicubic and strict subset sampling * Change AnalyticSimpleBoxStep to use L1 norm * Fix bug on GLImageDesc.equals() * Fix bug on uniform block layout * Change Paint constants and SamplingOptions, adding classes for text rendering * Done depth stencil work, fix several bugs * Add flipY and unorm clamp for PixelUtils * Implement LinearGradient, RadialGradient, AngularGradient * Fix bugs on ImageShader.makeSubset() * Fix bugs on premul & unpremul in some classes * Improve ColorSpace transform, add PixelUtils.convertPixels() * Add new ColorSpace transform shader * Fix GLSampler TEXTURE_WRAP_R is not set, add validation for SamplerDesc * Fix Matrix4.invert, add Matrix.toMatrix4, fix UniformDataGatherer for mat3 * Make Paint, PaintParams, and Draw classes closeable * Fix TextureTracker; rename gradient shaders * Optimize box shader * Accumulated updates on fragment effects and shading pipeline * Implement simple pixel upload using image-to-image copy * Add new Shader and ColorFilter classes * Rename PixelMap to Pixmap, PixelRef to Pixels * Switch slow JNI to PixelUtils.copyImage() for array to off-heap copy * Remove the offset parameter of Buffer.unmap() * Finish AnalyticSimpleBoxStep * Allow implicit conversion between numerics * Add DepthStencilSettings and BoundsManager, limit the number of geometry steps * Optimize vertex writer and uniform writer, optimize uniform data deduplication * Basically complete the Granite Renderer * Add geometry projection, solid color simplification * Finish RenderPassTask execution Fix scissor origin, initial scissor setup * Complete DrawPass's texture sampler binding * Add TextureDataGatherer, texture sampler binding and tracker * Add UniformDataGatherer and UniformDataCache * Fix Matrix4.store() * Add framebuffer creation and some tests * Some work on new PipelineBuilder * Update Buffer, GLBuffer, persistent mapping and so on * Accumulative updates for new renderer * Add method for updating clip draws * Update ClipStack * Improve vertex specification and buffer binding * Rename the project from 'Arc 3D' to 'Arc3D' * Commit all accumulative updates * Change BlendMode.apply() to static methods * Accumulative updates for the new pipeline * Attempt to refactor pipeline * Add more classes for new pipeline * Add frexp & ldexp impl * Some attempts on pipeline * Refactor GPU Image, RenderTarget, SurfaceProxy classes; remove Texture * Add Image and Framebuffer creation, add reusable framebuffers * Refactor GpuResource class hierarchy * Support GL_CONTEXT_LOST * Tons of work on Engine and OpenGL backend, not listed * Add pre-defined extensions to compile options * A lot of work on abstraction between GL3 and GLES3 * Initially add GLInterface for both OpenGL & OpenGL ES support * Add std140/std430 layout qualifiers, add include directive parsing * Abandon usage of GLSL ARB extensions that core in later versions * Fix GLCaps crash for some capabilities * Fix some bugs in preprocessing * Other improvements * Add new preprocessing methods, allow sub-range source * Add StringLiteral grammar, fix Whitespace grammar * Add FatalError to terminate compiler * Add identifier name length check (1024 at most) * Add benchmark between Arc3D and shaderc (glslang) * Update Lexer * Add directive grammar * Add 'using' grammar for type aliases * Add newline token, fix block comment grammar
3.11.0.2 Release 15.09.2024

Modern UI 3.11.0.2 (Forge)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.11.0.2 #### NeoForge Extension 1.20.4 * Add MinecraftSurfaceView to handle raw rendering calls * Ensure that all (native/GPU) resources are closed when the game exits * Slightly improve the Center UI * Fix a random crash when opening/closing UI frequently * Rework tooltip rendering - Add white noise to shadow - Add dithering to gradient colors - Use L1 norm instead of L2 norm for coverage antialiasing - Change shadow approximation method - Change default border radius and shadow alpha - Add new conditions for adding the extra space below tooltip title line - If the first three lines of the tooltip have different styles, we consider the first line as the title - Reduce the saturation of default tooltip colors * Allow using arrow keys to manually scroll the tooltip * Add small epsilon to text Z value for tooltip rendering to work around FP errors on some GPUs * Optimize blur effect - Use texelFetch instead of texture - Remove the additional blit pass and render target because we work around a Minecraft bug - Try to cache the shader program and temporary render target for blurring, and handle errors - Apply blur effect to the screen background instead of the world, just like Minecraft 1.21 * Migrate to new rendering pipeline #### Forge Extension 1.20.4 * Equivalent to NeoForge version #### Fabric Extension 1.20.4 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.20.4 * Add compatibility for bitmap fonts with custom text shader * Enable linear metrics and disable font hinting by default * Add config to change the minimum pixel density for SDF text * Fix some possible bugs on text rendering * Optimize text rendering - Add texture cleanup to FontResourceManager - Simplify text layout rendering code - Use Math.round for aligning pixels - Fix glyph info for FontSet compatibility * Rework and optimize bitmap font rendering - Try to stitch bitmap font into atlas - Try to discard bitmap fonts if they have negative metrics, transparent pixels, or huge metrics - Saturate glyph metrics for bitmap font - Fix hashCode and equals for correct de-duplication * Adjust lod bias for normal text shader * Adjust bitmap font to match vanilla behavior - Adjust glyph advance calculation * Adjust Unicode font loading behavior - Any reference to vanilla Unicode font and UNIHEX font will redirect to current ModernUI default typeface list instead of system fonts, except for Minecraft default font set * Fix text layout bug when finding style transitions * Allow caching the missing glyph to atlas * Adopt full text rendering technology from core framework * Fix line breaker that may output no lines and keep consistency with vanilla behavior - This fix a bug with IBE Editor * Fix text strike cache invalidation for FontSet compatibility - This fix a bug with Create * Add text layout dump in advanced options * Add a command for debugging line breaker * Add methods for debugging text engine #### Core Framework * Enable linear text by default, increase layout cache limit * Delete render thread executor * Delete old text rendering code * Add GradientDrawable that draw shapes with gradient colors * Update/fix ShapeDrawable with latest rendering pipeline * Add set/get ColorFilter to Drawable and ImageView Add ImageView.setImageTintBlendMode * Rework ImageDrawable.setSrcRect() method * Update ImageDrawable with antialias, dither, filter, and tile modes * Add setter/getter to change blend mode for edge effect * Change default blend mode for EdgeEffect from SRC_OVER to SRC_ATOP * Fix Matrix.mapRect() * Fix EdgeEffect centerX * Improve text rendering * Add AngularGradient API and implementation * Add RadialGradient API and implementation * Add LinearGradient API and implementation * Add GradientShader API and implementation * Add new draw methods to Canvas class * Add BlendModeColorFilter and make it work finally, default blend mode for ImageDrawable is SRC_IN * Add ColorFilter class that can be installed on Paint * Refactor Image class and fix Image.close() issue * Refactor Paint class * Add ImageShader class * Add Shader class that can be installed on Paint * Add TextView.setTextSize() that specifies a unit, default is sp * Full migration to the new rendering pipeline, Arc3D Granite Renderer; delete old GLSurfaceCanvas * Avoid re-layout on window minimized, since framebuffer is destroyed and size is 0 * Deprecate Canvas.saveLayer() for future layer compositor and render tree #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Remove old usage of Image.getSurfaceFlags * Add Image.getUniqueID() and static methods to create raster images * Add utility NoDrawCanvas NWayCanvas and PaintFilterCanvas * Fix Matrix.mapRect() is not correct * Fix compiler error * Optimize text ops if subRunToDevice is translation-only and pipeline does not require local coords trivially * Optimize matrix computation for text ops * Replace Matrix4 in rendering code with Matrix * Make Matrix4() construct an identity matrix, and Matrix4.identity() return a read-only identity matrix * Fix TextBlobBuilder offsets not reset after build * Add RoundRect flatten methods * Improve NoPixelsDevice clip tracking, remove ConservativeClip * Add DrawAtlas.purge() to free unused pages * Add implementation for gradients in other interpolation color spaces and for all hue interpolation methods * Allow DrawAtlas to perform an immediate compact * Rename some classes and methods * Change the default uniform buffer block size to 32KB * Fix color array copy in Vertices::makeCopy * Fix persistent mapping check in GLBuffer * Temporarily enable RGB texture in OpenGL * Try to share vertex array objects in OpenGL backend * Expose resource cleanup API, also cleanup framebuffer cache and strike cache * Review ResourceCache, fix some legacy issues * Add support for alpha-only images, add missing Shaders shader implementation * Purge framebuffers immediately after one attachment was destroyed * Complete the compatibility with OpenGL 3.3 and OpenGL ES 3.0 * Improve texture and renderbuffer creation * Deprecate old Device methods * Fix OpenGL 3.3 and GLSL 330 compatibility * Finalize BoundsManager, add samples * Add plus_clamped, minus, and minus_clamped blend info * Remove 01 coverage in non-aa case * Add blend equation in GL backend * Mark old code as deprecated * Implement basic functionality for final blender, enable dual source blending * Fully implement BakedTextBlob and TextBlobCache for text rendering * Fix blend shader doesn't compile * Add TextBlob as an immutable container for glyph rendering * Rework FramebufferDesc, add FramebufferCache to manage framebuffers * Basically implement texture copy task, implement Surface.onNewImageSnapshot() * Add factory method to create Surface * Implement Device management * Invalidate atlases if RC.snap() failed * Fix several threading issues for OpenGL backend * Handle ColorFilter properly * Add BlendModeShader * Fix color space transformation on paint's solid color * Add primitive color blending and color space transform * Add blending with shader and paint's alpha * Fix color space transformation on BlendModeColorFilter * Add implementation of BlendModeShader and BlendModeColorFilter * Remove Geometry interface * Add Vertices class and Vertices step to drawVertices * Add shader implementation for 42 blend modes * Fix arg name for uniforms that start with no mangle prefix * Add StaticBufferManager and Buffer-to-Buffer copy task * Fix ImageUploadTask bug * Implement remaining important Canvas methods * Add and implement new Canvas methods in Device * Fix depth is perspective-correct; the depth should be preserved, then multiply it by w. * Fix bugs on arc shader with square end * Finish methods to create and draw GlyphRuns * Add method to set Matrix elements * Fix Matrix4.hashCode() for negative zero * Add Geometry.getBounds() to compute bounds * Improve ClipStack to compute several bounds * Fix stroke inflation radius computation for inner and outer stroke * Optimize draw when it does not depend on dst * Fix several issues on Device * Implement the creation of AtlasSubRuns * Add method to compute res scales if matrix has perspective * Fix AnalyticSimpleBoxStep instance data type * Add method to draw pie and chord, optimize shaders * Add rendering with three cap types of stroke arcs initially * Implement Atlas text op at low level, improve solid color fast path, trying to handle primitive color * Fix ScalerContext_JDK does not return a reliable glyph bounds * Fix DrawAtlas assertion and GlyphAtlasManager row stride * Fix Strike and ScalerContext bugs, remove stroke cap in StrikeDesc * Improve finite check and non-invertible matrix * Add RendererProvider to manage GeometryRenderers * Finish implementation of atlas management for draw ops and glyph atlas * Calculate the Path byte size when generating Glyph in Strike * Implement Strike, StrikeCache, and ScalerContext basically * Add Paint.setPathEffect(), add missing javadoc in Font * Add Path.transform(), add PathIterator.getFillRule() * Add GPU dithering implementation (no texture lookup) * Fix GLCaps.FormatInfo for RGB565 * Update Paint and related classes * Make Blender and ColorFilter strictly ref-counted * Add Shader.isConstant() * Fix Canvas.drawCircle() * Add Paint.setColor4f() * Fix Paint.setStrokeWidth() and Paint.setStrokeMiter() for NaN values * Remove Paint's SmoothWidth, MaskFilter and ImageFilter * Add PathEffect skeleton class * Fix several hashCode implementation for negative zeros * Update Paint.nothingToDraw() for more blend modes * Add more methods to RoundRect * Update Surface, Canvas, and related classes * Add Stroke, PathIterable, update PathStroker * Optimize shaders * Use short-circuit for transfer function * Use texelFetch for cubic shader, remove invImageSize uniform * Add perspective correction for local matrix shader * Extract color space transform from image shaders * Ensure subset sampling does not use mipmaps * Implement bicubic and strict subset sampling * Change AnalyticSimpleBoxStep to use L1 norm * Fix bug on GLImageDesc.equals() * Fix bug on uniform block layout * Change Paint constants and SamplingOptions, adding classes for text rendering * Done depth stencil work, fix several bugs * Add flipY and unorm clamp for PixelUtils * Implement LinearGradient, RadialGradient, AngularGradient * Fix bugs on ImageShader.makeSubset() * Fix bugs on premul & unpremul in some classes * Improve ColorSpace transform, add PixelUtils.convertPixels() * Add new ColorSpace transform shader * Fix GLSampler TEXTURE_WRAP_R is not set, add validation for SamplerDesc * Fix Matrix4.invert, add Matrix.toMatrix4, fix UniformDataGatherer for mat3 * Make Paint, PaintParams, and Draw classes closeable * Fix TextureTracker; rename gradient shaders * Optimize box shader * Accumulated updates on fragment effects and shading pipeline * Implement simple pixel upload using image-to-image copy * Add new Shader and ColorFilter classes * Rename PixelMap to Pixmap, PixelRef to Pixels * Switch slow JNI to PixelUtils.copyImage() for array to off-heap copy * Remove the offset parameter of Buffer.unmap() * Finish AnalyticSimpleBoxStep * Allow implicit conversion between numerics * Add DepthStencilSettings and BoundsManager, limit the number of geometry steps * Optimize vertex writer and uniform writer, optimize uniform data deduplication * Basically complete the Granite Renderer * Add geometry projection, solid color simplification * Finish RenderPassTask execution Fix scissor origin, initial scissor setup * Complete DrawPass's texture sampler binding * Add TextureDataGatherer, texture sampler binding and tracker * Add UniformDataGatherer and UniformDataCache * Fix Matrix4.store() * Add framebuffer creation and some tests * Some work on new PipelineBuilder * Update Buffer, GLBuffer, persistent mapping and so on * Accumulative updates for new renderer * Add method for updating clip draws * Update ClipStack * Improve vertex specification and buffer binding * Rename the project from 'Arc 3D' to 'Arc3D' * Commit all accumulative updates * Change BlendMode.apply() to static methods * Accumulative updates for the new pipeline * Attempt to refactor pipeline * Add more classes for new pipeline * Add frexp & ldexp impl * Some attempts on pipeline * Refactor GPU Image, RenderTarget, SurfaceProxy classes; remove Texture * Add Image and Framebuffer creation, add reusable framebuffers * Refactor GpuResource class hierarchy * Support GL_CONTEXT_LOST * Tons of work on Engine and OpenGL backend, not listed * Add pre-defined extensions to compile options * A lot of work on abstraction between GL3 and GLES3 * Initially add GLInterface for both OpenGL & OpenGL ES support * Add std140/std430 layout qualifiers, add include directive parsing * Abandon usage of GLSL ARB extensions that core in later versions * Fix GLCaps crash for some capabilities * Fix some bugs in preprocessing * Other improvements * Add new preprocessing methods, allow sub-range source * Add StringLiteral grammar, fix Whitespace grammar * Add FatalError to terminate compiler * Add identifier name length check (1024 at most) * Add benchmark between Arc3D and shaderc (glslang) * Update Lexer * Add directive grammar * Add 'using' grammar for type aliases * Add newline token, fix block comment grammar
3.11.0.2 Release 15.09.2024

Modern UI 3.11.0.2 (NeoForge)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.11.0.2 #### NeoForge Extension 1.20.4 * Add MinecraftSurfaceView to handle raw rendering calls * Ensure that all (native/GPU) resources are closed when the game exits * Slightly improve the Center UI * Fix a random crash when opening/closing UI frequently * Rework tooltip rendering - Add white noise to shadow - Add dithering to gradient colors - Use L1 norm instead of L2 norm for coverage antialiasing - Change shadow approximation method - Change default border radius and shadow alpha - Add new conditions for adding the extra space below tooltip title line - If the first three lines of the tooltip have different styles, we consider the first line as the title - Reduce the saturation of default tooltip colors * Allow using arrow keys to manually scroll the tooltip * Add small epsilon to text Z value for tooltip rendering to work around FP errors on some GPUs * Optimize blur effect - Use texelFetch instead of texture - Remove the additional blit pass and render target because we work around a Minecraft bug - Try to cache the shader program and temporary render target for blurring, and handle errors - Apply blur effect to the screen background instead of the world, just like Minecraft 1.21 * Migrate to new rendering pipeline #### Forge Extension 1.20.4 * Equivalent to NeoForge version #### Fabric Extension 1.20.4 * Functionally equivalent to NeoForge version #### Modern Text Engine 1.20.4 * Add compatibility for bitmap fonts with custom text shader * Enable linear metrics and disable font hinting by default * Add config to change the minimum pixel density for SDF text * Fix some possible bugs on text rendering * Optimize text rendering - Add texture cleanup to FontResourceManager - Simplify text layout rendering code - Use Math.round for aligning pixels - Fix glyph info for FontSet compatibility * Rework and optimize bitmap font rendering - Try to stitch bitmap font into atlas - Try to discard bitmap fonts if they have negative metrics, transparent pixels, or huge metrics - Saturate glyph metrics for bitmap font - Fix hashCode and equals for correct de-duplication * Adjust lod bias for normal text shader * Adjust bitmap font to match vanilla behavior - Adjust glyph advance calculation * Adjust Unicode font loading behavior - Any reference to vanilla Unicode font and UNIHEX font will redirect to current ModernUI default typeface list instead of system fonts, except for Minecraft default font set * Fix text layout bug when finding style transitions * Allow caching the missing glyph to atlas * Adopt full text rendering technology from core framework * Fix line breaker that may output no lines and keep consistency with vanilla behavior - This fix a bug with IBE Editor * Fix text strike cache invalidation for FontSet compatibility - This fix a bug with Create * Add text layout dump in advanced options * Add a command for debugging line breaker * Add methods for debugging text engine #### Core Framework * Enable linear text by default, increase layout cache limit * Delete render thread executor * Delete old text rendering code * Add GradientDrawable that draw shapes with gradient colors * Update/fix ShapeDrawable with latest rendering pipeline * Add set/get ColorFilter to Drawable and ImageView Add ImageView.setImageTintBlendMode * Rework ImageDrawable.setSrcRect() method * Update ImageDrawable with antialias, dither, filter, and tile modes * Add setter/getter to change blend mode for edge effect * Change default blend mode for EdgeEffect from SRC_OVER to SRC_ATOP * Fix Matrix.mapRect() * Fix EdgeEffect centerX * Improve text rendering * Add AngularGradient API and implementation * Add RadialGradient API and implementation * Add LinearGradient API and implementation * Add GradientShader API and implementation * Add new draw methods to Canvas class * Add BlendModeColorFilter and make it work finally, default blend mode for ImageDrawable is SRC_IN * Add ColorFilter class that can be installed on Paint * Refactor Image class and fix Image.close() issue * Refactor Paint class * Add ImageShader class * Add Shader class that can be installed on Paint * Add TextView.setTextSize() that specifies a unit, default is sp * Full migration to the new rendering pipeline, Arc3D Granite Renderer; delete old GLSurfaceCanvas * Avoid re-layout on window minimized, since framebuffer is destroyed and size is 0 * Deprecate Canvas.saveLayer() for future layer compositor and render tree #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Remove old usage of Image.getSurfaceFlags * Add Image.getUniqueID() and static methods to create raster images * Add utility NoDrawCanvas NWayCanvas and PaintFilterCanvas * Fix Matrix.mapRect() is not correct * Fix compiler error * Optimize text ops if subRunToDevice is translation-only and pipeline does not require local coords trivially * Optimize matrix computation for text ops * Replace Matrix4 in rendering code with Matrix * Make Matrix4() construct an identity matrix, and Matrix4.identity() return a read-only identity matrix * Fix TextBlobBuilder offsets not reset after build * Add RoundRect flatten methods * Improve NoPixelsDevice clip tracking, remove ConservativeClip * Add DrawAtlas.purge() to free unused pages * Add implementation for gradients in other interpolation color spaces and for all hue interpolation methods * Allow DrawAtlas to perform an immediate compact * Rename some classes and methods * Change the default uniform buffer block size to 32KB * Fix color array copy in Vertices::makeCopy * Fix persistent mapping check in GLBuffer * Temporarily enable RGB texture in OpenGL * Try to share vertex array objects in OpenGL backend * Expose resource cleanup API, also cleanup framebuffer cache and strike cache * Review ResourceCache, fix some legacy issues * Add support for alpha-only images, add missing Shaders shader implementation * Purge framebuffers immediately after one attachment was destroyed * Complete the compatibility with OpenGL 3.3 and OpenGL ES 3.0 * Improve texture and renderbuffer creation * Deprecate old Device methods * Fix OpenGL 3.3 and GLSL 330 compatibility * Finalize BoundsManager, add samples * Add plus_clamped, minus, and minus_clamped blend info * Remove 01 coverage in non-aa case * Add blend equation in GL backend * Mark old code as deprecated * Implement basic functionality for final blender, enable dual source blending * Fully implement BakedTextBlob and TextBlobCache for text rendering * Fix blend shader doesn't compile * Add TextBlob as an immutable container for glyph rendering * Rework FramebufferDesc, add FramebufferCache to manage framebuffers * Basically implement texture copy task, implement Surface.onNewImageSnapshot() * Add factory method to create Surface * Implement Device management * Invalidate atlases if RC.snap() failed * Fix several threading issues for OpenGL backend * Handle ColorFilter properly * Add BlendModeShader * Fix color space transformation on paint's solid color * Add primitive color blending and color space transform * Add blending with shader and paint's alpha * Fix color space transformation on BlendModeColorFilter * Add implementation of BlendModeShader and BlendModeColorFilter * Remove Geometry interface * Add Vertices class and Vertices step to drawVertices * Add shader implementation for 42 blend modes * Fix arg name for uniforms that start with no mangle prefix * Add StaticBufferManager and Buffer-to-Buffer copy task * Fix ImageUploadTask bug * Implement remaining important Canvas methods * Add and implement new Canvas methods in Device * Fix depth is perspective-correct; the depth should be preserved, then multiply it by w. * Fix bugs on arc shader with square end * Finish methods to create and draw GlyphRuns * Add method to set Matrix elements * Fix Matrix4.hashCode() for negative zero * Add Geometry.getBounds() to compute bounds * Improve ClipStack to compute several bounds * Fix stroke inflation radius computation for inner and outer stroke * Optimize draw when it does not depend on dst * Fix several issues on Device * Implement the creation of AtlasSubRuns * Add method to compute res scales if matrix has perspective * Fix AnalyticSimpleBoxStep instance data type * Add method to draw pie and chord, optimize shaders * Add rendering with three cap types of stroke arcs initially * Implement Atlas text op at low level, improve solid color fast path, trying to handle primitive color * Fix ScalerContext_JDK does not return a reliable glyph bounds * Fix DrawAtlas assertion and GlyphAtlasManager row stride * Fix Strike and ScalerContext bugs, remove stroke cap in StrikeDesc * Improve finite check and non-invertible matrix * Add RendererProvider to manage GeometryRenderers * Finish implementation of atlas management for draw ops and glyph atlas * Calculate the Path byte size when generating Glyph in Strike * Implement Strike, StrikeCache, and ScalerContext basically * Add Paint.setPathEffect(), add missing javadoc in Font * Add Path.transform(), add PathIterator.getFillRule() * Add GPU dithering implementation (no texture lookup) * Fix GLCaps.FormatInfo for RGB565 * Update Paint and related classes * Make Blender and ColorFilter strictly ref-counted * Add Shader.isConstant() * Fix Canvas.drawCircle() * Add Paint.setColor4f() * Fix Paint.setStrokeWidth() and Paint.setStrokeMiter() for NaN values * Remove Paint's SmoothWidth, MaskFilter and ImageFilter * Add PathEffect skeleton class * Fix several hashCode implementation for negative zeros * Update Paint.nothingToDraw() for more blend modes * Add more methods to RoundRect * Update Surface, Canvas, and related classes * Add Stroke, PathIterable, update PathStroker * Optimize shaders * Use short-circuit for transfer function * Use texelFetch for cubic shader, remove invImageSize uniform * Add perspective correction for local matrix shader * Extract color space transform from image shaders * Ensure subset sampling does not use mipmaps * Implement bicubic and strict subset sampling * Change AnalyticSimpleBoxStep to use L1 norm * Fix bug on GLImageDesc.equals() * Fix bug on uniform block layout * Change Paint constants and SamplingOptions, adding classes for text rendering * Done depth stencil work, fix several bugs * Add flipY and unorm clamp for PixelUtils * Implement LinearGradient, RadialGradient, AngularGradient * Fix bugs on ImageShader.makeSubset() * Fix bugs on premul & unpremul in some classes * Improve ColorSpace transform, add PixelUtils.convertPixels() * Add new ColorSpace transform shader * Fix GLSampler TEXTURE_WRAP_R is not set, add validation for SamplerDesc * Fix Matrix4.invert, add Matrix.toMatrix4, fix UniformDataGatherer for mat3 * Make Paint, PaintParams, and Draw classes closeable * Fix TextureTracker; rename gradient shaders * Optimize box shader * Accumulated updates on fragment effects and shading pipeline * Implement simple pixel upload using image-to-image copy * Add new Shader and ColorFilter classes * Rename PixelMap to Pixmap, PixelRef to Pixels * Switch slow JNI to PixelUtils.copyImage() for array to off-heap copy * Remove the offset parameter of Buffer.unmap() * Finish AnalyticSimpleBoxStep * Allow implicit conversion between numerics * Add DepthStencilSettings and BoundsManager, limit the number of geometry steps * Optimize vertex writer and uniform writer, optimize uniform data deduplication * Basically complete the Granite Renderer * Add geometry projection, solid color simplification * Finish RenderPassTask execution Fix scissor origin, initial scissor setup * Complete DrawPass's texture sampler binding * Add TextureDataGatherer, texture sampler binding and tracker * Add UniformDataGatherer and UniformDataCache * Fix Matrix4.store() * Add framebuffer creation and some tests * Some work on new PipelineBuilder * Update Buffer, GLBuffer, persistent mapping and so on * Accumulative updates for new renderer * Add method for updating clip draws * Update ClipStack * Improve vertex specification and buffer binding * Rename the project from 'Arc 3D' to 'Arc3D' * Commit all accumulative updates * Change BlendMode.apply() to static methods * Accumulative updates for the new pipeline * Attempt to refactor pipeline * Add more classes for new pipeline * Add frexp & ldexp impl * Some attempts on pipeline * Refactor GPU Image, RenderTarget, SurfaceProxy classes; remove Texture * Add Image and Framebuffer creation, add reusable framebuffers * Refactor GpuResource class hierarchy * Support GL_CONTEXT_LOST * Tons of work on Engine and OpenGL backend, not listed * Add pre-defined extensions to compile options * A lot of work on abstraction between GL3 and GLES3 * Initially add GLInterface for both OpenGL & OpenGL ES support * Add std140/std430 layout qualifiers, add include directive parsing * Abandon usage of GLSL ARB extensions that core in later versions * Fix GLCaps crash for some capabilities * Fix some bugs in preprocessing * Other improvements * Add new preprocessing methods, allow sub-range source * Add StringLiteral grammar, fix Whitespace grammar * Add FatalError to terminate compiler * Add identifier name length check (1024 at most) * Add benchmark between Arc3D and shaderc (glslang) * Update Lexer * Add directive grammar * Add 'using' grammar for type aliases * Add newline token, fix block comment grammar
3.11.0.1 Release 15.09.2024

Modern UI 3.11.0.1 (Fabric)

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.11.0.1 #### Forge Extension 1.20.1 / NeoForge Extension 1.20.1 * Add MinecraftSurfaceView to handle raw rendering calls * Ensure that all (native/GPU) resources are closed when the game exits * Slightly improve the Center UI * Fix a random crash when opening/closing UI frequently * Rework tooltip rendering - Add white noise to shadow - Add dithering to gradient colors - Use L1 norm instead of L2 norm for coverage antialiasing - Change shadow approximation method - Change default border radius and shadow alpha - Add new conditions for adding the extra space below tooltip title line - If the first three lines of the tooltip have different styles, we consider the first line as the title - Reduce the saturation of default tooltip colors * Allow using arrow keys to manually scroll the tooltip * Add small epsilon to text Z value for tooltip rendering to work around FP errors on some GPUs * Optimize blur effect - Use texelFetch instead of texture - Remove the additional blit pass and render target because we work around a Minecraft bug - Try to cache the shader program and temporary render target for blurring, and handle errors - Apply blur effect to the screen background instead of the world, just like Minecraft 1.20.6 * Migrate to new rendering pipeline #### Fabric Extension 1.20.1 * Add support for Minecraft 1.20 * Fix key binding not working in some cases * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.1 * Add compatibility for bitmap fonts with custom text shader * Enable linear metrics and disable font hinting by default * Add config to change the minimum pixel density for SDF text * Fix some possible bugs on text rendering * Optimize text rendering - Add texture cleanup to FontResourceManager - Simplify text layout rendering code - Use Math.round for aligning pixels - Fix glyph info for FontSet compatibility * Rework and optimize bitmap font rendering - Try to stitch bitmap font into atlas - Try to discard bitmap fonts if they have negative metrics, transparent pixels, or huge metrics - Saturate glyph metrics for bitmap font - Fix hashCode and equals for correct de-duplication * Adjust lod bias for normal text shader * Adjust bitmap font to match vanilla behavior - Adjust glyph advance calculation * Adjust Unicode font loading behavior - Any reference to vanilla Unicode font and UNIHEX font will redirect to current ModernUI default typeface list instead of system fonts, except for Minecraft default font set * Fix text layout bug when finding style transitions * Allow caching the missing glyph to atlas * Adopt full text rendering technology from core framework * Fix line breaker that may output no lines and keep consistency with vanilla behavior - This fix a bug with IBE Editor * Fix text strike cache invalidation for FontSet compatibility - This fix a bug with Create * Add text layout dump in advanced options * Add a command for debugging line breaker * Add methods for debugging text engine #### Core Framework * Enable linear text by default, increase layout cache limit * Delete render thread executor * Delete old text rendering code * Add GradientDrawable that draw shapes with gradient colors * Update/fix ShapeDrawable with latest rendering pipeline * Add set/get ColorFilter to Drawable and ImageView Add ImageView.setImageTintBlendMode * Rework ImageDrawable.setSrcRect() method * Update ImageDrawable with antialias, dither, filter, and tile modes * Add setter/getter to change blend mode for edge effect * Change default blend mode for EdgeEffect from SRC_OVER to SRC_ATOP * Fix Matrix.mapRect() * Fix EdgeEffect centerX * Improve text rendering * Add AngularGradient API and implementation * Add RadialGradient API and implementation * Add LinearGradient API and implementation * Add GradientShader API and implementation * Add new draw methods to Canvas class * Add BlendModeColorFilter and make it work finally, default blend mode for ImageDrawable is SRC_IN * Add ColorFilter class that can be installed on Paint * Refactor Image class and fix Image.close() issue * Refactor Paint class * Add ImageShader class * Add Shader class that can be installed on Paint * Add TextView.setTextSize() that specifies a unit, default is sp * Full migration to the new rendering pipeline, Arc3D Granite Renderer; delete old GLSurfaceCanvas * Avoid re-layout on window minimized, since framebuffer is destroyed and size is 0 * Deprecate Canvas.saveLayer() for future layer compositor and render tree #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Remove old usage of Image.getSurfaceFlags * Add Image.getUniqueID() and static methods to create raster images * Add utility NoDrawCanvas NWayCanvas and PaintFilterCanvas * Fix Matrix.mapRect() is not correct * Fix compiler error * Optimize text ops if subRunToDevice is translation-only and pipeline does not require local coords trivially * Optimize matrix computation for text ops * Replace Matrix4 in rendering code with Matrix * Make Matrix4() construct an identity matrix, and Matrix4.identity() return a read-only identity matrix * Fix TextBlobBuilder offsets not reset after build * Add RoundRect flatten methods * Improve NoPixelsDevice clip tracking, remove ConservativeClip * Add DrawAtlas.purge() to free unused pages * Add implementation for gradients in other interpolation color spaces and for all hue interpolation methods * Allow DrawAtlas to perform an immediate compact * Rename some classes and methods * Change the default uniform buffer block size to 32KB * Fix color array copy in Vertices::makeCopy * Fix persistent mapping check in GLBuffer * Temporarily enable RGB texture in OpenGL * Try to share vertex array objects in OpenGL backend * Expose resource cleanup API, also cleanup framebuffer cache and strike cache * Review ResourceCache, fix some legacy issues * Add support for alpha-only images, add missing Shaders shader implementation * Purge framebuffers immediately after one attachment was destroyed * Complete the compatibility with OpenGL 3.3 and OpenGL ES 3.0 * Improve texture and renderbuffer creation * Deprecate old Device methods * Fix OpenGL 3.3 and GLSL 330 compatibility * Finalize BoundsManager, add samples * Add plus_clamped, minus, and minus_clamped blend info * Remove 01 coverage in non-aa case * Add blend equation in GL backend * Mark old code as deprecated * Implement basic functionality for final blender, enable dual source blending * Fully implement BakedTextBlob and TextBlobCache for text rendering * Fix blend shader doesn't compile * Add TextBlob as an immutable container for glyph rendering * Rework FramebufferDesc, add FramebufferCache to manage framebuffers * Basically implement texture copy task, implement Surface.onNewImageSnapshot() * Add factory method to create Surface * Implement Device management * Invalidate atlases if RC.snap() failed * Fix several threading issues for OpenGL backend * Handle ColorFilter properly * Add BlendModeShader * Fix color space transformation on paint's solid color * Add primitive color blending and color space transform * Add blending with shader and paint's alpha * Fix color space transformation on BlendModeColorFilter * Add implementation of BlendModeShader and BlendModeColorFilter * Remove Geometry interface * Add Vertices class and Vertices step to drawVertices * Add shader implementation for 42 blend modes * Fix arg name for uniforms that start with no mangle prefix * Add StaticBufferManager and Buffer-to-Buffer copy task * Fix ImageUploadTask bug * Implement remaining important Canvas methods * Add and implement new Canvas methods in Device * Fix depth is perspective-correct; the depth should be preserved, then multiply it by w. * Fix bugs on arc shader with square end * Finish methods to create and draw GlyphRuns * Add method to set Matrix elements * Fix Matrix4.hashCode() for negative zero * Add Geometry.getBounds() to compute bounds * Improve ClipStack to compute several bounds * Fix stroke inflation radius computation for inner and outer stroke * Optimize draw when it does not depend on dst * Fix several issues on Device * Implement the creation of AtlasSubRuns * Add method to compute res scales if matrix has perspective * Fix AnalyticSimpleBoxStep instance data type * Add method to draw pie and chord, optimize shaders * Add rendering with three cap types of stroke arcs initially * Implement Atlas text op at low level, improve solid color fast path, trying to handle primitive color * Fix ScalerContext_JDK does not return a reliable glyph bounds * Fix DrawAtlas assertion and GlyphAtlasManager row stride * Fix Strike and ScalerContext bugs, remove stroke cap in StrikeDesc * Improve finite check and non-invertible matrix * Add RendererProvider to manage GeometryRenderers * Finish implementation of atlas management for draw ops and glyph atlas * Calculate the Path byte size when generating Glyph in Strike * Implement Strike, StrikeCache, and ScalerContext basically * Add Paint.setPathEffect(), add missing javadoc in Font * Add Path.transform(), add PathIterator.getFillRule() * Add GPU dithering implementation (no texture lookup) * Fix GLCaps.FormatInfo for RGB565 * Update Paint and related classes * Make Blender and ColorFilter strictly ref-counted * Add Shader.isConstant() * Fix Canvas.drawCircle() * Add Paint.setColor4f() * Fix Paint.setStrokeWidth() and Paint.setStrokeMiter() for NaN values * Remove Paint's SmoothWidth, MaskFilter and ImageFilter * Add PathEffect skeleton class * Fix several hashCode implementation for negative zeros * Update Paint.nothingToDraw() for more blend modes * Add more methods to RoundRect * Update Surface, Canvas, and related classes * Add Stroke, PathIterable, update PathStroker * Optimize shaders * Use short-circuit for transfer function * Use texelFetch for cubic shader, remove invImageSize uniform * Add perspective correction for local matrix shader * Extract color space transform from image shaders * Ensure subset sampling does not use mipmaps * Implement bicubic and strict subset sampling * Change AnalyticSimpleBoxStep to use L1 norm * Fix bug on GLImageDesc.equals() * Fix bug on uniform block layout * Change Paint constants and SamplingOptions, adding classes for text rendering * Done depth stencil work, fix several bugs * Add flipY and unorm clamp for PixelUtils * Implement LinearGradient, RadialGradient, AngularGradient * Fix bugs on ImageShader.makeSubset() * Fix bugs on premul & unpremul in some classes * Improve ColorSpace transform, add PixelUtils.convertPixels() * Add new ColorSpace transform shader * Fix GLSampler TEXTURE_WRAP_R is not set, add validation for SamplerDesc * Fix Matrix4.invert, add Matrix.toMatrix4, fix UniformDataGatherer for mat3 * Make Paint, PaintParams, and Draw classes closeable * Fix TextureTracker; rename gradient shaders * Optimize box shader * Accumulated updates on fragment effects and shading pipeline * Implement simple pixel upload using image-to-image copy * Add new Shader and ColorFilter classes * Rename PixelMap to Pixmap, PixelRef to Pixels * Switch slow JNI to PixelUtils.copyImage() for array to off-heap copy * Remove the offset parameter of Buffer.unmap() * Finish AnalyticSimpleBoxStep * Allow implicit conversion between numerics * Add DepthStencilSettings and BoundsManager, limit the number of geometry steps * Optimize vertex writer and uniform writer, optimize uniform data deduplication * Basically complete the Granite Renderer * Add geometry projection, solid color simplification * Finish RenderPassTask execution Fix scissor origin, initial scissor setup * Complete DrawPass's texture sampler binding * Add TextureDataGatherer, texture sampler binding and tracker * Add UniformDataGatherer and UniformDataCache * Fix Matrix4.store() * Add framebuffer creation and some tests * Some work on new PipelineBuilder * Update Buffer, GLBuffer, persistent mapping and so on * Accumulative updates for new renderer * Add method for updating clip draws * Update ClipStack * Improve vertex specification and buffer binding * Rename the project from 'Arc 3D' to 'Arc3D' * Commit all accumulative updates * Change BlendMode.apply() to static methods * Accumulative updates for the new pipeline * Attempt to refactor pipeline * Add more classes for new pipeline * Add frexp & ldexp impl * Some attempts on pipeline * Refactor GPU Image, RenderTarget, SurfaceProxy classes; remove Texture * Add Image and Framebuffer creation, add reusable framebuffers * Refactor GpuResource class hierarchy * Support GL_CONTEXT_LOST * Tons of work on Engine and OpenGL backend, not listed * Add pre-defined extensions to compile options * A lot of work on abstraction between GL3 and GLES3 * Initially add GLInterface for both OpenGL & OpenGL ES support * Add std140/std430 layout qualifiers, add include directive parsing * Abandon usage of GLSL ARB extensions that core in later versions * Fix GLCaps crash for some capabilities * Fix some bugs in preprocessing * Other improvements * Add new preprocessing methods, allow sub-range source * Add StringLiteral grammar, fix Whitespace grammar * Add FatalError to terminate compiler * Add identifier name length check (1024 at most) * Add benchmark between Arc3D and shaderc (glslang) * Update Lexer * Add directive grammar * Add 'using' grammar for type aliases * Add newline token, fix block comment grammar
3.11.0.1 Release 15.09.2024

Modern UI 3.11.0.1 (Forge)

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
forge neoforge
Показати зміни
### Modern UI 3.11.0.1 #### Forge Extension 1.20.1 / NeoForge Extension 1.20.1 * Add MinecraftSurfaceView to handle raw rendering calls * Ensure that all (native/GPU) resources are closed when the game exits * Slightly improve the Center UI * Fix a random crash when opening/closing UI frequently * Rework tooltip rendering - Add white noise to shadow - Add dithering to gradient colors - Use L1 norm instead of L2 norm for coverage antialiasing - Change shadow approximation method - Change default border radius and shadow alpha - Add new conditions for adding the extra space below tooltip title line - If the first three lines of the tooltip have different styles, we consider the first line as the title - Reduce the saturation of default tooltip colors * Allow using arrow keys to manually scroll the tooltip * Add small epsilon to text Z value for tooltip rendering to work around FP errors on some GPUs * Optimize blur effect - Use texelFetch instead of texture - Remove the additional blit pass and render target because we work around a Minecraft bug - Try to cache the shader program and temporary render target for blurring, and handle errors - Apply blur effect to the screen background instead of the world, just like Minecraft 1.20.6 * Migrate to new rendering pipeline #### Fabric Extension 1.20.1 * Add support for Minecraft 1.20 * Fix key binding not working in some cases * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.1 * Add compatibility for bitmap fonts with custom text shader * Enable linear metrics and disable font hinting by default * Add config to change the minimum pixel density for SDF text * Fix some possible bugs on text rendering * Optimize text rendering - Add texture cleanup to FontResourceManager - Simplify text layout rendering code - Use Math.round for aligning pixels - Fix glyph info for FontSet compatibility * Rework and optimize bitmap font rendering - Try to stitch bitmap font into atlas - Try to discard bitmap fonts if they have negative metrics, transparent pixels, or huge metrics - Saturate glyph metrics for bitmap font - Fix hashCode and equals for correct de-duplication * Adjust lod bias for normal text shader * Adjust bitmap font to match vanilla behavior - Adjust glyph advance calculation * Adjust Unicode font loading behavior - Any reference to vanilla Unicode font and UNIHEX font will redirect to current ModernUI default typeface list instead of system fonts, except for Minecraft default font set * Fix text layout bug when finding style transitions * Allow caching the missing glyph to atlas * Adopt full text rendering technology from core framework * Fix line breaker that may output no lines and keep consistency with vanilla behavior - This fix a bug with IBE Editor * Fix text strike cache invalidation for FontSet compatibility - This fix a bug with Create * Add text layout dump in advanced options * Add a command for debugging line breaker * Add methods for debugging text engine #### Core Framework * Enable linear text by default, increase layout cache limit * Delete render thread executor * Delete old text rendering code * Add GradientDrawable that draw shapes with gradient colors * Update/fix ShapeDrawable with latest rendering pipeline * Add set/get ColorFilter to Drawable and ImageView Add ImageView.setImageTintBlendMode * Rework ImageDrawable.setSrcRect() method * Update ImageDrawable with antialias, dither, filter, and tile modes * Add setter/getter to change blend mode for edge effect * Change default blend mode for EdgeEffect from SRC_OVER to SRC_ATOP * Fix Matrix.mapRect() * Fix EdgeEffect centerX * Improve text rendering * Add AngularGradient API and implementation * Add RadialGradient API and implementation * Add LinearGradient API and implementation * Add GradientShader API and implementation * Add new draw methods to Canvas class * Add BlendModeColorFilter and make it work finally, default blend mode for ImageDrawable is SRC_IN * Add ColorFilter class that can be installed on Paint * Refactor Image class and fix Image.close() issue * Refactor Paint class * Add ImageShader class * Add Shader class that can be installed on Paint * Add TextView.setTextSize() that specifies a unit, default is sp * Full migration to the new rendering pipeline, Arc3D Granite Renderer; delete old GLSurfaceCanvas * Avoid re-layout on window minimized, since framebuffer is destroyed and size is 0 * Deprecate Canvas.saveLayer() for future layer compositor and render tree #### Core Framework - Kotlin Extension * No changes #### Markdown Extension * No changes #### Arc3D Graphics Engine * Remove old usage of Image.getSurfaceFlags * Add Image.getUniqueID() and static methods to create raster images * Add utility NoDrawCanvas NWayCanvas and PaintFilterCanvas * Fix Matrix.mapRect() is not correct * Fix compiler error * Optimize text ops if subRunToDevice is translation-only and pipeline does not require local coords trivially * Optimize matrix computation for text ops * Replace Matrix4 in rendering code with Matrix * Make Matrix4() construct an identity matrix, and Matrix4.identity() return a read-only identity matrix * Fix TextBlobBuilder offsets not reset after build * Add RoundRect flatten methods * Improve NoPixelsDevice clip tracking, remove ConservativeClip * Add DrawAtlas.purge() to free unused pages * Add implementation for gradients in other interpolation color spaces and for all hue interpolation methods * Allow DrawAtlas to perform an immediate compact * Rename some classes and methods * Change the default uniform buffer block size to 32KB * Fix color array copy in Vertices::makeCopy * Fix persistent mapping check in GLBuffer * Temporarily enable RGB texture in OpenGL * Try to share vertex array objects in OpenGL backend * Expose resource cleanup API, also cleanup framebuffer cache and strike cache * Review ResourceCache, fix some legacy issues * Add support for alpha-only images, add missing Shaders shader implementation * Purge framebuffers immediately after one attachment was destroyed * Complete the compatibility with OpenGL 3.3 and OpenGL ES 3.0 * Improve texture and renderbuffer creation * Deprecate old Device methods * Fix OpenGL 3.3 and GLSL 330 compatibility * Finalize BoundsManager, add samples * Add plus_clamped, minus, and minus_clamped blend info * Remove 01 coverage in non-aa case * Add blend equation in GL backend * Mark old code as deprecated * Implement basic functionality for final blender, enable dual source blending * Fully implement BakedTextBlob and TextBlobCache for text rendering * Fix blend shader doesn't compile * Add TextBlob as an immutable container for glyph rendering * Rework FramebufferDesc, add FramebufferCache to manage framebuffers * Basically implement texture copy task, implement Surface.onNewImageSnapshot() * Add factory method to create Surface * Implement Device management * Invalidate atlases if RC.snap() failed * Fix several threading issues for OpenGL backend * Handle ColorFilter properly * Add BlendModeShader * Fix color space transformation on paint's solid color * Add primitive color blending and color space transform * Add blending with shader and paint's alpha * Fix color space transformation on BlendModeColorFilter * Add implementation of BlendModeShader and BlendModeColorFilter * Remove Geometry interface * Add Vertices class and Vertices step to drawVertices * Add shader implementation for 42 blend modes * Fix arg name for uniforms that start with no mangle prefix * Add StaticBufferManager and Buffer-to-Buffer copy task * Fix ImageUploadTask bug * Implement remaining important Canvas methods * Add and implement new Canvas methods in Device * Fix depth is perspective-correct; the depth should be preserved, then multiply it by w. * Fix bugs on arc shader with square end * Finish methods to create and draw GlyphRuns * Add method to set Matrix elements * Fix Matrix4.hashCode() for negative zero * Add Geometry.getBounds() to compute bounds * Improve ClipStack to compute several bounds * Fix stroke inflation radius computation for inner and outer stroke * Optimize draw when it does not depend on dst * Fix several issues on Device * Implement the creation of AtlasSubRuns * Add method to compute res scales if matrix has perspective * Fix AnalyticSimpleBoxStep instance data type * Add method to draw pie and chord, optimize shaders * Add rendering with three cap types of stroke arcs initially * Implement Atlas text op at low level, improve solid color fast path, trying to handle primitive color * Fix ScalerContext_JDK does not return a reliable glyph bounds * Fix DrawAtlas assertion and GlyphAtlasManager row stride * Fix Strike and ScalerContext bugs, remove stroke cap in StrikeDesc * Improve finite check and non-invertible matrix * Add RendererProvider to manage GeometryRenderers * Finish implementation of atlas management for draw ops and glyph atlas * Calculate the Path byte size when generating Glyph in Strike * Implement Strike, StrikeCache, and ScalerContext basically * Add Paint.setPathEffect(), add missing javadoc in Font * Add Path.transform(), add PathIterator.getFillRule() * Add GPU dithering implementation (no texture lookup) * Fix GLCaps.FormatInfo for RGB565 * Update Paint and related classes * Make Blender and ColorFilter strictly ref-counted * Add Shader.isConstant() * Fix Canvas.drawCircle() * Add Paint.setColor4f() * Fix Paint.setStrokeWidth() and Paint.setStrokeMiter() for NaN values * Remove Paint's SmoothWidth, MaskFilter and ImageFilter * Add PathEffect skeleton class * Fix several hashCode implementation for negative zeros * Update Paint.nothingToDraw() for more blend modes * Add more methods to RoundRect * Update Surface, Canvas, and related classes * Add Stroke, PathIterable, update PathStroker * Optimize shaders * Use short-circuit for transfer function * Use texelFetch for cubic shader, remove invImageSize uniform * Add perspective correction for local matrix shader * Extract color space transform from image shaders * Ensure subset sampling does not use mipmaps * Implement bicubic and strict subset sampling * Change AnalyticSimpleBoxStep to use L1 norm * Fix bug on GLImageDesc.equals() * Fix bug on uniform block layout * Change Paint constants and SamplingOptions, adding classes for text rendering * Done depth stencil work, fix several bugs * Add flipY and unorm clamp for PixelUtils * Implement LinearGradient, RadialGradient, AngularGradient * Fix bugs on ImageShader.makeSubset() * Fix bugs on premul & unpremul in some classes * Improve ColorSpace transform, add PixelUtils.convertPixels() * Add new ColorSpace transform shader * Fix GLSampler TEXTURE_WRAP_R is not set, add validation for SamplerDesc * Fix Matrix4.invert, add Matrix.toMatrix4, fix UniformDataGatherer for mat3 * Make Paint, PaintParams, and Draw classes closeable * Fix TextureTracker; rename gradient shaders * Optimize box shader * Accumulated updates on fragment effects and shading pipeline * Implement simple pixel upload using image-to-image copy * Add new Shader and ColorFilter classes * Rename PixelMap to Pixmap, PixelRef to Pixels * Switch slow JNI to PixelUtils.copyImage() for array to off-heap copy * Remove the offset parameter of Buffer.unmap() * Finish AnalyticSimpleBoxStep * Allow implicit conversion between numerics * Add DepthStencilSettings and BoundsManager, limit the number of geometry steps * Optimize vertex writer and uniform writer, optimize uniform data deduplication * Basically complete the Granite Renderer * Add geometry projection, solid color simplification * Finish RenderPassTask execution Fix scissor origin, initial scissor setup * Complete DrawPass's texture sampler binding * Add TextureDataGatherer, texture sampler binding and tracker * Add UniformDataGatherer and UniformDataCache * Fix Matrix4.store() * Add framebuffer creation and some tests * Some work on new PipelineBuilder * Update Buffer, GLBuffer, persistent mapping and so on * Accumulative updates for new renderer * Add method for updating clip draws * Update ClipStack * Improve vertex specification and buffer binding * Rename the project from 'Arc 3D' to 'Arc3D' * Commit all accumulative updates * Change BlendMode.apply() to static methods * Accumulative updates for the new pipeline * Attempt to refactor pipeline * Add more classes for new pipeline * Add frexp & ldexp impl * Some attempts on pipeline * Refactor GPU Image, RenderTarget, SurfaceProxy classes; remove Texture * Add Image and Framebuffer creation, add reusable framebuffers * Refactor GpuResource class hierarchy * Support GL_CONTEXT_LOST * Tons of work on Engine and OpenGL backend, not listed * Add pre-defined extensions to compile options * A lot of work on abstraction between GL3 and GLES3 * Initially add GLInterface for both OpenGL & OpenGL ES support * Add std140/std430 layout qualifiers, add include directive parsing * Abandon usage of GLSL ARB extensions that core in later versions * Fix GLCaps crash for some capabilities * Fix some bugs in preprocessing * Other improvements * Add new preprocessing methods, allow sub-range source * Add StringLiteral grammar, fix Whitespace grammar * Add FatalError to terminate compiler * Add identifier name length check (1024 at most) * Add benchmark between Arc3D and shaderc (glslang) * Update Lexer * Add directive grammar * Add 'using' grammar for type aliases * Add newline token, fix block comment grammar
3.10.1.5 Release 02.04.2024

Modern UI 3.10.1.5 (Fabric)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.10.1.5 #### NeoForge Extension 1.20.4 * Do not use new word breaker in command mode * Add preferences navigation to mods config button * Improve PreferencesFragment * Add API to allow back to previous screen, allow passing a ScreenCallback * Add API to create MuiScreen * Add Segoe UI Symbol to default fallback list * Fix issue with TrueType Collection registration * Add font registration config to register additional fonts * Add modifiers to ACTION_SCROLL event * Add showing layout bounds * Add adaptive tooltip colors * Renew tooltip rendering - Create rendertype_modern_tooltip shader - Interpolate color bilinearly in sRGB space - Better shadow effect, add shadow opacity - Add corner radius config - Adjust auto scrolling velocity - Fix bugs on exact positioning with some mods * Fix a rare crash on config reloading due to thread-safety * Apply blur effect only to screens that have default background (configurable) * Do not use Overwrite for calculateScale * Fix startup crash on server and datagen * Fix EditBox deletion undo not working * Refactor project structure and bootstrap #### Forge Extension 1.20.4 * Remove ScreenCallback capability * Others are equivalent to NeoForge version #### Fabric Extension 1.20.4 * Fix tooltip compatibility with Sodium * Others are functionally equivalent to NeoForge version #### Modern Text Engine 1.20.4 * Change logging level for font loading, enhance onFontRegistered thread-safety * Add new default font behaviors and rule set, allowing regexes to match fonts * Adjust text renderer alpha threshold from 1 to 2 (0-255) * Fix only a very small set of characters can be used for obfuscated rendering * Use Latin1 for FastCharSet * Fix a rare crash on text engine due to batch rendering and display mode changes #### Core Framework 3.10.1 * Update typecast checks, add ArrayMap.forEach * Make FontFamily.createFamily throw Exception * Add FontFamily.createFamilies for TrueType Collection * Add HorizontalScrollView, update ScrollView * Add debug layout to show layout bounds * Optimize Color.parseColor * Add Animatable and Animatable2 * Add some missing javadoc * Use UTF-16 for TextUtils read/write * Add TextPaint.baselineShift and Subscript/SuperscriptSpan * Disable pooling of Message objects * Build against a copy of Arc3D, instead of composite build * Add Canvas.shear / skew, deprecate Canvas.getMatrix * Add TextUtils.concat and TextUtils.join methods * Make use of Java 20 float/half convert instruction * Add CharBuffer support for TextUtils.getChars() #### Core Framework - Kotlin Extension 3.10.1 * No changes #### Markdown 3.10.1 * No changes #### Arc 3D Graphics Engine 3.10.1 * Add 3D shearing transform methods * Improve GL_TEXTURE_SWIZZLE_RGBA compatibility * Tons of updates on DSL shader compiler, including new grammar parsing and SPIR-V generation, no detailed information provided
3.10.1.5 Release 02.04.2024

Modern UI 3.10.1.5 (NeoForge)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.10.1.5 #### NeoForge Extension 1.20.4 * Do not use new word breaker in command mode * Add preferences navigation to mods config button * Improve PreferencesFragment * Add API to allow back to previous screen, allow passing a ScreenCallback * Add API to create MuiScreen * Add Segoe UI Symbol to default fallback list * Fix issue with TrueType Collection registration * Add font registration config to register additional fonts * Add modifiers to ACTION_SCROLL event * Add showing layout bounds * Add adaptive tooltip colors * Renew tooltip rendering - Create rendertype_modern_tooltip shader - Interpolate color bilinearly in sRGB space - Better shadow effect, add shadow opacity - Add corner radius config - Adjust auto scrolling velocity - Fix bugs on exact positioning with some mods * Fix a rare crash on config reloading due to thread-safety * Apply blur effect only to screens that have default background (configurable) * Do not use Overwrite for calculateScale * Fix startup crash on server and datagen * Fix EditBox deletion undo not working * Refactor project structure and bootstrap #### Forge Extension 1.20.4 * Remove ScreenCallback capability * Others are equivalent to NeoForge version #### Fabric Extension 1.20.4 * Fix tooltip compatibility with Sodium * Others are functionally equivalent to NeoForge version #### Modern Text Engine 1.20.4 * Change logging level for font loading, enhance onFontRegistered thread-safety * Add new default font behaviors and rule set, allowing regexes to match fonts * Adjust text renderer alpha threshold from 1 to 2 (0-255) * Fix only a very small set of characters can be used for obfuscated rendering * Use Latin1 for FastCharSet * Fix a rare crash on text engine due to batch rendering and display mode changes #### Core Framework 3.10.1 * Update typecast checks, add ArrayMap.forEach * Make FontFamily.createFamily throw Exception * Add FontFamily.createFamilies for TrueType Collection * Add HorizontalScrollView, update ScrollView * Add debug layout to show layout bounds * Optimize Color.parseColor * Add Animatable and Animatable2 * Add some missing javadoc * Use UTF-16 for TextUtils read/write * Add TextPaint.baselineShift and Subscript/SuperscriptSpan * Disable pooling of Message objects * Build against a copy of Arc3D, instead of composite build * Add Canvas.shear / skew, deprecate Canvas.getMatrix * Add TextUtils.concat and TextUtils.join methods * Make use of Java 20 float/half convert instruction * Add CharBuffer support for TextUtils.getChars() #### Core Framework - Kotlin Extension 3.10.1 * No changes #### Markdown 3.10.1 * No changes #### Arc 3D Graphics Engine 3.10.1 * Add 3D shearing transform methods * Improve GL_TEXTURE_SWIZZLE_RGBA compatibility * Tons of updates on DSL shader compiler, including new grammar parsing and SPIR-V generation, no detailed information provided
3.10.1.5 Release 02.04.2024

Modern UI 3.10.1.5 (Forge)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.10.1.5 #### NeoForge Extension 1.20.4 * Do not use new word breaker in command mode * Add preferences navigation to mods config button * Improve PreferencesFragment * Add API to allow back to previous screen, allow passing a ScreenCallback * Add API to create MuiScreen * Add Segoe UI Symbol to default fallback list * Fix issue with TrueType Collection registration * Add font registration config to register additional fonts * Add modifiers to ACTION_SCROLL event * Add showing layout bounds * Add adaptive tooltip colors * Renew tooltip rendering - Create rendertype_modern_tooltip shader - Interpolate color bilinearly in sRGB space - Better shadow effect, add shadow opacity - Add corner radius config - Adjust auto scrolling velocity - Fix bugs on exact positioning with some mods * Fix a rare crash on config reloading due to thread-safety * Apply blur effect only to screens that have default background (configurable) * Do not use Overwrite for calculateScale * Fix startup crash on server and datagen * Fix EditBox deletion undo not working * Refactor project structure and bootstrap #### Forge Extension 1.20.4 * Remove ScreenCallback capability * Others are equivalent to NeoForge version #### Fabric Extension 1.20.4 * Fix tooltip compatibility with Sodium * Others are functionally equivalent to NeoForge version #### Modern Text Engine 1.20.4 * Change logging level for font loading, enhance onFontRegistered thread-safety * Add new default font behaviors and rule set, allowing regexes to match fonts * Adjust text renderer alpha threshold from 1 to 2 (0-255) * Fix only a very small set of characters can be used for obfuscated rendering * Use Latin1 for FastCharSet * Fix a rare crash on text engine due to batch rendering and display mode changes #### Core Framework 3.10.1 * Update typecast checks, add ArrayMap.forEach * Make FontFamily.createFamily throw Exception * Add FontFamily.createFamilies for TrueType Collection * Add HorizontalScrollView, update ScrollView * Add debug layout to show layout bounds * Optimize Color.parseColor * Add Animatable and Animatable2 * Add some missing javadoc * Use UTF-16 for TextUtils read/write * Add TextPaint.baselineShift and Subscript/SuperscriptSpan * Disable pooling of Message objects * Build against a copy of Arc3D, instead of composite build * Add Canvas.shear / skew, deprecate Canvas.getMatrix * Add TextUtils.concat and TextUtils.join methods * Make use of Java 20 float/half convert instruction * Add CharBuffer support for TextUtils.getChars() #### Core Framework - Kotlin Extension 3.10.1 * No changes #### Markdown 3.10.1 * No changes #### Arc 3D Graphics Engine 3.10.1 * Add 3D shearing transform methods * Improve GL_TEXTURE_SWIZZLE_RGBA compatibility * Tons of updates on DSL shader compiler, including new grammar parsing and SPIR-V generation, no detailed information provided
3.10.1.4 Release 02.04.2024

Modern UI 3.10.1.4 (Fabric)

Підтримувані версії Minecraft
1.20.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.10.1.4 #### Forge Extension 1.20.1 / NeoForge Extension 1.20.1 * Do not use new word breaker in command mode * Add preferences navigation to mods config button * Improve PreferencesFragment * Add API to allow back to previous screen, allow passing a ScreenCallback * Add API to create MuiScreen * Add Segoe UI Symbol to default fallback list * Fix issue with TrueType Collection registration * Add font registration config to register additional fonts * Add modifiers to ACTION_SCROLL event * Add showing layout bounds * Add adaptive tooltip colors * Renew tooltip rendering - Create rendertype_modern_tooltip shader - Interpolate color bilinearly in sRGB space - Better shadow effect, add shadow opacity - Add corner radius config - Adjust auto scrolling velocity - Fix bugs on exact positioning with some mods * Fix a rare crash on config reloading due to thread-safety * Apply blur effect only to screens that have default background (configurable) * Do not use Overwrite for calculateScale * Fix startup crash on server and datagen * Remove ScreenCallback capability * Refactor project structure and bootstrap #### Fabric Extension 1.20.1 * Fix tooltip compatibility with Sodium * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.1 * Change logging level for font loading, enhance onFontRegistered thread-safety * Add new default font behaviors and rule set, allowing regexes to match fonts * Adjust text renderer alpha threshold from 1 to 2 (0-255) * Fix only a very small set of characters can be used for obfuscated rendering * Use Latin1 for FastCharSet * Fix a rare crash on text engine due to batch rendering and display mode changes #### Core Framework 3.10.1 * Update typecast checks, add ArrayMap.forEach * Make FontFamily.createFamily throw Exception * Add FontFamily.createFamilies for TrueType Collection * Add HorizontalScrollView, update ScrollView * Add debug layout to show layout bounds * Optimize Color.parseColor * Add Animatable and Animatable2 * Add some missing javadoc * Use UTF-16 for TextUtils read/write * Add TextPaint.baselineShift and Subscript/SuperscriptSpan * Disable pooling of Message objects * Build against a copy of Arc3D, instead of composite build * Add Canvas.shear / skew, deprecate Canvas.getMatrix * Add TextUtils.concat and TextUtils.join methods * Make use of Java 20 float/half convert instruction * Add CharBuffer support for TextUtils.getChars() #### Core Framework - Kotlin Extension 3.10.1 * No changes #### Markdown 3.10.1 * No changes #### Arc 3D Graphics Engine 3.10.1 * Add 3D shearing transform methods * Improve GL_TEXTURE_SWIZZLE_RGBA compatibility * Tons of updates on DSL shader compiler, including new grammar parsing and SPIR-V generation, no detailed information provided
3.10.1.4 Release 02.04.2024

Modern UI 3.10.1.4 (Forge)

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
forge neoforge
Показати зміни
### Modern UI 3.10.1.4 #### Forge Extension 1.20.1 / NeoForge Extension 1.20.1 * Do not use new word breaker in command mode * Add preferences navigation to mods config button * Improve PreferencesFragment * Add API to allow back to previous screen, allow passing a ScreenCallback * Add API to create MuiScreen * Add Segoe UI Symbol to default fallback list * Fix issue with TrueType Collection registration * Add font registration config to register additional fonts * Add modifiers to ACTION_SCROLL event * Add showing layout bounds * Add adaptive tooltip colors * Renew tooltip rendering - Create rendertype_modern_tooltip shader - Interpolate color bilinearly in sRGB space - Better shadow effect, add shadow opacity - Add corner radius config - Adjust auto scrolling velocity - Fix bugs on exact positioning with some mods * Fix a rare crash on config reloading due to thread-safety * Apply blur effect only to screens that have default background (configurable) * Do not use Overwrite for calculateScale * Fix startup crash on server and datagen * Remove ScreenCallback capability * Refactor project structure and bootstrap #### Fabric Extension 1.20.1 * Fix tooltip compatibility with Sodium * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.1 * Change logging level for font loading, enhance onFontRegistered thread-safety * Add new default font behaviors and rule set, allowing regexes to match fonts * Adjust text renderer alpha threshold from 1 to 2 (0-255) * Fix only a very small set of characters can be used for obfuscated rendering * Use Latin1 for FastCharSet * Fix a rare crash on text engine due to batch rendering and display mode changes #### Core Framework 3.10.1 * Update typecast checks, add ArrayMap.forEach * Make FontFamily.createFamily throw Exception * Add FontFamily.createFamilies for TrueType Collection * Add HorizontalScrollView, update ScrollView * Add debug layout to show layout bounds * Optimize Color.parseColor * Add Animatable and Animatable2 * Add some missing javadoc * Use UTF-16 for TextUtils read/write * Add TextPaint.baselineShift and Subscript/SuperscriptSpan * Disable pooling of Message objects * Build against a copy of Arc3D, instead of composite build * Add Canvas.shear / skew, deprecate Canvas.getMatrix * Add TextUtils.concat and TextUtils.join methods * Make use of Java 20 float/half convert instruction * Add CharBuffer support for TextUtils.getChars() #### Core Framework - Kotlin Extension 3.10.1 * No changes #### Markdown 3.10.1 * No changes #### Arc 3D Graphics Engine 3.10.1 * Add 3D shearing transform methods * Improve GL_TEXTURE_SWIZZLE_RGBA compatibility * Tons of updates on DSL shader compiler, including new grammar parsing and SPIR-V generation, no detailed information provided
3.10.1.3 Release 02.04.2024

Modern UI 3.10.1.3 (Forge)

Підтримувані версії Minecraft
1.19.4
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.10.1.3 #### Forge Extension 1.19.4 * Do not use new word breaker in command mode * Add preferences navigation to mods config button * Improve PreferencesFragment * Add API to allow back to previous screen, allow passing a ScreenCallback * Add API to create MuiScreen * Add Segoe UI Symbol to default fallback list * Fix issue with TrueType Collection registration * Add font registration config to register additional fonts * Add modifiers to ACTION_SCROLL event * Add showing layout bounds * Add adaptive tooltip colors * Renew tooltip rendering - Create rendertype_modern_tooltip shader - Interpolate color bilinearly in sRGB space - Better shadow effect, add shadow opacity - Add corner radius config - Adjust auto scrolling velocity * Fix a rare crash on config reloading due to thread-safety * Apply blur effect only to screens that have default background (configurable) * Do not use Overwrite for calculateScale * Fix startup crash on server and datagen * Remove ScreenCallback capability #### Modern Text Engine 1.19.4 * Change logging level for font loading, enhance onFontRegistered thread-safety * Add new default font behaviors and rule set, allowing regexes to match fonts * Adjust text renderer alpha threshold from 1 to 2 (0-255) * Fix only a very small set of characters can be used for obfuscated rendering * Use Latin1 for FastCharSet * Fix a rare crash on text engine due to batch rendering and display mode changes #### Core Framework 3.10.1 * Update typecast checks, add ArrayMap.forEach * Make FontFamily.createFamily throw Exception * Add FontFamily.createFamilies for TrueType Collection * Add HorizontalScrollView, update ScrollView * Add debug layout to show layout bounds * Optimize Color.parseColor * Add Animatable and Animatable2 * Add some missing javadoc * Use UTF-16 for TextUtils read/write * Add TextPaint.baselineShift and Subscript/SuperscriptSpan * Disable pooling of Message objects * Build against a copy of Arc3D, instead of composite build * Add Canvas.shear / skew, deprecate Canvas.getMatrix * Add TextUtils.concat and TextUtils.join methods * Make use of Java 20 float/half convert instruction * Add CharBuffer support for TextUtils.getChars() #### Core Framework - Kotlin Extension 3.10.1 * No changes #### Markdown 3.10.1 * No changes #### Arc 3D Graphics Engine 3.10.1 * Add 3D shearing transform methods * Improve GL_TEXTURE_SWIZZLE_RGBA compatibility * Tons of updates on DSL shader compiler, including new grammar parsing and SPIR-V generation, no detailed information provided
3.10.1.2 Release 02.04.2024

Modern UI 3.10.1.2 (Forge)

Підтримувані версії Minecraft
1.19.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.10.1.2 #### Forge Extension 1.19.2 * Do not use new word breaker in command mode * Add preferences navigation to mods config button * Improve PreferencesFragment * Add API to allow back to previous screen, allow passing a ScreenCallback * Add API to create MuiScreen * Add Segoe UI Symbol to default fallback list * Fix issue with TrueType Collection registration * Add font registration config to register additional fonts * Add modifiers to ACTION_SCROLL event * Add showing layout bounds * Add adaptive tooltip colors * Renew tooltip rendering - Create rendertype_modern_tooltip shader - Interpolate color bilinearly in sRGB space - Better shadow effect, add shadow opacity - Add corner radius config - Adjust auto scrolling velocity * Remove tooltip fade-in animation * Fix a rare crash on config reloading due to thread-safety * Apply blur effect only to screens that have default background (configurable) * Do not use Overwrite for calculateScale * Fix startup crash on server and datagen * Remove ScreenCallback capability #### Modern Text Engine 1.19.2 * Change logging level for font loading, enhance onFontRegistered thread-safety * Add new default font behaviors and rule set, allowing regexes to match fonts * Adjust text renderer alpha threshold from 1 to 2 (0-255) * Fix only a very small set of characters can be used for obfuscated rendering * Use Latin1 for FastCharSet * Fix a rare crash on text engine due to batch rendering and display mode changes #### Core Framework 3.10.1 * Update typecast checks, add ArrayMap.forEach * Make FontFamily.createFamily throw Exception * Add FontFamily.createFamilies for TrueType Collection * Add HorizontalScrollView, update ScrollView * Add debug layout to show layout bounds * Optimize Color.parseColor * Add Animatable and Animatable2 * Add some missing javadoc * Use UTF-16 for TextUtils read/write * Add TextPaint.baselineShift and Subscript/SuperscriptSpan * Disable pooling of Message objects * Build against a copy of Arc3D, instead of composite build * Add Canvas.shear / skew, deprecate Canvas.getMatrix * Add TextUtils.concat and TextUtils.join methods * Make use of Java 20 float/half convert instruction * Add CharBuffer support for TextUtils.getChars() #### Core Framework - Kotlin Extension 3.10.1 * No changes #### Markdown 3.10.1 * No changes #### Arc 3D Graphics Engine 3.10.1 * Add 3D shearing transform methods * Improve GL_TEXTURE_SWIZZLE_RGBA compatibility * Tons of updates on DSL shader compiler, including new grammar parsing and SPIR-V generation, no detailed information provided
3.10.1.1 Release 02.04.2024

Modern UI 3.10.1.1 (Forge)

Підтримувані версії Minecraft
1.18.1 1.18.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.10.1.1 #### Forge Extension 1.18.2 * Add IGNORE_ALL_VERSION display test * Do not use new word breaker in command mode * Add preferences navigation to mods config button * Improve PreferencesFragment * Add API to allow back to previous screen * Add API to create MuiScreen * Add MenuScreenFactory to create MenuScreen * Add Segoe UI Symbol to default fallback list * Fix issue with TrueType Collection registration * Add font registration config to register additional fonts * Add modifiers to ACTION_SCROLL event * Add showing layout bounds * Add adaptive tooltip colors * Renew tooltip rendering - Create rendertype_modern_tooltip shader - Interpolate color bilinearly in sRGB space - Better shadow effect, add shadow opacity - Add corner radius config - Adjust auto scrolling velocity * Remove tooltip fade-in animation * Fix a rare crash on config reloading due to thread-safety * Apply blur effect only to screens that have default background (configurable) * Do not use Overwrite for calculateScale * Fix startup crash on server and datagen #### Modern Text Engine 1.18.2 * Enhance onFontRegistered thread-safety * Add new default font behaviors and rule set, allowing regexes to match fonts * Adjust text renderer alpha threshold from 1 to 2 (0-255) * Fix only a very small set of characters can be used for obfuscated rendering * Use Latin1 for FastCharSet * Fix a rare crash on text engine due to batch rendering and display mode changes #### Core Framework 3.10.1 * Update typecast checks, add ArrayMap.forEach * Make FontFamily.createFamily throw Exception * Add FontFamily.createFamilies for TrueType Collection * Add HorizontalScrollView, update ScrollView * Add debug layout to show layout bounds * Optimize Color.parseColor * Add Animatable and Animatable2 * Add some missing javadoc * Use UTF-16 for TextUtils read/write * Add TextPaint.baselineShift and Subscript/SuperscriptSpan * Disable pooling of Message objects * Build against a copy of Arc3D, instead of composite build * Add Canvas.shear / skew, deprecate Canvas.getMatrix * Add TextUtils.concat and TextUtils.join methods * Make use of Java 20 float/half convert instruction * Add CharBuffer support for TextUtils.getChars() #### Core Framework - Kotlin Extension 3.10.1 * No changes #### Markdown 3.10.1 * No changes #### Arc 3D Graphics Engine 3.10.1 * Add 3D shearing transform methods * Improve GL_TEXTURE_SWIZZLE_RGBA compatibility * Tons of updates on DSL shader compiler, including new grammar parsing and SPIR-V generation, no detailed information provided
3.10.0.6 Release 17.01.2024

Modern UI 3.10.0.6 (Fabric)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.10.0.6 #### Forge Extension 1.20.4 * Add Markdown preview * Use vanilla border style for modern tooltip (when rounded = false) * Add font names for registered fonts, add JetBrains Mono * Update to Emoji 15.1, remove Emoji 15 workaround * Add auto scroll when tooltip is out of screen * Add shadow effect for tooltip * Add developer mode config to Preferences GUI * Hide Advanced Options and Dev when not in developer mode * Adjust default font behavior to be locale-sensitive * Tweak fallback font loading behavior (now it accepts font files) * Move destroy() method so that the game won't crash in forced tick after the window closes * Handle glowing sign where text color is black * Update Traditional Chinese - notlin4 #### NeoForge Extension 1.20.4 * Port to NeoForge * Remove ScreenCallback capability * Others are equivalent to Forge version #### Fabric Extension 1.20.4 * Enhance tooltip compatibility with Sodium (when rounded = false) * Add tooltip line wrapping for Fabric * Add tooltip center title and title break for Fabric * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.4 * Add Untranslated Items integration * Fix useComponentCache not working at all * Fix force unicode font not working after game restart * Fix line breaker SIOOBE for illegal string (this fixed crash with Better Statistics Screen) #### Core Framework 3.10.0 * Move kotlin extension to a separate module (Core-KTX) * Add Log class to avoid using log4j in submodules * Implement blend mode filter for ShapeDrawable, ColorDrawable and other Drawable classes * Fix incorrect drop-down position in RTL layout direction * Fix MenuPopup overlap anchor (google-bug) (fix #199) * Fix TextShaper context range for BiDi analysis * Add LocaleSpan * Add all 42 blend modes that used in Photoshop (currently no shader implementation) * Update BlendMode and Color.blend() * Change Bitmap.getSize() type to long * Make Bitmap's color info mutable (for reinterpretation) * Add path measurement implementation (PathMeasure class) * Remove 2GB restriction on Bitmap creation, add more sanitizations * Deprecate ImageStore, fix javadoc errors * Update Bitmap with Arc3D * Update Matrix and Path with Arc3D * Fix Underline and Strikethrough offset * Add "exclusive" East Asian family support (currently not used) * Public Menu.setOptionalIconsVisible() method * Change atlas coverage type to double #### Core Framework - Kotlin Extension 3.10.0 * Add kotlin-flavored methods, update annotations #### Markdown 3.10.0 * Suppress unchecked warning #### Arc 3D Graphics Engine 3.10.0 * Add color filters and color matrix * Add/update all blend modes and their raster implementations: PLUS, MINUS, DIFFERENCE, EXCLUSION, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, LINEAR_DODGE, LINEAR_BURN, VIVID_LIGHT, LINEAR_LIGHT, PIN_LIGHT, HARD_MIX and HSL blend modes (HUE, SATURATION, COLOR, LUMINOSITY) * Rename shaderc package to compiler * Add Image-derived and Shader-derived skeleton classes * Add UNORM_PACK16 and UNORM_PACK32 encoding constant * Public ColorType.channelFlags * Add missing GRAY_ALPHA_88 for ColorType.encoding * Add alpha type validation * Make owner's reference to pixel map mutable * Fix ColorSpace initializer * Add Raster, remove heap version of Bitmap * Add full path measurement implementation * Add PixelUtils for pixel conversion * Add PixelMap and PixelRef, remove Pixmap * Add and optimize Path methods * Add Path.bounds computation, optimize Path allocation * Add Rect2fc and Rect2ic for read-only usage * Inline Path.Ref usage count implementation * Finish approximation of cubic strokes by quadratic splines * Finish approximation of quadratic strokes by quadratic splines * Add MathUtil.pin() method for capturing NaN values, replace some use of clamp() * Add conic section to quadratic curves conversion * Add several methods to reset the Path * Finish RoundJoiner, fix Path reversePop * Add Matrixc interface for read-only usage of Matrix * Update and optimize PathStroker * Optimize approximation of conic sections by quadratic splines * Add PathConsumer * Add Path tessellation for quadratic and cubic splines * Add PathUtils and WangsFormula for subdivisions * Add Path, add Path.Ref, add PathIterator * Add Geometry class for finding inflection points, tangent, curvature, max curvature, cusp, solving quadratic equations, cubic equations, etc * Add RefCounted interface * Add Hardware transfer processor * Optimize rectangle packer
3.10.0.6 Release 17.01.2024

Modern UI 3.10.0.6 (NeoForge)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.10.0.6 #### Forge Extension 1.20.4 * Add Markdown preview * Use vanilla border style for modern tooltip (when rounded = false) * Add font names for registered fonts, add JetBrains Mono * Update to Emoji 15.1, remove Emoji 15 workaround * Add auto scroll when tooltip is out of screen * Add shadow effect for tooltip * Add developer mode config to Preferences GUI * Hide Advanced Options and Dev when not in developer mode * Adjust default font behavior to be locale-sensitive * Tweak fallback font loading behavior (now it accepts font files) * Move destroy() method so that the game won't crash in forced tick after the window closes * Handle glowing sign where text color is black * Update Traditional Chinese - notlin4 #### NeoForge Extension 1.20.4 * Port to NeoForge * Remove ScreenCallback capability * Others are equivalent to Forge version #### Fabric Extension 1.20.4 * Enhance tooltip compatibility with Sodium (when rounded = false) * Add tooltip line wrapping for Fabric * Add tooltip center title and title break for Fabric * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.4 * Add Untranslated Items integration * Fix useComponentCache not working at all * Fix force unicode font not working after game restart * Fix line breaker SIOOBE for illegal string (this fixed crash with Better Statistics Screen) #### Core Framework 3.10.0 * Move kotlin extension to a separate module (Core-KTX) * Add Log class to avoid using log4j in submodules * Implement blend mode filter for ShapeDrawable, ColorDrawable and other Drawable classes * Fix incorrect drop-down position in RTL layout direction * Fix MenuPopup overlap anchor (google-bug) (fix #199) * Fix TextShaper context range for BiDi analysis * Add LocaleSpan * Add all 42 blend modes that used in Photoshop (currently no shader implementation) * Update BlendMode and Color.blend() * Change Bitmap.getSize() type to long * Make Bitmap's color info mutable (for reinterpretation) * Add path measurement implementation (PathMeasure class) * Remove 2GB restriction on Bitmap creation, add more sanitizations * Deprecate ImageStore, fix javadoc errors * Update Bitmap with Arc3D * Update Matrix and Path with Arc3D * Fix Underline and Strikethrough offset * Add "exclusive" East Asian family support (currently not used) * Public Menu.setOptionalIconsVisible() method * Change atlas coverage type to double #### Core Framework - Kotlin Extension 3.10.0 * Add kotlin-flavored methods, update annotations #### Markdown 3.10.0 * Suppress unchecked warning #### Arc 3D Graphics Engine 3.10.0 * Add color filters and color matrix * Add/update all blend modes and their raster implementations: PLUS, MINUS, DIFFERENCE, EXCLUSION, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, LINEAR_DODGE, LINEAR_BURN, VIVID_LIGHT, LINEAR_LIGHT, PIN_LIGHT, HARD_MIX and HSL blend modes (HUE, SATURATION, COLOR, LUMINOSITY) * Rename shaderc package to compiler * Add Image-derived and Shader-derived skeleton classes * Add UNORM_PACK16 and UNORM_PACK32 encoding constant * Public ColorType.channelFlags * Add missing GRAY_ALPHA_88 for ColorType.encoding * Add alpha type validation * Make owner's reference to pixel map mutable * Fix ColorSpace initializer * Add Raster, remove heap version of Bitmap * Add full path measurement implementation * Add PixelUtils for pixel conversion * Add PixelMap and PixelRef, remove Pixmap * Add and optimize Path methods * Add Path.bounds computation, optimize Path allocation * Add Rect2fc and Rect2ic for read-only usage * Inline Path.Ref usage count implementation * Finish approximation of cubic strokes by quadratic splines * Finish approximation of quadratic strokes by quadratic splines * Add MathUtil.pin() method for capturing NaN values, replace some use of clamp() * Add conic section to quadratic curves conversion * Add several methods to reset the Path * Finish RoundJoiner, fix Path reversePop * Add Matrixc interface for read-only usage of Matrix * Update and optimize PathStroker * Optimize approximation of conic sections by quadratic splines * Add PathConsumer * Add Path tessellation for quadratic and cubic splines * Add PathUtils and WangsFormula for subdivisions * Add Path, add Path.Ref, add PathIterator * Add Geometry class for finding inflection points, tangent, curvature, max curvature, cusp, solving quadratic equations, cubic equations, etc * Add RefCounted interface * Add Hardware transfer processor * Optimize rectangle packer
3.10.0.6 Release 17.01.2024

Modern UI 3.10.0.6 (Forge)

Підтримувані версії Minecraft
1.20.4
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.10.0.6 #### Forge Extension 1.20.4 * Add Markdown preview * Use vanilla border style for modern tooltip (when rounded = false) * Add font names for registered fonts, add JetBrains Mono * Update to Emoji 15.1, remove Emoji 15 workaround * Add auto scroll when tooltip is out of screen * Add shadow effect for tooltip * Add developer mode config to Preferences GUI * Hide Advanced Options and Dev when not in developer mode * Adjust default font behavior to be locale-sensitive * Tweak fallback font loading behavior (now it accepts font files) * Move destroy() method so that the game won't crash in forced tick after the window closes * Handle glowing sign where text color is black * Update Traditional Chinese - notlin4 #### NeoForge Extension 1.20.4 * Port to NeoForge * Remove ScreenCallback capability * Others are equivalent to Forge version #### Fabric Extension 1.20.4 * Enhance tooltip compatibility with Sodium (when rounded = false) * Add tooltip line wrapping for Fabric * Add tooltip center title and title break for Fabric * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.4 * Add Untranslated Items integration * Fix useComponentCache not working at all * Fix force unicode font not working after game restart * Fix line breaker SIOOBE for illegal string (this fixed crash with Better Statistics Screen) #### Core Framework 3.10.0 * Move kotlin extension to a separate module (Core-KTX) * Add Log class to avoid using log4j in submodules * Implement blend mode filter for ShapeDrawable, ColorDrawable and other Drawable classes * Fix incorrect drop-down position in RTL layout direction * Fix MenuPopup overlap anchor (google-bug) (fix #199) * Fix TextShaper context range for BiDi analysis * Add LocaleSpan * Add all 42 blend modes that used in Photoshop (currently no shader implementation) * Update BlendMode and Color.blend() * Change Bitmap.getSize() type to long * Make Bitmap's color info mutable (for reinterpretation) * Add path measurement implementation (PathMeasure class) * Remove 2GB restriction on Bitmap creation, add more sanitizations * Deprecate ImageStore, fix javadoc errors * Update Bitmap with Arc3D * Update Matrix and Path with Arc3D * Fix Underline and Strikethrough offset * Add "exclusive" East Asian family support (currently not used) * Public Menu.setOptionalIconsVisible() method * Change atlas coverage type to double #### Core Framework - Kotlin Extension 3.10.0 * Add kotlin-flavored methods, update annotations #### Markdown 3.10.0 * Suppress unchecked warning #### Arc 3D Graphics Engine 3.10.0 * Add color filters and color matrix * Add/update all blend modes and their raster implementations: PLUS, MINUS, DIFFERENCE, EXCLUSION, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, LINEAR_DODGE, LINEAR_BURN, VIVID_LIGHT, LINEAR_LIGHT, PIN_LIGHT, HARD_MIX and HSL blend modes (HUE, SATURATION, COLOR, LUMINOSITY) * Rename shaderc package to compiler * Add Image-derived and Shader-derived skeleton classes * Add UNORM_PACK16 and UNORM_PACK32 encoding constant * Public ColorType.channelFlags * Add missing GRAY_ALPHA_88 for ColorType.encoding * Add alpha type validation * Make owner's reference to pixel map mutable * Fix ColorSpace initializer * Add Raster, remove heap version of Bitmap * Add full path measurement implementation * Add PixelUtils for pixel conversion * Add PixelMap and PixelRef, remove Pixmap * Add and optimize Path methods * Add Path.bounds computation, optimize Path allocation * Add Rect2fc and Rect2ic for read-only usage * Inline Path.Ref usage count implementation * Finish approximation of cubic strokes by quadratic splines * Finish approximation of quadratic strokes by quadratic splines * Add MathUtil.pin() method for capturing NaN values, replace some use of clamp() * Add conic section to quadratic curves conversion * Add several methods to reset the Path * Finish RoundJoiner, fix Path reversePop * Add Matrixc interface for read-only usage of Matrix * Update and optimize PathStroker * Optimize approximation of conic sections by quadratic splines * Add PathConsumer * Add Path tessellation for quadratic and cubic splines * Add PathUtils and WangsFormula for subdivisions * Add Path, add Path.Ref, add PathIterator * Add Geometry class for finding inflection points, tangent, curvature, max curvature, cusp, solving quadratic equations, cubic equations, etc * Add RefCounted interface * Add Hardware transfer processor * Optimize rectangle packer
3.10.0.5 Release 17.01.2024

Modern UI 3.10.0.5 (Fabric)

Підтримувані версії Minecraft
1.20.2
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.10.0.5 #### Forge Extension 1.20.2 * Add Markdown preview * Use vanilla border style for modern tooltip (when rounded = false) * Add font names for registered fonts, add JetBrains Mono * Update to Emoji 15.1, remove Emoji 15 workaround * Add auto scroll when tooltip is out of screen * Add shadow effect for tooltip * Add developer mode config to Preferences GUI * Hide Advanced Options and Dev when not in developer mode * Adjust default font behavior to be locale-sensitive * Tweak fallback font loading behavior (now it accepts font files) * Move destroy() method so that the game won't crash in forced tick after the window closes * Handle glowing sign where text color is black * Update Traditional Chinese - notlin4 #### NeoForge Extension 1.20.2 * Port to NeoForge * Others are equivalent to Forge version #### Fabric Extension 1.20.2 * Enhance tooltip compatibility with Sodium (when rounded = false) * Add tooltip line wrapping for Fabric * Add tooltip center title and title break for Fabric * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.2 * Add Untranslated Items integration * Fix useComponentCache not working at all * Fix force unicode font not working after game restart * Fix line breaker SIOOBE for illegal string (this fixed crash with Better Statistics Screen) #### Core Framework 3.10.0 * Move kotlin extension to a separate module (Core-KTX) * Add Log class to avoid using log4j in submodules * Implement blend mode filter for ShapeDrawable, ColorDrawable and other Drawable classes * Fix incorrect drop-down position in RTL layout direction * Fix MenuPopup overlap anchor (google-bug) (fix #199) * Fix TextShaper context range for BiDi analysis * Add LocaleSpan * Add all 42 blend modes that used in Photoshop (currently no shader implementation) * Update BlendMode and Color.blend() * Change Bitmap.getSize() type to long * Make Bitmap's color info mutable (for reinterpretation) * Add path measurement implementation (PathMeasure class) * Remove 2GB restriction on Bitmap creation, add more sanitizations * Deprecate ImageStore, fix javadoc errors * Update Bitmap with Arc3D * Update Matrix and Path with Arc3D * Fix Underline and Strikethrough offset * Add "exclusive" East Asian family support (currently not used) * Public Menu.setOptionalIconsVisible() method * Change atlas coverage type to double #### Core Framework - Kotlin Extension 3.10.0 * Add kotlin-flavored methods, update annotations #### Markdown 3.10.0 * Suppress unchecked warning #### Arc 3D Graphics Engine 3.10.0 * Add color filters and color matrix * Add/update all blend modes and their raster implementations: PLUS, MINUS, DIFFERENCE, EXCLUSION, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, LINEAR_DODGE, LINEAR_BURN, VIVID_LIGHT, LINEAR_LIGHT, PIN_LIGHT, HARD_MIX and HSL blend modes (HUE, SATURATION, COLOR, LUMINOSITY) * Rename shaderc package to compiler * Add Image-derived and Shader-derived skeleton classes * Add UNORM_PACK16 and UNORM_PACK32 encoding constant * Public ColorType.channelFlags * Add missing GRAY_ALPHA_88 for ColorType.encoding * Add alpha type validation * Make owner's reference to pixel map mutable * Fix ColorSpace initializer * Add Raster, remove heap version of Bitmap * Add full path measurement implementation * Add PixelUtils for pixel conversion * Add PixelMap and PixelRef, remove Pixmap * Add and optimize Path methods * Add Path.bounds computation, optimize Path allocation * Add Rect2fc and Rect2ic for read-only usage * Inline Path.Ref usage count implementation * Finish approximation of cubic strokes by quadratic splines * Finish approximation of quadratic strokes by quadratic splines * Add MathUtil.pin() method for capturing NaN values, replace some use of clamp() * Add conic section to quadratic curves conversion * Add several methods to reset the Path * Finish RoundJoiner, fix Path reversePop * Add Matrixc interface for read-only usage of Matrix * Update and optimize PathStroker * Optimize approximation of conic sections by quadratic splines * Add PathConsumer * Add Path tessellation for quadratic and cubic splines * Add PathUtils and WangsFormula for subdivisions * Add Path, add Path.Ref, add PathIterator * Add Geometry class for finding inflection points, tangent, curvature, max curvature, cusp, solving quadratic equations, cubic equations, etc * Add RefCounted interface * Add Hardware transfer processor * Optimize rectangle packer
3.10.0.5 Release 17.01.2024

Modern UI 3.10.0.5 (NeoForge)

Підтримувані версії Minecraft
1.20.2
Завантажувачі / Платформи
neoforge
Показати зміни
### Modern UI 3.10.0.5 #### Forge Extension 1.20.2 * Add Markdown preview * Use vanilla border style for modern tooltip (when rounded = false) * Add font names for registered fonts, add JetBrains Mono * Update to Emoji 15.1, remove Emoji 15 workaround * Add auto scroll when tooltip is out of screen * Add shadow effect for tooltip * Add developer mode config to Preferences GUI * Hide Advanced Options and Dev when not in developer mode * Adjust default font behavior to be locale-sensitive * Tweak fallback font loading behavior (now it accepts font files) * Move destroy() method so that the game won't crash in forced tick after the window closes * Handle glowing sign where text color is black * Update Traditional Chinese - notlin4 #### NeoForge Extension 1.20.2 * Port to NeoForge * Others are equivalent to Forge version #### Fabric Extension 1.20.2 * Enhance tooltip compatibility with Sodium (when rounded = false) * Add tooltip line wrapping for Fabric * Add tooltip center title and title break for Fabric * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.2 * Add Untranslated Items integration * Fix useComponentCache not working at all * Fix force unicode font not working after game restart * Fix line breaker SIOOBE for illegal string (this fixed crash with Better Statistics Screen) #### Core Framework 3.10.0 * Move kotlin extension to a separate module (Core-KTX) * Add Log class to avoid using log4j in submodules * Implement blend mode filter for ShapeDrawable, ColorDrawable and other Drawable classes * Fix incorrect drop-down position in RTL layout direction * Fix MenuPopup overlap anchor (google-bug) (fix #199) * Fix TextShaper context range for BiDi analysis * Add LocaleSpan * Add all 42 blend modes that used in Photoshop (currently no shader implementation) * Update BlendMode and Color.blend() * Change Bitmap.getSize() type to long * Make Bitmap's color info mutable (for reinterpretation) * Add path measurement implementation (PathMeasure class) * Remove 2GB restriction on Bitmap creation, add more sanitizations * Deprecate ImageStore, fix javadoc errors * Update Bitmap with Arc3D * Update Matrix and Path with Arc3D * Fix Underline and Strikethrough offset * Add "exclusive" East Asian family support (currently not used) * Public Menu.setOptionalIconsVisible() method * Change atlas coverage type to double #### Core Framework - Kotlin Extension 3.10.0 * Add kotlin-flavored methods, update annotations #### Markdown 3.10.0 * Suppress unchecked warning #### Arc 3D Graphics Engine 3.10.0 * Add color filters and color matrix * Add/update all blend modes and their raster implementations: PLUS, MINUS, DIFFERENCE, EXCLUSION, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, LINEAR_DODGE, LINEAR_BURN, VIVID_LIGHT, LINEAR_LIGHT, PIN_LIGHT, HARD_MIX and HSL blend modes (HUE, SATURATION, COLOR, LUMINOSITY) * Rename shaderc package to compiler * Add Image-derived and Shader-derived skeleton classes * Add UNORM_PACK16 and UNORM_PACK32 encoding constant * Public ColorType.channelFlags * Add missing GRAY_ALPHA_88 for ColorType.encoding * Add alpha type validation * Make owner's reference to pixel map mutable * Fix ColorSpace initializer * Add Raster, remove heap version of Bitmap * Add full path measurement implementation * Add PixelUtils for pixel conversion * Add PixelMap and PixelRef, remove Pixmap * Add and optimize Path methods * Add Path.bounds computation, optimize Path allocation * Add Rect2fc and Rect2ic for read-only usage * Inline Path.Ref usage count implementation * Finish approximation of cubic strokes by quadratic splines * Finish approximation of quadratic strokes by quadratic splines * Add MathUtil.pin() method for capturing NaN values, replace some use of clamp() * Add conic section to quadratic curves conversion * Add several methods to reset the Path * Finish RoundJoiner, fix Path reversePop * Add Matrixc interface for read-only usage of Matrix * Update and optimize PathStroker * Optimize approximation of conic sections by quadratic splines * Add PathConsumer * Add Path tessellation for quadratic and cubic splines * Add PathUtils and WangsFormula for subdivisions * Add Path, add Path.Ref, add PathIterator * Add Geometry class for finding inflection points, tangent, curvature, max curvature, cusp, solving quadratic equations, cubic equations, etc * Add RefCounted interface * Add Hardware transfer processor * Optimize rectangle packer
3.10.0.5 Release 17.01.2024

Modern UI 3.10.0.5 (Forge)

Підтримувані версії Minecraft
1.20.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.10.0.5 #### Forge Extension 1.20.2 * Add Markdown preview * Use vanilla border style for modern tooltip (when rounded = false) * Add font names for registered fonts, add JetBrains Mono * Update to Emoji 15.1, remove Emoji 15 workaround * Add auto scroll when tooltip is out of screen * Add shadow effect for tooltip * Add developer mode config to Preferences GUI * Hide Advanced Options and Dev when not in developer mode * Adjust default font behavior to be locale-sensitive * Tweak fallback font loading behavior (now it accepts font files) * Move destroy() method so that the game won't crash in forced tick after the window closes * Handle glowing sign where text color is black * Update Traditional Chinese - notlin4 #### NeoForge Extension 1.20.2 * Port to NeoForge * Others are equivalent to Forge version #### Fabric Extension 1.20.2 * Enhance tooltip compatibility with Sodium (when rounded = false) * Add tooltip line wrapping for Fabric * Add tooltip center title and title break for Fabric * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.2 * Add Untranslated Items integration * Fix useComponentCache not working at all * Fix force unicode font not working after game restart * Fix line breaker SIOOBE for illegal string (this fixed crash with Better Statistics Screen) #### Core Framework 3.10.0 * Move kotlin extension to a separate module (Core-KTX) * Add Log class to avoid using log4j in submodules * Implement blend mode filter for ShapeDrawable, ColorDrawable and other Drawable classes * Fix incorrect drop-down position in RTL layout direction * Fix MenuPopup overlap anchor (google-bug) (fix #199) * Fix TextShaper context range for BiDi analysis * Add LocaleSpan * Add all 42 blend modes that used in Photoshop (currently no shader implementation) * Update BlendMode and Color.blend() * Change Bitmap.getSize() type to long * Make Bitmap's color info mutable (for reinterpretation) * Add path measurement implementation (PathMeasure class) * Remove 2GB restriction on Bitmap creation, add more sanitizations * Deprecate ImageStore, fix javadoc errors * Update Bitmap with Arc3D * Update Matrix and Path with Arc3D * Fix Underline and Strikethrough offset * Add "exclusive" East Asian family support (currently not used) * Public Menu.setOptionalIconsVisible() method * Change atlas coverage type to double #### Core Framework - Kotlin Extension 3.10.0 * Add kotlin-flavored methods, update annotations #### Markdown 3.10.0 * Suppress unchecked warning #### Arc 3D Graphics Engine 3.10.0 * Add color filters and color matrix * Add/update all blend modes and their raster implementations: PLUS, MINUS, DIFFERENCE, EXCLUSION, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, LINEAR_DODGE, LINEAR_BURN, VIVID_LIGHT, LINEAR_LIGHT, PIN_LIGHT, HARD_MIX and HSL blend modes (HUE, SATURATION, COLOR, LUMINOSITY) * Rename shaderc package to compiler * Add Image-derived and Shader-derived skeleton classes * Add UNORM_PACK16 and UNORM_PACK32 encoding constant * Public ColorType.channelFlags * Add missing GRAY_ALPHA_88 for ColorType.encoding * Add alpha type validation * Make owner's reference to pixel map mutable * Fix ColorSpace initializer * Add Raster, remove heap version of Bitmap * Add full path measurement implementation * Add PixelUtils for pixel conversion * Add PixelMap and PixelRef, remove Pixmap * Add and optimize Path methods * Add Path.bounds computation, optimize Path allocation * Add Rect2fc and Rect2ic for read-only usage * Inline Path.Ref usage count implementation * Finish approximation of cubic strokes by quadratic splines * Finish approximation of quadratic strokes by quadratic splines * Add MathUtil.pin() method for capturing NaN values, replace some use of clamp() * Add conic section to quadratic curves conversion * Add several methods to reset the Path * Finish RoundJoiner, fix Path reversePop * Add Matrixc interface for read-only usage of Matrix * Update and optimize PathStroker * Optimize approximation of conic sections by quadratic splines * Add PathConsumer * Add Path tessellation for quadratic and cubic splines * Add PathUtils and WangsFormula for subdivisions * Add Path, add Path.Ref, add PathIterator * Add Geometry class for finding inflection points, tangent, curvature, max curvature, cusp, solving quadratic equations, cubic equations, etc * Add RefCounted interface * Add Hardware transfer processor * Optimize rectangle packer
3.10.0.4 Release 17.01.2024

Modern UI 3.10.0.4 (Fabric)

Підтримувані версії Minecraft
1.20.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.10.0.4 #### Forge Extension 1.20.1 / NeoForge Extension 1.20.1 * Add Markdown preview * Use vanilla border style for modern tooltip (when rounded = false) * Add font names for registered fonts, add JetBrains Mono * Update to Emoji 15.1 * Add auto scroll when tooltip is out of screen * Add shadow effect for tooltip * Add developer mode config to Preferences GUI * Hide Advanced Options and Dev when not in developer mode * Adjust default font behavior to be locale-sensitive * Tweak fallback font loading behavior (now it accepts font files) * Move destroy() method so that the game won't crash in forced tick after the window closes * Handle glowing sign where text color is black * Update Traditional Chinese - notlin4 #### Fabric Extension 1.20.1 * Enhance tooltip compatibility with Sodium (when rounded = false) * Add tooltip line wrapping for Fabric * Add tooltip center title and title break for Fabric * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.1 * Add Untranslated Items integration * Fix useComponentCache not working at all * Fix force unicode font not working after game restart * Fix line breaker SIOOBE for illegal string (this fixed crash with Better Statistics Screen) #### Core Framework 3.10.0 * Move kotlin extension to a separate module (Core-KTX) * Add Log class to avoid using log4j in submodules * Implement blend mode filter for ShapeDrawable, ColorDrawable and other Drawable classes * Fix incorrect drop-down position in RTL layout direction * Fix MenuPopup overlap anchor (google-bug) (fix #199) * Fix TextShaper context range for BiDi analysis * Add LocaleSpan * Add all 42 blend modes that used in Photoshop (currently no shader implementation) * Update BlendMode and Color.blend() * Change Bitmap.getSize() type to long * Make Bitmap's color info mutable (for reinterpretation) * Add path measurement implementation (PathMeasure class) * Remove 2GB restriction on Bitmap creation, add more sanitizations * Deprecate ImageStore, fix javadoc errors * Update Bitmap with Arc3D * Update Matrix and Path with Arc3D * Fix Underline and Strikethrough offset * Add "exclusive" East Asian family support (currently not used) * Public Menu.setOptionalIconsVisible() method * Change atlas coverage type to double #### Core Framework - Kotlin Extension 3.10.0 * Add kotlin-flavored methods, update annotations #### Markdown 3.10.0 * Suppress unchecked warning #### Arc 3D Graphics Engine 3.10.0 * Add color filters and color matrix * Add/update all blend modes and their raster implementations: PLUS, MINUS, DIFFERENCE, EXCLUSION, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, LINEAR_DODGE, LINEAR_BURN, VIVID_LIGHT, LINEAR_LIGHT, PIN_LIGHT, HARD_MIX and HSL blend modes (HUE, SATURATION, COLOR, LUMINOSITY) * Rename shaderc package to compiler * Add Image-derived and Shader-derived skeleton classes * Add UNORM_PACK16 and UNORM_PACK32 encoding constant * Public ColorType.channelFlags * Add missing GRAY_ALPHA_88 for ColorType.encoding * Add alpha type validation * Make owner's reference to pixel map mutable * Fix ColorSpace initializer * Add Raster, remove heap version of Bitmap * Add full path measurement implementation * Add PixelUtils for pixel conversion * Add PixelMap and PixelRef, remove Pixmap * Add and optimize Path methods * Add Path.bounds computation, optimize Path allocation * Add Rect2fc and Rect2ic for read-only usage * Inline Path.Ref usage count implementation * Finish approximation of cubic strokes by quadratic splines * Finish approximation of quadratic strokes by quadratic splines * Add MathUtil.pin() method for capturing NaN values, replace some use of clamp() * Add conic section to quadratic curves conversion * Add several methods to reset the Path * Finish RoundJoiner, fix Path reversePop * Add Matrixc interface for read-only usage of Matrix * Update and optimize PathStroker * Optimize approximation of conic sections by quadratic splines * Add PathConsumer * Add Path tessellation for quadratic and cubic splines * Add PathUtils and WangsFormula for subdivisions * Add Path, add Path.Ref, add PathIterator * Add Geometry class for finding inflection points, tangent, curvature, max curvature, cusp, solving quadratic equations, cubic equations, etc * Add RefCounted interface * Add Hardware transfer processor * Optimize rectangle packer
3.10.0.4 Release 17.01.2024

Modern UI 3.10.0.4 (Forge)

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
forge neoforge
Показати зміни
### Modern UI 3.10.0.4 #### Forge Extension 1.20.1 / NeoForge Extension 1.20.1 * Add Markdown preview * Use vanilla border style for modern tooltip (when rounded = false) * Add font names for registered fonts, add JetBrains Mono * Update to Emoji 15.1 * Add auto scroll when tooltip is out of screen * Add shadow effect for tooltip * Add developer mode config to Preferences GUI * Hide Advanced Options and Dev when not in developer mode * Adjust default font behavior to be locale-sensitive * Tweak fallback font loading behavior (now it accepts font files) * Move destroy() method so that the game won't crash in forced tick after the window closes * Handle glowing sign where text color is black * Update Traditional Chinese - notlin4 #### Fabric Extension 1.20.1 * Enhance tooltip compatibility with Sodium (when rounded = false) * Add tooltip line wrapping for Fabric * Add tooltip center title and title break for Fabric * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.1 * Add Untranslated Items integration * Fix useComponentCache not working at all * Fix force unicode font not working after game restart * Fix line breaker SIOOBE for illegal string (this fixed crash with Better Statistics Screen) #### Core Framework 3.10.0 * Move kotlin extension to a separate module (Core-KTX) * Add Log class to avoid using log4j in submodules * Implement blend mode filter for ShapeDrawable, ColorDrawable and other Drawable classes * Fix incorrect drop-down position in RTL layout direction * Fix MenuPopup overlap anchor (google-bug) (fix #199) * Fix TextShaper context range for BiDi analysis * Add LocaleSpan * Add all 42 blend modes that used in Photoshop (currently no shader implementation) * Update BlendMode and Color.blend() * Change Bitmap.getSize() type to long * Make Bitmap's color info mutable (for reinterpretation) * Add path measurement implementation (PathMeasure class) * Remove 2GB restriction on Bitmap creation, add more sanitizations * Deprecate ImageStore, fix javadoc errors * Update Bitmap with Arc3D * Update Matrix and Path with Arc3D * Fix Underline and Strikethrough offset * Add "exclusive" East Asian family support (currently not used) * Public Menu.setOptionalIconsVisible() method * Change atlas coverage type to double #### Core Framework - Kotlin Extension 3.10.0 * Add kotlin-flavored methods, update annotations #### Markdown 3.10.0 * Suppress unchecked warning #### Arc 3D Graphics Engine 3.10.0 * Add color filters and color matrix * Add/update all blend modes and their raster implementations: PLUS, MINUS, DIFFERENCE, EXCLUSION, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, LINEAR_DODGE, LINEAR_BURN, VIVID_LIGHT, LINEAR_LIGHT, PIN_LIGHT, HARD_MIX and HSL blend modes (HUE, SATURATION, COLOR, LUMINOSITY) * Rename shaderc package to compiler * Add Image-derived and Shader-derived skeleton classes * Add UNORM_PACK16 and UNORM_PACK32 encoding constant * Public ColorType.channelFlags * Add missing GRAY_ALPHA_88 for ColorType.encoding * Add alpha type validation * Make owner's reference to pixel map mutable * Fix ColorSpace initializer * Add Raster, remove heap version of Bitmap * Add full path measurement implementation * Add PixelUtils for pixel conversion * Add PixelMap and PixelRef, remove Pixmap * Add and optimize Path methods * Add Path.bounds computation, optimize Path allocation * Add Rect2fc and Rect2ic for read-only usage * Inline Path.Ref usage count implementation * Finish approximation of cubic strokes by quadratic splines * Finish approximation of quadratic strokes by quadratic splines * Add MathUtil.pin() method for capturing NaN values, replace some use of clamp() * Add conic section to quadratic curves conversion * Add several methods to reset the Path * Finish RoundJoiner, fix Path reversePop * Add Matrixc interface for read-only usage of Matrix * Update and optimize PathStroker * Optimize approximation of conic sections by quadratic splines * Add PathConsumer * Add Path tessellation for quadratic and cubic splines * Add PathUtils and WangsFormula for subdivisions * Add Path, add Path.Ref, add PathIterator * Add Geometry class for finding inflection points, tangent, curvature, max curvature, cusp, solving quadratic equations, cubic equations, etc * Add RefCounted interface * Add Hardware transfer processor * Optimize rectangle packer
3.10.0.3 Release 17.01.2024

Modern UI 3.10.0.3 (Forge)

Підтримувані версії Minecraft
1.19.4
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.10.0.3 #### Forge Extension 1.19.4 * Add Markdown preview * Use vanilla border style for modern tooltip (when rounded = false) * Add font names for registered fonts, add JetBrains Mono * Update to Emoji 15.1 * Add auto scroll when tooltip is out of screen * Add shadow effect for tooltip * Add developer mode config to Preferences GUI * Hide Advanced Options and Dev when not in developer mode * Adjust default font behavior to be locale-sensitive * Tweak fallback font loading behavior (now it accepts font files) * Move destroy() method so that the game won't crash in forced tick after the window closes * Handle glowing sign where text color is black * Update Traditional Chinese - notlin4 #### Modern Text Engine 1.19.4 * Add Untranslated Items integration * Fix useComponentCache not working at all * Fix force unicode font not working after game restart * Fix line breaker SIOOBE for illegal string (this fixed crash with Better Statistics Screen) #### Core Framework 3.10.0 * Move kotlin extension to a separate module (Core-KTX) * Add Log class to avoid using log4j in submodules * Implement blend mode filter for ShapeDrawable, ColorDrawable and other Drawable classes * Fix incorrect drop-down position in RTL layout direction * Fix MenuPopup overlap anchor (google-bug) (fix #199) * Fix TextShaper context range for BiDi analysis * Add LocaleSpan * Add all 42 blend modes that used in Photoshop (currently no shader implementation) * Update BlendMode and Color.blend() * Change Bitmap.getSize() type to long * Make Bitmap's color info mutable (for reinterpretation) * Add path measurement implementation (PathMeasure class) * Remove 2GB restriction on Bitmap creation, add more sanitizations * Deprecate ImageStore, fix javadoc errors * Update Bitmap with Arc3D * Update Matrix and Path with Arc3D * Fix Underline and Strikethrough offset * Add "exclusive" East Asian family support (currently not used) * Public Menu.setOptionalIconsVisible() method * Change atlas coverage type to double #### Core Framework - Kotlin Extension 3.10.0 * Add kotlin-flavored methods, update annotations #### Markdown 3.10.0 * Suppress unchecked warning #### Arc 3D Graphics Engine 3.10.0 * Add color filters and color matrix * Add/update all blend modes and their raster implementations: PLUS, MINUS, DIFFERENCE, EXCLUSION, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, LINEAR_DODGE, LINEAR_BURN, VIVID_LIGHT, LINEAR_LIGHT, PIN_LIGHT, HARD_MIX and HSL blend modes (HUE, SATURATION, COLOR, LUMINOSITY) * Rename shaderc package to compiler * Add Image-derived and Shader-derived skeleton classes * Add UNORM_PACK16 and UNORM_PACK32 encoding constant * Public ColorType.channelFlags * Add missing GRAY_ALPHA_88 for ColorType.encoding * Add alpha type validation * Make owner's reference to pixel map mutable * Fix ColorSpace initializer * Add Raster, remove heap version of Bitmap * Add full path measurement implementation * Add PixelUtils for pixel conversion * Add PixelMap and PixelRef, remove Pixmap * Add and optimize Path methods * Add Path.bounds computation, optimize Path allocation * Add Rect2fc and Rect2ic for read-only usage * Inline Path.Ref usage count implementation * Finish approximation of cubic strokes by quadratic splines * Finish approximation of quadratic strokes by quadratic splines * Add MathUtil.pin() method for capturing NaN values, replace some use of clamp() * Add conic section to quadratic curves conversion * Add several methods to reset the Path * Finish RoundJoiner, fix Path reversePop * Add Matrixc interface for read-only usage of Matrix * Update and optimize PathStroker * Optimize approximation of conic sections by quadratic splines * Add PathConsumer * Add Path tessellation for quadratic and cubic splines * Add PathUtils and WangsFormula for subdivisions * Add Path, add Path.Ref, add PathIterator * Add Geometry class for finding inflection points, tangent, curvature, max curvature, cusp, solving quadratic equations, cubic equations, etc * Add RefCounted interface * Add Hardware transfer processor * Optimize rectangle packer
3.10.0.2 Release 17.01.2024

Modern UI 3.10.0.2 (Forge)

Підтримувані версії Minecraft
1.19.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.10.0.2 #### Forge Extension 1.19.2 * Add Markdown preview * Use vanilla border style for modern tooltip (when rounded = false) * Add font names for registered fonts, add JetBrains Mono * Update to Emoji 15.1 * Add auto scroll when tooltip is out of screen * Add shadow effect for tooltip * Add developer mode config to Preferences GUI * Hide Advanced Options and Dev when not in developer mode * Adjust default font behavior to be locale-sensitive * Tweak fallback font loading behavior (now it accepts font files) * Move destroy() method so that the game won't crash in forced tick after the window closes * Handle glowing sign where text color is black * Update Traditional Chinese - notlin4 #### Modern Text Engine 1.19.2 * Add Untranslated Items integration * Fix useComponentCache not working at all * Fix force unicode font not working after game restart * Fix line breaker SIOOBE for illegal string (this fixed crash with Better Statistics Screen) #### Core Framework 3.10.0 * Move kotlin extension to a separate module (Core-KTX) * Add Log class to avoid using log4j in submodules * Implement blend mode filter for ShapeDrawable, ColorDrawable and other Drawable classes * Fix incorrect drop-down position in RTL layout direction * Fix MenuPopup overlap anchor (google-bug) (fix #199) * Fix TextShaper context range for BiDi analysis * Add LocaleSpan * Add all 42 blend modes that used in Photoshop (currently no shader implementation) * Update BlendMode and Color.blend() * Change Bitmap.getSize() type to long * Make Bitmap's color info mutable (for reinterpretation) * Add path measurement implementation (PathMeasure class) * Remove 2GB restriction on Bitmap creation, add more sanitizations * Deprecate ImageStore, fix javadoc errors * Update Bitmap with Arc3D * Update Matrix and Path with Arc3D * Fix Underline and Strikethrough offset * Add "exclusive" East Asian family support (currently not used) * Public Menu.setOptionalIconsVisible() method * Change atlas coverage type to double #### Core Framework - Kotlin Extension 3.10.0 * Add kotlin-flavored methods, update annotations #### Markdown 3.10.0 * Suppress unchecked warning #### Arc 3D Graphics Engine 3.10.0 * Add color filters and color matrix * Add/update all blend modes and their raster implementations: PLUS, MINUS, DIFFERENCE, EXCLUSION, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, LINEAR_DODGE, LINEAR_BURN, VIVID_LIGHT, LINEAR_LIGHT, PIN_LIGHT, HARD_MIX and HSL blend modes (HUE, SATURATION, COLOR, LUMINOSITY) * Rename shaderc package to compiler * Add Image-derived and Shader-derived skeleton classes * Add UNORM_PACK16 and UNORM_PACK32 encoding constant * Public ColorType.channelFlags * Add missing GRAY_ALPHA_88 for ColorType.encoding * Add alpha type validation * Make owner's reference to pixel map mutable * Fix ColorSpace initializer * Add Raster, remove heap version of Bitmap * Add full path measurement implementation * Add PixelUtils for pixel conversion * Add PixelMap and PixelRef, remove Pixmap * Add and optimize Path methods * Add Path.bounds computation, optimize Path allocation * Add Rect2fc and Rect2ic for read-only usage * Inline Path.Ref usage count implementation * Finish approximation of cubic strokes by quadratic splines * Finish approximation of quadratic strokes by quadratic splines * Add MathUtil.pin() method for capturing NaN values, replace some use of clamp() * Add conic section to quadratic curves conversion * Add several methods to reset the Path * Finish RoundJoiner, fix Path reversePop * Add Matrixc interface for read-only usage of Matrix * Update and optimize PathStroker * Optimize approximation of conic sections by quadratic splines * Add PathConsumer * Add Path tessellation for quadratic and cubic splines * Add PathUtils and WangsFormula for subdivisions * Add Path, add Path.Ref, add PathIterator * Add Geometry class for finding inflection points, tangent, curvature, max curvature, cusp, solving quadratic equations, cubic equations, etc * Add RefCounted interface * Add Hardware transfer processor * Optimize rectangle packer
3.10.0.1 Release 17.01.2024

Modern UI 3.10.0.1 (Forge)

Підтримувані версії Minecraft
1.18.1 1.18.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.10.0.1 #### Forge Extension 1.18.2 * Add Markdown preview * Use vanilla border style for modern tooltip (when rounded = false) * Add font names for registered fonts, add JetBrains Mono * Update to Emoji 15.1 * Add auto scroll when tooltip is out of screen * Add shadow effect for tooltip * Add developer mode config to Preferences GUI * Hide Advanced Options and Dev when not in developer mode * Tweak fallback font loading behavior (now it accepts font files) * Move destroy() method so that the game won't crash in forced tick after the window closes * Handle glowing sign where text color is black * Update Traditional Chinese - notlin4 #### Modern Text Engine 1.18.2 * Add Untranslated Items integration * Fix useComponentCache not working at all * Fix force unicode font not working after game restart * Fix line breaker SIOOBE for illegal string (this fixed crash with Better Statistics Screen) #### Core Framework 3.10.0 * Move kotlin extension to a separate module (Core-KTX) * Add Log class to avoid using log4j in submodules * Implement blend mode filter for ShapeDrawable, ColorDrawable and other Drawable classes * Fix incorrect drop-down position in RTL layout direction * Fix MenuPopup overlap anchor (google-bug) (fix #199) * Fix TextShaper context range for BiDi analysis * Add LocaleSpan * Add all 42 blend modes that used in Photoshop (currently no shader implementation) * Update BlendMode and Color.blend() * Change Bitmap.getSize() type to long * Make Bitmap's color info mutable (for reinterpretation) * Add path measurement implementation (PathMeasure class) * Remove 2GB restriction on Bitmap creation, add more sanitizations * Deprecate ImageStore, fix javadoc errors * Update Bitmap with Arc3D * Update Matrix and Path with Arc3D * Fix Underline and Strikethrough offset * Add "exclusive" East Asian family support (currently not used) * Public Menu.setOptionalIconsVisible() method * Change atlas coverage type to double #### Core Framework - Kotlin Extension 3.10.0 * Add kotlin-flavored methods, update annotations #### Markdown 3.10.0 * Suppress unchecked warning #### Arc 3D Graphics Engine 3.10.0 * Add color filters and color matrix * Add/update all blend modes and their raster implementations: PLUS, MINUS, DIFFERENCE, EXCLUSION, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, LINEAR_DODGE, LINEAR_BURN, VIVID_LIGHT, LINEAR_LIGHT, PIN_LIGHT, HARD_MIX and HSL blend modes (HUE, SATURATION, COLOR, LUMINOSITY) * Rename shaderc package to compiler * Add Image-derived and Shader-derived skeleton classes * Add UNORM_PACK16 and UNORM_PACK32 encoding constant * Public ColorType.channelFlags * Add missing GRAY_ALPHA_88 for ColorType.encoding * Add alpha type validation * Make owner's reference to pixel map mutable * Fix ColorSpace initializer * Add Raster, remove heap version of Bitmap * Add full path measurement implementation * Add PixelUtils for pixel conversion * Add PixelMap and PixelRef, remove Pixmap * Add and optimize Path methods * Add Path.bounds computation, optimize Path allocation * Add Rect2fc and Rect2ic for read-only usage * Inline Path.Ref usage count implementation * Finish approximation of cubic strokes by quadratic splines * Finish approximation of quadratic strokes by quadratic splines * Add MathUtil.pin() method for capturing NaN values, replace some use of clamp() * Add conic section to quadratic curves conversion * Add several methods to reset the Path * Finish RoundJoiner, fix Path reversePop * Add Matrixc interface for read-only usage of Matrix * Update and optimize PathStroker * Optimize approximation of conic sections by quadratic splines * Add PathConsumer * Add Path tessellation for quadratic and cubic splines * Add PathUtils and WangsFormula for subdivisions * Add Path, add Path.Ref, add PathIterator * Add Geometry class for finding inflection points, tangent, curvature, max curvature, cusp, solving quadratic equations, cubic equations, etc * Add RefCounted interface * Add Hardware transfer processor * Optimize rectangle packer
3.9.0.5 Release 10.11.2023

Modern UI 3.9.0.5 (Fabric)

Підтримувані версії Minecraft
1.20.2
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.9.0.5 #### Forge Extension 1.20.2 * Fix validation errors * Add font atlas compact * Add Iris shaders integration * Schedule GUI Scale value listener on next tick * Better text config category * Change typeface loading behavior * Restore cursor position for Emoji shortcode substitution * Rework font manager to implement core Emoji rendering * Add GPU driver bug workarounds bootstrap properties * Improve text field undo/redo * Add undo/redo for EditBox * Add GUI Scale to Preferences * Add batch input commit * Update translations * Implement grapheme break for all text fields * Implement break iter for vanilla EditBox * Add music player * Increase window size for OpenGL version test, fix game freeze on Linux * Update font resources and licenses * Add tooltip border width config * Fix format error when setting color opacity * Remove unused assets * Completely switch to Arc3D and abandon GL*Compat * Auto clean up less used GPU resources * Always generate text config * Use jar-in-jar for caffeine and flexmark * Update synchronization, improve render performance * Disable MSAA by default, 0.176x VRAM usage than before, and faster * Update to latest Arc3D and ModernUI #### Fabric Extension 1.20.2 / Quilt Extension 1.20.2 * Add GUI Scale slider for Fabric * Fix mod logo on Fabric * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.2 * Auto disable modern text shaders when Iris shaders are active * Now follow vanilla's Force Unicode Font setting * Fix compat with Loot Beams * Fix compat with Debugify * Fix compat with Curios * Fix shadow offset Y for bitmap font * Fix fist line rendering in sign edit GUI * Add text layout command * Remove text cache cleanup on parallel dispatch * Dont draw text outline when 'modern text shaders in 3D' disabled * Keep text shader preload consistent with vanilla UI shader preload * Improve UniformScale text when GUI scale is less than 4 #### Core Framework 3.9.0 * Separate Arc 3D from core framework * Optimize Matrix * Optimize ImageStore * Fix Image cleanup * Add font atlas compact * Fix emoji font color * Add full Emoji font support to core framework * Add Half (float16) type * Move BinaryIO to Parcel * Add ByteBuffer implementation for Parcelable * Add commit batch input * Fix per-cluster measure bug * Fix track on rewind * Rework on AudioSystem * Move old ViewPager implementation to core framework * Delay mipmaps regeneration for font atlas * Fix and optimize SpanSet * Decrease the default touchSlop value * Completely remove GL*Compat classes, remove MSAA rendering * Review bug on glfwWaitEventsTimeout * Add CascadingMenuPopup presenter * Remove IOException in readIntoNativeBuffer if >=2GB * Fix compat with default render loop for OpenGL 3.3 * Optimize default bootstrap process * Improve synchronization between UI thread and render thread * Fragment now implements OnCreateContextMenuListener * Fix saveLayer with alpha=0 * Add ContextMenuInfo * Add ExpandableListView * Fix ShapeDrawable line thickness * Disable MSAA by default, and reduce the number of off-screen targets * Remove the limit on the number of families in FontCollection * Other small fixes and improvements #### Arc 3D Graphics Engine 3.9.0 * Fix validation errors * Add DriverBugWorkarounds * Change to LinkedListMultimap * Use HashMap for resource cache * Better handling dirty OpenGL context states * Add Blend constants * Refactor Engine API * Add Pixmap * Fix GpuBufferPool * Add SDF rectangle geometry processor * Add NVIDIA driver bug workaround, when binding index buffer using DSA * Add compat with OpenGL 3.3 upload pixels * Add copyImage implementation, change Surface hierarchy * Add Matrix.mapPoints and Matrix.getMin/MaxScale * Add shear, map and I/O methods for Matrix * Fix and optimize Matrix#invert * Re-implement Matrix functions * Fully implement ClipStack functions * Other small fixes and improvements
3.9.0.5 Release 10.11.2023

Modern UI 3.9.0.5 (Forge)

Підтримувані версії Minecraft
1.20.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.9.0.5 #### Forge Extension 1.20.2 * Fix validation errors * Add font atlas compact * Add Iris shaders integration * Schedule GUI Scale value listener on next tick * Better text config category * Change typeface loading behavior * Restore cursor position for Emoji shortcode substitution * Rework font manager to implement core Emoji rendering * Add GPU driver bug workarounds bootstrap properties * Improve text field undo/redo * Add undo/redo for EditBox * Add GUI Scale to Preferences * Add batch input commit * Update translations * Implement grapheme break for all text fields * Implement break iter for vanilla EditBox * Add music player * Increase window size for OpenGL version test, fix game freeze on Linux * Update font resources and licenses * Add tooltip border width config * Fix format error when setting color opacity * Remove unused assets * Completely switch to Arc3D and abandon GL*Compat * Auto clean up less used GPU resources * Always generate text config * Use jar-in-jar for caffeine and flexmark * Update synchronization, improve render performance * Disable MSAA by default, 0.176x VRAM usage than before, and faster * Update to latest Arc3D and ModernUI #### Fabric Extension 1.20.2 / Quilt Extension 1.20.2 * Add GUI Scale slider for Fabric * Fix mod logo on Fabric * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.2 * Auto disable modern text shaders when Iris shaders are active * Now follow vanilla's Force Unicode Font setting * Fix compat with Loot Beams * Fix compat with Debugify * Fix compat with Curios * Fix shadow offset Y for bitmap font * Fix fist line rendering in sign edit GUI * Add text layout command * Remove text cache cleanup on parallel dispatch * Dont draw text outline when 'modern text shaders in 3D' disabled * Keep text shader preload consistent with vanilla UI shader preload * Improve UniformScale text when GUI scale is less than 4 #### Core Framework 3.9.0 * Separate Arc 3D from core framework * Optimize Matrix * Optimize ImageStore * Fix Image cleanup * Add font atlas compact * Fix emoji font color * Add full Emoji font support to core framework * Add Half (float16) type * Move BinaryIO to Parcel * Add ByteBuffer implementation for Parcelable * Add commit batch input * Fix per-cluster measure bug * Fix track on rewind * Rework on AudioSystem * Move old ViewPager implementation to core framework * Delay mipmaps regeneration for font atlas * Fix and optimize SpanSet * Decrease the default touchSlop value * Completely remove GL*Compat classes, remove MSAA rendering * Review bug on glfwWaitEventsTimeout * Add CascadingMenuPopup presenter * Remove IOException in readIntoNativeBuffer if >=2GB * Fix compat with default render loop for OpenGL 3.3 * Optimize default bootstrap process * Improve synchronization between UI thread and render thread * Fragment now implements OnCreateContextMenuListener * Fix saveLayer with alpha=0 * Add ContextMenuInfo * Add ExpandableListView * Fix ShapeDrawable line thickness * Disable MSAA by default, and reduce the number of off-screen targets * Remove the limit on the number of families in FontCollection * Other small fixes and improvements #### Arc 3D Graphics Engine 3.9.0 * Fix validation errors * Add DriverBugWorkarounds * Change to LinkedListMultimap * Use HashMap for resource cache * Better handling dirty OpenGL context states * Add Blend constants * Refactor Engine API * Add Pixmap * Fix GpuBufferPool * Add SDF rectangle geometry processor * Add NVIDIA driver bug workaround, when binding index buffer using DSA * Add compat with OpenGL 3.3 upload pixels * Add copyImage implementation, change Surface hierarchy * Add Matrix.mapPoints and Matrix.getMin/MaxScale * Add shear, map and I/O methods for Matrix * Fix and optimize Matrix#invert * Re-implement Matrix functions * Fully implement ClipStack functions * Other small fixes and improvements
3.9.0.4 Release 10.11.2023

Modern UI 3.9.0.4 (Fabric)

Підтримувані версії Minecraft
1.20.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.9.0.4 #### Forge Extension 1.20.1 / NeoForge Extension 1.20.1 * Fix validation errors * Add font atlas compact * Add Iris shaders integration * Schedule GUI Scale value listener on next tick * Better text config category * Change typeface loading behavior * Restore cursor position for Emoji shortcode substitution * Rework font manager to implement core Emoji rendering * Add GPU driver bug workarounds bootstrap properties * Improve text field undo/redo * Add undo/redo for EditBox * Add GUI Scale to Preferences * Add batch input commit * Update translations * Implement grapheme break for all text fields * Implement break iter for vanilla EditBox * Add music player * Increase window size for OpenGL version test, fix game freeze on Linux * Update font resources and licenses * Add tooltip border width config * Fix format error when setting color opacity * Remove unused assets * Completely switch to Arc3D and abandon GL*Compat * Auto clean up less used GPU resources * Always generate text config * Use jar-in-jar for caffeine and flexmark * Update synchronization, improve render performance * Disable MSAA by default, 0.176x VRAM usage than before, and faster * Update to latest Arc3D and ModernUI #### Fabric Extension 1.20.1 / Quilt Extension 1.20.1 * Add GUI Scale slider for Fabric * Fix mod logo on Fabric * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.1 * Auto disable modern text shaders when Iris shaders are active * Now follow vanilla's Force Unicode Font setting * Fix compat with Loot Beams * Fix compat with Debugify * Fix compat with Curios * Fix shadow offset Y for bitmap font * Fix fist line rendering in sign edit GUI * Add text layout command * Remove text cache cleanup on parallel dispatch * Dont draw text outline when 'modern text shaders in 3D' disabled * Keep text shader preload consistent with vanilla UI shader preload * Improve UniformScale text when GUI scale is less than 4 #### Core Framework 3.9.0 * Separate Arc 3D from core framework * Optimize Matrix * Optimize ImageStore * Fix Image cleanup * Add font atlas compact * Fix emoji font color * Add full Emoji font support to core framework * Add Half (float16) type * Move BinaryIO to Parcel * Add ByteBuffer implementation for Parcelable * Add commit batch input * Fix per-cluster measure bug * Fix track on rewind * Rework on AudioSystem * Move old ViewPager implementation to core framework * Delay mipmaps regeneration for font atlas * Fix and optimize SpanSet * Decrease the default touchSlop value * Completely remove GL*Compat classes, remove MSAA rendering * Review bug on glfwWaitEventsTimeout * Add CascadingMenuPopup presenter * Remove IOException in readIntoNativeBuffer if >=2GB * Fix compat with default render loop for OpenGL 3.3 * Optimize default bootstrap process * Improve synchronization between UI thread and render thread * Fragment now implements OnCreateContextMenuListener * Fix saveLayer with alpha=0 * Add ContextMenuInfo * Add ExpandableListView * Fix ShapeDrawable line thickness * Disable MSAA by default, and reduce the number of off-screen targets * Remove the limit on the number of families in FontCollection * Other small fixes and improvements #### Arc 3D Graphics Engine 3.9.0 * Fix validation errors * Add DriverBugWorkarounds * Change to LinkedListMultimap * Use HashMap for resource cache * Better handling dirty OpenGL context states * Add Blend constants * Refactor Engine API * Add Pixmap * Fix GpuBufferPool * Add SDF rectangle geometry processor * Add NVIDIA driver bug workaround, when binding index buffer using DSA * Add compat with OpenGL 3.3 upload pixels * Add copyImage implementation, change Surface hierarchy * Add Matrix.mapPoints and Matrix.getMin/MaxScale * Add shear, map and I/O methods for Matrix * Fix and optimize Matrix#invert * Re-implement Matrix functions * Fully implement ClipStack functions * Other small fixes and improvements
3.9.0.4 Release 10.11.2023

Modern UI 3.9.0.4 (Forge)

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
forge neoforge
Показати зміни
### Modern UI 3.9.0.4 #### Forge Extension 1.20.1 / NeoForge Extension 1.20.1 * Fix validation errors * Add font atlas compact * Add Iris shaders integration * Schedule GUI Scale value listener on next tick * Better text config category * Change typeface loading behavior * Restore cursor position for Emoji shortcode substitution * Rework font manager to implement core Emoji rendering * Add GPU driver bug workarounds bootstrap properties * Improve text field undo/redo * Add undo/redo for EditBox * Add GUI Scale to Preferences * Add batch input commit * Update translations * Implement grapheme break for all text fields * Implement break iter for vanilla EditBox * Add music player * Increase window size for OpenGL version test, fix game freeze on Linux * Update font resources and licenses * Add tooltip border width config * Fix format error when setting color opacity * Remove unused assets * Completely switch to Arc3D and abandon GL*Compat * Auto clean up less used GPU resources * Always generate text config * Use jar-in-jar for caffeine and flexmark * Update synchronization, improve render performance * Disable MSAA by default, 0.176x VRAM usage than before, and faster * Update to latest Arc3D and ModernUI #### Fabric Extension 1.20.1 / Quilt Extension 1.20.1 * Add GUI Scale slider for Fabric * Fix mod logo on Fabric * Others are functionally equivalent to Forge version #### Modern Text Engine 1.20.1 * Auto disable modern text shaders when Iris shaders are active * Now follow vanilla's Force Unicode Font setting * Fix compat with Loot Beams * Fix compat with Debugify * Fix compat with Curios * Fix shadow offset Y for bitmap font * Fix fist line rendering in sign edit GUI * Add text layout command * Remove text cache cleanup on parallel dispatch * Dont draw text outline when 'modern text shaders in 3D' disabled * Keep text shader preload consistent with vanilla UI shader preload * Improve UniformScale text when GUI scale is less than 4 #### Core Framework 3.9.0 * Separate Arc 3D from core framework * Optimize Matrix * Optimize ImageStore * Fix Image cleanup * Add font atlas compact * Fix emoji font color * Add full Emoji font support to core framework * Add Half (float16) type * Move BinaryIO to Parcel * Add ByteBuffer implementation for Parcelable * Add commit batch input * Fix per-cluster measure bug * Fix track on rewind * Rework on AudioSystem * Move old ViewPager implementation to core framework * Delay mipmaps regeneration for font atlas * Fix and optimize SpanSet * Decrease the default touchSlop value * Completely remove GL*Compat classes, remove MSAA rendering * Review bug on glfwWaitEventsTimeout * Add CascadingMenuPopup presenter * Remove IOException in readIntoNativeBuffer if >=2GB * Fix compat with default render loop for OpenGL 3.3 * Optimize default bootstrap process * Improve synchronization between UI thread and render thread * Fragment now implements OnCreateContextMenuListener * Fix saveLayer with alpha=0 * Add ContextMenuInfo * Add ExpandableListView * Fix ShapeDrawable line thickness * Disable MSAA by default, and reduce the number of off-screen targets * Remove the limit on the number of families in FontCollection * Other small fixes and improvements #### Arc 3D Graphics Engine 3.9.0 * Fix validation errors * Add DriverBugWorkarounds * Change to LinkedListMultimap * Use HashMap for resource cache * Better handling dirty OpenGL context states * Add Blend constants * Refactor Engine API * Add Pixmap * Fix GpuBufferPool * Add SDF rectangle geometry processor * Add NVIDIA driver bug workaround, when binding index buffer using DSA * Add compat with OpenGL 3.3 upload pixels * Add copyImage implementation, change Surface hierarchy * Add Matrix.mapPoints and Matrix.getMin/MaxScale * Add shear, map and I/O methods for Matrix * Fix and optimize Matrix#invert * Re-implement Matrix functions * Fully implement ClipStack functions * Other small fixes and improvements
3.9.0.3 Release 10.11.2023

Modern UI 3.9.0.3 (Forge)

Підтримувані версії Minecraft
1.19.4
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.9.0.3 #### Forge Extension 1.19.4-45.1.0 * Fix validation errors * Add font atlas compact * Add Iris shaders integration * Schedule GUI Scale value listener on next tick * Better text config category * Change typeface loading behavior * Restore cursor position for Emoji shortcode substitution * Rework font manager to implement core Emoji rendering * Add GPU driver bug workarounds bootstrap properties * Improve text field undo/redo * Add undo/redo for EditBox * Add GUI Scale to Preferences * Add batch input commit * Update translations * Implement grapheme break for all text fields * Implement break iter for vanilla EditBox * Add music player * Increase window size for OpenGL version test, fix game freeze on Linux * Update font resources and licenses * Add tooltip border width config * Fix format error when setting color opacity * Remove unused assets * Completely switch to Arc3D and abandon GL*Compat * Auto clean up less used GPU resources * Always generate text config * Use jar-in-jar for caffeine and flexmark * Update synchronization, improve render performance * Disable MSAA by default, 0.176x VRAM usage than before, and faster * Update to latest Arc3D and ModernUI #### Modern Text Engine 1.19.4 * Auto disable modern text shaders when Iris shaders are active * Now follow vanilla's Force Unicode Font setting * Fix compat with Curios * Fix shadow offset Y for bitmap font * Fix fist line rendering in sign edit GUI * Add text layout command * Remove text cache cleanup on parallel dispatch * Dont draw text outline when 'modern text shaders in 3D' disabled * Keep text shader preload consistent with vanilla UI shader preload * Improve UniformScale text when GUI scale is less than 4 #### Core Framework 3.9.0 * Separate Arc 3D from core framework * Optimize Matrix * Optimize ImageStore * Fix Image cleanup * Add font atlas compact * Fix emoji font color * Add full Emoji font support to core framework * Add Half (float16) type * Move BinaryIO to Parcel * Add ByteBuffer implementation for Parcelable * Add commit batch input * Fix per-cluster measure bug * Fix track on rewind * Rework on AudioSystem * Move old ViewPager implementation to core framework * Delay mipmaps regeneration for font atlas * Fix and optimize SpanSet * Decrease the default touchSlop value * Completely remove GL*Compat classes, remove MSAA rendering * Review bug on glfwWaitEventsTimeout * Add CascadingMenuPopup presenter * Remove IOException in readIntoNativeBuffer if >=2GB * Fix compat with default render loop for OpenGL 3.3 * Optimize default bootstrap process * Improve synchronization between UI thread and render thread * Fragment now implements OnCreateContextMenuListener * Fix saveLayer with alpha=0 * Add ContextMenuInfo * Add ExpandableListView * Fix ShapeDrawable line thickness * Disable MSAA by default, and reduce the number of off-screen targets * Remove the limit on the number of families in FontCollection * Other small fixes and improvements #### Arc 3D Graphics Engine 3.9.0 * Fix validation errors * Add DriverBugWorkarounds * Change to LinkedListMultimap * Use HashMap for resource cache * Better handling dirty OpenGL context states * Add Blend constants * Refactor Engine API * Add Pixmap * Fix GpuBufferPool * Add SDF rectangle geometry processor * Add NVIDIA driver bug workaround, when binding index buffer using DSA * Add compat with OpenGL 3.3 upload pixels * Add copyImage implementation, change Surface hierarchy * Add Matrix.mapPoints and Matrix.getMin/MaxScale * Add shear, map and I/O methods for Matrix * Fix and optimize Matrix#invert * Re-implement Matrix functions * Fully implement ClipStack functions * Other small fixes and improvements
3.9.0.2 Release 10.11.2023

Modern UI 3.9.0.2 (Forge)

Підтримувані версії Minecraft
1.19.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.9.0.2 #### Forge Extension 1.19.2-43.1.2 * Fix validation errors * Add font atlas compact * Add Iris shaders integration * Schedule GUI Scale value listener on next tick * Better text config category * Change typeface loading behavior * Restore cursor position for Emoji shortcode substitution * Rework font manager to implement core Emoji rendering * Add GPU driver bug workarounds bootstrap properties * Improve text field undo/redo * Add undo/redo for EditBox * Add GUI Scale to Preferences * Add batch input commit * Update translations * Implement grapheme break for all text fields * Implement break iter for vanilla EditBox * Add music player * Increase window size for OpenGL version test, fix game freeze on Linux * Update font resources and licenses * Add tooltip border width config * Fix format error when setting color opacity * Remove unused assets * Completely switch to Arc3D and abandon GL*Compat * Auto clean up less used GPU resources * Always generate text config * Use jar-in-jar for caffeine and flexmark * Update synchronization, improve render performance * Disable MSAA by default, 0.176x VRAM usage than before, and faster * Update to latest Arc3D and ModernUI #### Modern Text Engine 1.19.2 * Auto disable modern text shaders when Iris shaders are active * Now follow vanilla's Force Unicode Font setting * Fix compat with Curios * Fix shadow offset Y for bitmap font * Fix fist line rendering in sign edit GUI * Add text layout command * Remove text cache cleanup on parallel dispatch * Dont draw text outline when 'modern text shaders in 3D' disabled * Keep text shader preload consistent with vanilla UI shader preload * Improve UniformScale text when GUI scale is less than 4 #### Core Framework 3.9.0 * Separate Arc 3D from core framework * Optimize Matrix * Optimize ImageStore * Fix Image cleanup * Add font atlas compact * Fix emoji font color * Add full Emoji font support to core framework * Add Half (float16) type * Move BinaryIO to Parcel * Add ByteBuffer implementation for Parcelable * Add commit batch input * Fix per-cluster measure bug * Fix track on rewind * Rework on AudioSystem * Move old ViewPager implementation to core framework * Delay mipmaps regeneration for font atlas * Fix and optimize SpanSet * Decrease the default touchSlop value * Completely remove GL*Compat classes, remove MSAA rendering * Review bug on glfwWaitEventsTimeout * Add CascadingMenuPopup presenter * Remove IOException in readIntoNativeBuffer if >=2GB * Fix compat with default render loop for OpenGL 3.3 * Optimize default bootstrap process * Improve synchronization between UI thread and render thread * Fragment now implements OnCreateContextMenuListener * Fix saveLayer with alpha=0 * Add ContextMenuInfo * Add ExpandableListView * Fix ShapeDrawable line thickness * Disable MSAA by default, and reduce the number of off-screen targets * Remove the limit on the number of families in FontCollection * Other small fixes and improvements #### Arc 3D Graphics Engine 3.9.0 * Fix validation errors * Add DriverBugWorkarounds * Change to LinkedListMultimap * Use HashMap for resource cache * Better handling dirty OpenGL context states * Add Blend constants * Refactor Engine API * Add Pixmap * Fix GpuBufferPool * Add SDF rectangle geometry processor * Add NVIDIA driver bug workaround, when binding index buffer using DSA * Add compat with OpenGL 3.3 upload pixels * Add copyImage implementation, change Surface hierarchy * Add Matrix.mapPoints and Matrix.getMin/MaxScale * Add shear, map and I/O methods for Matrix * Fix and optimize Matrix#invert * Re-implement Matrix functions * Fully implement ClipStack functions * Other small fixes and improvements
3.9.0.1 Release 10.11.2023

Modern UI 3.9.0.1 (Forge)

Підтримувані версії Minecraft
1.18.1 1.18.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.9.0.1 #### Forge Extension 1.18.2-40.1.73 * Fix validation errors * Add font atlas compact * Add Iris shaders integration * Schedule GUI Scale value listener on next tick * Better text config category * Change typeface loading behavior * Restore cursor position for Emoji shortcode substitution * Rework font manager to implement core Emoji rendering * Add GPU driver bug workarounds bootstrap properties * Improve text field undo/redo * Add undo/redo for EditBox * Add GUI Scale to Preferences * Add batch input commit * Update translations * Implement grapheme break for all text fields * Implement break iter for vanilla EditBox * Increase window size for OpenGL version test, fix game freeze on Linux * Update font resources and licenses * Add tooltip border width config * Fix format error when setting color opacity * Remove unused assets * Completely switch to Arc3D and abandon GL*Compat * Auto clean up less used GPU resources * Always generate text config * Use jar-in-jar for caffeine and flexmark * Update synchronization, improve render performance * Disable MSAA by default, 0.176x VRAM usage than before, and faster * Update to latest Arc3D and ModernUI #### Modern Text Engine 1.18.2 * Auto disable modern text shaders when Iris shaders are active * Now follow vanilla's Force Unicode Font setting * Fix compat with Curios * Fix shadow offset Y for bitmap font * Add text layout command * Remove text cache cleanup on parallel dispatch * Dont draw text outline when 'modern text shaders in 3D' disabled * Keep text shader preload consistent with vanilla UI shader preload * Improve UniformScale text when GUI scale is less than 4 #### Core Framework 3.9.0 * Separate Arc 3D from core framework * Optimize Matrix * Optimize ImageStore * Fix Image cleanup * Add font atlas compact * Fix emoji font color * Add full Emoji font support to core framework * Add Half (float16) type * Move BinaryIO to Parcel * Add ByteBuffer implementation for Parcelable * Add commit batch input * Fix per-cluster measure bug * Fix track on rewind * Rework on AudioSystem * Move old ViewPager implementation to core framework * Delay mipmaps regeneration for font atlas * Fix and optimize SpanSet * Decrease the default touchSlop value * Completely remove GL*Compat classes, remove MSAA rendering * Review bug on glfwWaitEventsTimeout * Add CascadingMenuPopup presenter * Remove IOException in readIntoNativeBuffer if >=2GB * Fix compat with default render loop for OpenGL 3.3 * Optimize default bootstrap process * Improve synchronization between UI thread and render thread * Fragment now implements OnCreateContextMenuListener * Fix saveLayer with alpha=0 * Add ContextMenuInfo * Add ExpandableListView * Fix ShapeDrawable line thickness * Disable MSAA by default, and reduce the number of off-screen targets * Remove the limit on the number of families in FontCollection * Other small fixes and improvements #### Arc 3D Graphics Engine 3.9.0 * Fix validation errors * Add DriverBugWorkarounds * Change to LinkedListMultimap * Use HashMap for resource cache * Better handling dirty OpenGL context states * Add Blend constants * Refactor Engine API * Add Pixmap * Fix GpuBufferPool * Add SDF rectangle geometry processor * Add NVIDIA driver bug workaround, when binding index buffer using DSA * Add compat with OpenGL 3.3 upload pixels * Add copyImage implementation, change Surface hierarchy * Add Matrix.mapPoints and Matrix.getMin/MaxScale * Add shear, map and I/O methods for Matrix * Fix and optimize Matrix#invert * Re-implement Matrix functions * Fully implement ClipStack functions * Other small fixes and improvements
3.8.2.4 Release 13.09.2023

Modern UI 3.8.2.4 (Fabric)

Підтримувані версії Minecraft
1.20.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.8.2.4 #### Forge Extension 1.20.1-47.0.14 / NeoForge Extension 1.20.1-47.1.4 * Change the crash with TipTheScales to warning * Remove bitwise AND in shaders #### Fabric Extension 1.20.1-0.14.21-0.87.0 / Quilt Extension 1.20.1-7.1.2-0.87.0 * Remove bitwise AND in shaders * Functionally equivalent to Forge version but removed some features ### Modern Text Engine 1.20.1 * Only override Font's StringSplitter
3.8.2.4 Release 13.09.2023

Modern UI 3.8.2.4 (Forge)

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
forge neoforge
Показати зміни
### Modern UI 3.8.2.4 #### Forge Extension 1.20.1-47.0.14 / NeoForge Extension 1.20.1-47.1.4 * Change the crash with TipTheScales to warning * Remove bitwise AND in shaders #### Fabric Extension 1.20.1-0.14.21-0.87.0 / Quilt Extension 1.20.1-7.1.2-0.87.0 * Remove bitwise AND in shaders * Functionally equivalent to Forge version but removed some features ### Modern Text Engine 1.20.1 * Only override Font's StringSplitter
3.8.2.3 Release 13.09.2023

Modern UI 3.8.2.3 (Forge)

Підтримувані версії Minecraft
1.19.4
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.8.2.3 #### Forge Extension 1.19.4-45.1.0 * Change the crash with TipTheScales to warning * Change step size for master volume multiplier option to 0.01 * Prevent Action Center from being opened when a screen with shouldCloseOnEsc=false is opened * Request window attention when "Ding" is enabled #### Modern Text Engine 1.19.4 * Only override Font's StringSplitter #### Core Framework 3.8.2 * Add GridView * Add GridLayout * Add TableLayout * Add UndoManager * Add compatibility with LWJGL 3.2 #### Arc 3D Graphics Engine 3.8.2 * Fix compatibility with OpenGL 3.3
3.8.2.2 Release 13.09.2023

Modern UI 3.8.2.2 (Forge)

Підтримувані версії Minecraft
1.19.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.8.2.2 #### Forge Extension 1.19.2-43.1.2 * Change the crash with TipTheScales to warning * Change step size for master volume multiplier option to 0.01 * Prevent Action Center from being opened when a screen with shouldCloseOnEsc=false is opened * Request window attention when "Ding" is enabled #### Modern Text Engine 1.19.2 * Only override Font's StringSplitter #### Core Framework 3.8.2 * Add GridView * Add GridLayout * Add TableLayout * Add UndoManager * Add compatibility with LWJGL 3.2 #### Arc 3D Graphics Engine 3.8.2 * Fix compatibility with OpenGL 3.3
3.8.2.1 Release 13.09.2023

Modern UI 3.8.2.1 (Forge)

Підтримувані версії Minecraft
1.18.1 1.18.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.8.2.1 #### Forge Extension 1.18.2-40.1.73 * Change step size for master volume multiplier option to 0.01 * Prevent Action Center from being opened when a screen with shouldCloseOnEsc=false is opened * Request window attention when "Ding" is enabled #### Modern Text Engine 1.18.2 * Only override Font's StringSplitter #### Core Framework 3.8.2 * Add GridView * Add GridLayout * Add TableLayout * Add UndoManager * Add compatibility with LWJGL 3.2 #### Arc 3D Graphics Engine 3.8.2 * Fix compatibility with OpenGL 3.3
3.8.1.5 Release 06.09.2023

Modern UI 3.8.1.5 (Fabric)

Підтримувані версії Minecraft
1.20.1
Завантажувачі / Платформи
fabric quilt
Показати зміни
### Modern UI 3.8.1.5 #### Forge Extension 1.20.1-47.0.14 / NeoForge Extension 1.20.1-47.1.4 * Re-architect for platform abstraction * Change step size for master volume multiplier option to 0.01 * Prevent Action Center from being opened when a screen with shouldCloseOnEsc=false is opened * Request window attention when "Ding" is enabled #### Fabric Extension 1.20.1-0.14.21-0.87.0 / Quilt Extension 1.20.1-7.1.2-0.87.0 * Functionally equivalent to Forge version but removed some features #### Modern Text Engine 1.20.1 * No change #### Core Framework 3.8.1 #### Arc 3D Graphics Engine 3.8.1 #### View Pager 3.8.1 #### Markdown 3.8.1
3.8.1.5 Release 06.09.2023

Modern UI 3.8.1.5 (Forge)

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
forge neoforge
Показати зміни
### Modern UI 3.8.1.5 #### Forge Extension 1.20.1-47.0.14 / NeoForge Extension 1.20.1-47.1.4 * Re-architect for platform abstraction * Change step size for master volume multiplier option to 0.01 * Prevent Action Center from being opened when a screen with shouldCloseOnEsc=false is opened * Request window attention when "Ding" is enabled #### Fabric Extension 1.20.1-0.14.21-0.87.0 / Quilt Extension 1.20.1-7.1.2-0.87.0 * Functionally equivalent to Forge version but removed some features #### Modern Text Engine 1.20.1 * No change #### Core Framework 3.8.1 #### Arc 3D Graphics Engine 3.8.1 #### View Pager 3.8.1 #### Markdown 3.8.1
3.8.1.4 Release 31.08.2023

Modern UI 3.8.1.4

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
forge neoforge
Показати зміни
### Modern UI 3.8.1.4 #### Forge Extension 1.20.1-47.0.14 * Add OptiFine-like zoom * Add master volume multiplier on window blur or minimized * Add framerate limit on window blur or minimized * Add hot reload of the default typeface list * Add font selection list and open file dialog * Separate old font family config into preferred one and fallbacks * Fix ASCII digit input in Arabic * Add tooltip center alignment * Add tooltip title break * Improve extra spacing below tooltip title * Add config to switch between rounded rect or normal rect for tooltip border * Add config for exact tooltip positioning * Add maximized borderless mode * Improve fullscreen borderless on Windows * Update default config * Fix crash on setting opacity to 0 * Fix possible crash in parsing color string * Add Fragments into crash report * Add more advanced options #### Modern Text Engine 1.20.1 * Add fake italic support for bitmap fonts * Add device font size computation in 2D * Add SDF text control in 2D * Add cache lifespan config back * Optimize cache performance * Add config for async text layout * Fix text engine not fully disabled * Fix memory leakage when reloading resources * Add smart SDF text control * Fix polygon offset issues * Fix possible crash on populateDefaultFonts * Add line break style config * Add line break word style config * Fix shadow offset for bitmap fonts * Add redirect of UniformFont #### Core Framework 3.8.1 * Add LayerDrawable * Allow typeface change for toasts * Fix adapter views not getting attached * Fix changing focus with TAB key * Make ScrollView auto scroll to focus * Add implementation of LineBreakConfig * Stop text from being split into small MeasureText.Runs #### Arc 3D Graphics Engine 3.8.1 * Add rect stroke bevel and round shaders * Limit FontAtlas size * Make use of GLSL version in ShaderCaps * Add numDraws and renderPasses stats
3.8.1.3 Release 31.08.2023

Modern UI 3.8.1.3

Підтримувані версії Minecraft
1.19.4
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.8.1.3 #### Forge Extension 1.19.4-45.1.0 * Add OptiFine-like zoom * Add master volume multiplier on window blur or minimized * Add framerate limit on window blur or minimized * Add hot reload of the default typeface list * Add font selection list and open file dialog * Separate old font family config into preferred one and fallbacks * Fix ASCII digit input in Arabic * Add tooltip center alignment * Add tooltip title break * Improve extra spacing below tooltip title * Add config to switch between rounded rect or normal rect for tooltip border * Add config for exact tooltip positioning * Add maximized borderless mode * Improve fullscreen borderless on Windows * Update default config * Fix crash on setting opacity to 0 * Fix possible crash in parsing color string * Add Fragments into crash report * Add more advanced options #### Modern Text Engine 1.19.4 * Add fake italic support for bitmap fonts * Add device font size computation in 2D * Add SDF text control in 2D * Add cache lifespan config back * Optimize cache performance * Add config for async text layout * Fix text engine not fully disabled * Fix memory leakage when reloading resources * Add smart SDF text control * Fix polygon offset issues * Fix possible crash on populateDefaultFonts * Add line break style config * Add line break word style config * Fix shadow offset for bitmap fonts * Add redirect of UniformFont #### Core Framework 3.8.1 * Add LayerDrawable * Allow typeface change for toasts * Fix adapter views not getting attached * Fix changing focus with TAB key * Make ScrollView auto scroll to focus * Add implementation of LineBreakConfig * Stop text from being split into small MeasureText.Runs #### Arc 3D Graphics Engine 3.8.1 * Add rect stroke bevel and round shaders * Limit FontAtlas size * Make use of GLSL version in ShaderCaps * Add numDraws and renderPasses stats
3.8.1.2 Release 31.08.2023

Modern UI 3.8.1.2

Підтримувані версії Minecraft
1.19.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.8.1.2 #### Forge Extension 1.19.2-43.1.2 * Add OptiFine-like zoom * Add master volume multiplier on window blur or minimized * Add framerate limit on window blur or minimized * Add hot reload of the default typeface list * Add font selection list and open file dialog * Separate old font family config into preferred one and fallbacks * Fix ASCII digit input in Arabic * Add tooltip center alignment * Add tooltip title break * Improve extra spacing below tooltip title * Add config to switch between rounded rect or normal rect for tooltip border * Add config for exact tooltip positioning * Add maximized borderless mode * Improve fullscreen borderless on Windows * Update default config * Fix crash on setting opacity to 0 * Fix possible crash in parsing color string * Add Fragments into crash report * Add more advanced options #### Modern Text Engine 1.19.2 * Add fake italic support for bitmap fonts * Add device font size computation in 2D * Add SDF text control in 2D * Add cache lifespan config back * Optimize cache performance * Add config for async text layout * Fix text engine not fully disabled * Fix memory leakage when reloading resources * Add smart SDF text control * Fix polygon offset issues * Fix possible crash on populateDefaultFonts * Add line break style config * Add line break word style config * Fix shadow offset for bitmap fonts * Add redirect of UniformFont #### Core Framework 3.8.1 * Add LayerDrawable * Allow typeface change for toasts * Fix adapter views not getting attached * Fix changing focus with TAB key * Make ScrollView auto scroll to focus * Add implementation of LineBreakConfig * Stop text from being split into small MeasureText.Runs #### Arc 3D Graphics Engine 3.8.1 * Add rect stroke bevel and round shaders * Limit FontAtlas size * Make use of GLSL version in ShaderCaps * Add numDraws and renderPasses stats
3.8.1.1 Release 30.08.2023

Modern UI 3.8.1.1

Підтримувані версії Minecraft
1.18.1 1.18.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.8.1.1 #### Forge Extension 1.18.2-40.1.73 * Add OptiFine-like zoom * Add master volume multiplier on window blur or minimized * Add framerate limit on window blur or minimized * Add hot reload of the default typeface list * Add font selection list and open file dialog * Separate old font family config into preferred one and fallbacks * Fix ASCII digit input in Arabic * Add tooltip center alignment * Add tooltip title break * Improve extra spacing below tooltip title * Add config to switch between rounded rect or normal rect for tooltip border * Add config for exact tooltip positioning * Add maximized borderless mode * Improve fullscreen borderless on Windows * Update default config * Fix crash on setting opacity to 0 * Fix possible crash in parsing color string * Add Fragments into crash report * Add more advanced options #### Modern Text Engine 1.18.2 * Add fake italic support for bitmap fonts * Add device font size computation in 2D * Add SDF text control in 2D * Add cache lifespan config back * Optimize cache performance * Add config for async text layout * Fix text engine not fully disabled * Fix memory leakage when reloading resources * Add smart SDF text control * Fix polygon offset issues * Fix possible crash on populateDefaultFonts * Add line break style config * Add line break word style config * Fix shadow offset for bitmap fonts * Add redirect of UniformFont #### Core Framework 3.8.1 * Add LayerDrawable * Allow typeface change for toasts * Fix adapter views not getting attached * Fix changing focus with TAB key * Make ScrollView auto scroll to focus * Add implementation of LineBreakConfig * Stop text from being split into small MeasureText.Runs #### Arc 3D Graphics Engine 3.8.1 * Add rect stroke bevel and round shaders * Limit FontAtlas size * Make use of GLSL version in ShaderCaps * Add numDraws and renderPasses stats
3.8.0.4 Release 12.08.2023

Modern UI 3.8.0.4

Підтримувані версії Minecraft
1.20 1.20.1
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.8.0.4 #### Forge Extension 1.20.1-47.0.14 * Add tooltips for some options * Add in-game option for background opacity * Use bootstrap.properties instead of bootstrap file * Add dynamic tooltip border colors and presets * Block NUL char for input method #### Modern Text Engine 1.20.1 * Add config to control component cache * Add default font behavior to control whether to use default font * Add SpaceFont for compatibility * Add position alignment for direct mask drawing * Add StandardFontSet for better mod compatibility * Make color emoji work in font itemization rather than brute force * Enhance and optimize text layout engine * Only compute the required information * Make text layout asynchronous * Mix layout processor into LayoutCore to increase cache hit * Adjust paragraph layout lifespan * Reduce performance and memory impact * Remove fast digit replacement * Make obfuscated style work with bitmap fonts * Adjust EditBox highlight color #### Core Framework 3.8.0 * Update font itemization for color emoji * Fit sub-windows in main window * Add ColorEmoji support for font itemization * Optimize GPU glyph memory usage * Block NUL and DEL character from input * Add EmojiFont features * Replace Matrix4 with Matrix for View * Add TooltipPopup support for View * Add Font interface for layout engine, move old Font usage to StandardFont * Add text pre-computation * Replace all ascents with negative values * Fix TextLine context range * Add offset parameters to GlyphsConsumer * Add TextShaper.shapeText for multi-styled text * Fix Canvas.drawText(ShapedText) method * Update TextShaper and Canvas methods * Add TrailingMarginSpan, add LineBackgroundSpan, add TypefaceSpan * Enhance rich text spans, add AlignmentSpan, BulletSpan, LeadingMarginSpan, QuoteSpan * Optimize MeasuredText * Supports text layout with optional per-glyph advances and pixel bounds * Separate Arc Paint, Graphics Paint, TextPaint and FontPaint * Enhance temp TextBuffer recycling * Fix fast path for BoringLayout.draw() * Remove Canvas.drawText(CharSequence) * Replace old LayoutPiece usage with ShapedText.doLayout * Optimize text rendering * Fix FontFamily is not thread safe * Add Matrix for 2D transform (xyw), Matrix3 for 3D transform (xyz) * Migrate graphics package to Arc 3D * Add explicit camera distance * Other small updates... #### Arc 3D Graphics Engine 3.8.0 * Add experimental instanced rendering * Optimize text rendering * Always use buffer orphaning for OpenGL * Add backend render target wrapping * Add submit method for BufferPool * Add IndexMeshPool * Move some context states out of GLCommandBuffer * Add RingBuffer * Add some Vulkan backend classes #### Markdown 3.8.0 * Add Code and CodeBlock * Initial basic Markdown support
3.8.0.3 Release 12.08.2023

Modern UI 3.8.0.3

Підтримувані версії Minecraft
1.19.4
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.8.0.3 #### Forge Extension 1.19.4-45.1.0 * Add tooltips for some options * Add in-game option for background opacity * Use bootstrap.properties instead of bootstrap file * Add dynamic tooltip border colors and presets * Block NUL char for input method #### Modern Text Engine 1.19.4 * Add config to control component cache * Add default font behavior to control whether to use default font * Add SpaceFont for compatibility * Add position alignment for direct mask drawing * Add StandardFontSet for better mod compatibility * Make color emoji work in font itemization rather than brute force * Enhance and optimize text layout engine * Only compute the required information * Make text layout asynchronous * Mix layout processor into LayoutCore to increase cache hit * Adjust paragraph layout lifespan * Reduce performance and memory impact * Remove fast digit replacement * Make obfuscated style work with bitmap fonts * Adjust EditBox highlight color #### Core Framework 3.8.0 * Update font itemization for color emoji * Fit sub-windows in main window * Add ColorEmoji support for font itemization * Optimize GPU glyph memory usage * Block NUL and DEL character from input * Add EmojiFont features * Replace Matrix4 with Matrix for View * Add TooltipPopup support for View * Add Font interface for layout engine, move old Font usage to StandardFont * Add text pre-computation * Replace all ascents with negative values * Fix TextLine context range * Add offset parameters to GlyphsConsumer * Add TextShaper.shapeText for multi-styled text * Fix Canvas.drawText(ShapedText) method * Update TextShaper and Canvas methods * Add TrailingMarginSpan, add LineBackgroundSpan, add TypefaceSpan * Enhance rich text spans, add AlignmentSpan, BulletSpan, LeadingMarginSpan, QuoteSpan * Optimize MeasuredText * Supports text layout with optional per-glyph advances and pixel bounds * Separate Arc Paint, Graphics Paint, TextPaint and FontPaint * Enhance temp TextBuffer recycling * Fix fast path for BoringLayout.draw() * Remove Canvas.drawText(CharSequence) * Replace old LayoutPiece usage with ShapedText.doLayout * Optimize text rendering * Fix FontFamily is not thread safe * Add Matrix for 2D transform (xyw), Matrix3 for 3D transform (xyz) * Migrate graphics package to Arc 3D * Add explicit camera distance * Other small updates... #### Arc 3D Graphics Engine 3.8.0 * Add experimental instanced rendering * Optimize text rendering * Always use buffer orphaning for OpenGL * Add backend render target wrapping * Add submit method for BufferPool * Add IndexMeshPool * Move some context states out of GLCommandBuffer * Add RingBuffer * Add some Vulkan backend classes #### Markdown 3.8.0 * Add Code and CodeBlock * Initial basic Markdown support
3.8.0.2 Release 12.08.2023

Modern UI 3.8.0.2

Підтримувані версії Minecraft
1.19.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.8.0.2 #### Forge Extension 1.19.2-43.1.2 * Add tooltips for some options * Add in-game option for background opacity * Use bootstrap.properties instead of bootstrap file * Add dynamic tooltip border colors and presets * Block NUL char for input method #### Modern Text Engine 1.19.2 * Add config to control component cache * Add default font behavior to control whether to use default font * Add SpaceFont for compatibility * Add position alignment for direct mask drawing * Add StandardFontSet for better mod compatibility * Make color emoji work in font itemization rather than brute force * Enhance and optimize text layout engine * Only compute the required information * Make text layout asynchronous * Mix layout processor into LayoutCore to increase cache hit * Adjust paragraph layout lifespan * Reduce performance and memory impact * Remove fast digit replacement * Make obfuscated style work with bitmap fonts * Adjust EditBox highlight color #### Core Framework 3.8.0 * Update font itemization for color emoji * Fit sub-windows in main window * Add ColorEmoji support for font itemization * Optimize GPU glyph memory usage * Block NUL and DEL character from input * Add EmojiFont features * Replace Matrix4 with Matrix for View * Add TooltipPopup support for View * Add Font interface for layout engine, move old Font usage to StandardFont * Add text pre-computation * Replace all ascents with negative values * Fix TextLine context range * Add offset parameters to GlyphsConsumer * Add TextShaper.shapeText for multi-styled text * Fix Canvas.drawText(ShapedText) method * Update TextShaper and Canvas methods * Add TrailingMarginSpan, add LineBackgroundSpan, add TypefaceSpan * Enhance rich text spans, add AlignmentSpan, BulletSpan, LeadingMarginSpan, QuoteSpan * Optimize MeasuredText * Supports text layout with optional per-glyph advances and pixel bounds * Separate Arc Paint, Graphics Paint, TextPaint and FontPaint * Enhance temp TextBuffer recycling * Fix fast path for BoringLayout.draw() * Remove Canvas.drawText(CharSequence) * Replace old LayoutPiece usage with ShapedText.doLayout * Optimize text rendering * Fix FontFamily is not thread safe * Add Matrix for 2D transform (xyw), Matrix3 for 3D transform (xyz) * Migrate graphics package to Arc 3D * Add explicit camera distance * Other small updates... #### Arc 3D Graphics Engine 3.8.0 * Add experimental instanced rendering * Optimize text rendering * Always use buffer orphaning for OpenGL * Add backend render target wrapping * Add submit method for BufferPool * Add IndexMeshPool * Move some context states out of GLCommandBuffer * Add RingBuffer * Add some Vulkan backend classes #### Markdown 3.8.0 * Add Code and CodeBlock * Initial basic Markdown support
3.8.0.1 Release 12.08.2023

Modern UI 3.8.0.1

Підтримувані версії Minecraft
1.18.1 1.18.2
Завантажувачі / Платформи
forge
Показати зміни
### Modern UI 3.8.0.1 #### Forge Extension 1.18.2-40.1.73 * Add tooltips for some options * Add in-game option for background opacity * Use bootstrap.properties instead of bootstrap file * Add dynamic tooltip border colors and presets * Block NUL char for input method * Fix crash on dedicated server * Fix possible startup crash * Add ContainerDrawHelper * Add config to use vanilla font for convenience * Remove tooltip fade-in animation * Add slider control for preferences * Fix UI screenshot not un-premultiplied * Don't allow soft launching due to OpenGL 3.3 support * Fix GUI scale pinned after game restart * Add CenterFragment2 * Remove noise from gaussian blur shader * Remove deprecated configs * Adjust GUI scale algorithm * Adjust tooltip border width * Support capability for fragments and screens * Fix incorrect color blending for tooltip * Fix GUI scale is always auto after restart * Fix black screen with blur effect * Add glow wave effect * Change the background blur from 4-pass box blur to 2-pass gaussian blur with lod and noise * Improve config reloading and action center UI * Fix crash on dedicated server (though you shouldn't install on server) * Add config to disable slider GUI scale * Update GUI scale algorithm * Add I18n compat characters * Add new API and remove server dependency * Change registration and network to internal #### Modern Text Engine 1.18.2 * Add config to control component cache * Add default font behavior to control whether to use default font * Add SpaceFont for compatibility * Add position alignment for direct mask drawing * Add StandardFontSet for better mod compatibility * Make color emoji work in font itemization rather than brute force * Enhance and optimize text layout engine * Only compute the required information * Make text layout asynchronous * Mix layout processor into LayoutCore to increase cache hit * Adjust paragraph layout lifespan * Reduce performance and memory impact * Remove fast digit replacement * Make obfuscated style work with bitmap fonts * Adjust EditBox highlight color * Fix EditBox selection highlight * Fix per-glyph rendering for compatibility * Fix obfuscated text crash in world using SDF * Make SDF work as long as in 3D or non-translation matrix * Make SDF work with 32pt font size at least * Remove alignPixels due to font hinting * Replace 8x outline with SDF stroke * Fix compatibility for Create display board * Change Twemoji 14 to Google Noto Color Emoji 15 * Fix text rendered as emoji without VS-16 (0xFE0F) * Combine IamCal (Slack) shortcodes with JoyPixels (Discord) and Google * Add distance field text to 3D world * Fix total advance of layout is never pixel-aligned * Fix TTF loading in vanilla resource packs * Adjust texture sharpening factor * Fix line breaking for obfuscated chars * Remove enchantment font hack * Support vanilla bitmap font in replacement run * Support vanilla bitmap font as font family * Support vanilla font declaration * Adjust text decoration thickness * Reduce unnecessary native memory usage in vanilla * Make font resource reloading work async * Optimize ChatFormatting.getByCode to O(1) * Optimize layout caching strategy * Add font set to layout key * Add sharpen font atlases * Change blend mode for glowing text * Add new glowing text effect * Add deferred rendering to improve performance #### Core Framework 3.8.0 * Update font itemization for color emoji * Fit sub-windows in main window * Add ColorEmoji support for font itemization * Optimize GPU glyph memory usage * Block NUL and DEL character from input * Add EmojiFont features * Replace Matrix4 with Matrix for View * Add TooltipPopup support for View * Add Font interface for layout engine, move old Font usage to StandardFont * Add text pre-computation * Replace all ascents with negative values * Fix TextLine context range * Add offset parameters to GlyphsConsumer * Add TextShaper.shapeText for multi-styled text * Fix Canvas.drawText(ShapedText) method * Update TextShaper and Canvas methods * Add TrailingMarginSpan, add LineBackgroundSpan, add TypefaceSpan * Enhance rich text spans, add AlignmentSpan, BulletSpan, LeadingMarginSpan, QuoteSpan * Optimize MeasuredText * Supports text layout with optional per-glyph advances and pixel bounds * Separate Arc Paint, Graphics Paint, TextPaint and FontPaint * Enhance temp TextBuffer recycling * Fix fast path for BoringLayout.draw() * Remove Canvas.drawText(CharSequence) * Replace old LayoutPiece usage with ShapedText.doLayout * Optimize text rendering * Fix FontFamily is not thread safe * Add Matrix for 2D transform (xyw), Matrix3 for 3D transform (xyz) * Migrate graphics package to Arc 3D * Add explicit camera distance * Add context range to LayoutCache * Add draw ShapedText, add register method to FontFamily * Add ShapedText and TextShaper for drawing text, make drawText deprecated * Rework LayoutPiece, optimize cluster work, now it won't do texture work * Add FontFamily aliases * Moving low-level text layout to graphics.text package * Fix MessageQueue parkNanos time unit * Don't use perspective if View has no 3D transform * Add WindowGroup for toasts and popups * Add context to Toast * Add MpmcArrayQueue * Optimize view matrix composition * Rework threading system * Add ProgressBar and SeekBar * Add Locale alias for FontFamily * Add ScaleDrawable * Change ScrollView default scrollbar * Fix bitmap getPixelARGB on BIG ENDIAN machine * Rework ShapeDrawable, remove old Shape classes * Set long press timeout to 1000ms by default * Add LinkMovementMethod * Update BinaryIO * Update ListView * Update Pool and Pools * Update Paint methods * Add ViewPager module * Rework drawLine method with SDF * Add drawPie drawMesh canvas method * Add GIF image decoder * Add more Bitmap formats and image decode methods * Merge Arc 3D graphics engine * Add framework Nullable/NonNull annotations * Allow Bitmap's pixels to be shared * Add ColorSpace implementation * Update Matrix and MathUtil * Optimize for styled text, make text style serializable * Add complex value and display metrics * Add linked structure and custom data class for DataSet * Add property name for Property * Fix distance-to-edge anti-aliasing is gamma correct * Adjust analytic anti-aliasing to screen-space * Improve font collection itemization * Update shaders to a modern version * Use indexed rendering for glyph meshes * Add sharpen textures for all shaders * Always use premultiplied alpha for builtin renderer * Compact font atlas generation * Other small updates... #### Arc 3D Graphics Engine 3.8.0 * Add experimental instanced rendering * Optimize text rendering * Always use buffer orphaning for OpenGL * Add backend render target wrapping * Add submit method for BufferPool * Add IndexMeshPool * Move some context states out of GLCommandBuffer * Add RingBuffer * Add some Vulkan backend classes * Fix BufferAllocPool * Fix OpsRenderPass buffer pointers * Update VaryingHandler and UniformHandler layout qualifier * Add compatibility for base instance support * Add GLUniformBuffer and buffer upload * Add FilterMode, MipmapMode and AnisotropicFiltering for Paint * Add async pipeline state cache (thread safe) * Add separate objects from graphics package * Add CustomDrawable for handling unmanaged draw * Fix Buffer unlock method * Fix BufferAlloc pointers * Add RoundRectGeoProc * Add Buffer creation method to Engine * Add DrawOp and MeshDrawOp * Add OpListTask * Replace GLPipeline with separate GLProgram and GLVertexArray * Add GLOpsRenderPass * Add GLUniformDataManager * Support base offset for GLVertexArray in OpenGL 3.3 * Fix Surface hierarchy * Use MSAA resolve instead of MS texture sampler * Add compatibility methods for creating render target objects * Add close() for LazyCallback proxies * Add GL_RG for GrayAlpha surface usage * Add OpenGL 3.3 compatible shaders * Add mutable texture allocation methods * Add swizzle on texture binding * Use separate min/mag filter for SamplerState * Optimize surface canvas methods * Optimize font atlas generation * Change default font atlas size to 4 chunks (1024x1024) * Change number of font atlases from multiple to single * Add efficient rectangle packing algorithms #### Markdown 3.8.0 * Add Code and CodeBlock * Initial basic Markdown support #### View Pager 3.8.0 * Add linear pager indicator * Initial update