Modern UI

Modern UI

674k Downloads

logo

Modern UI by Icyllis Milica

Description:

Generally, 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.

This project is an official version that extends Modern UI to Minecraft and Forge, it combines Modern UI with Minecraft and provides a number of additional features and modding APIs. Modern UI can create fancier GUIs than vanilla's with vector graphics, animations, text layout engine and multi-threading optimization, which is mainly used for other mods as a library. Additionally, by default, it provides some UI features some some utilities even for server.

For client, press Ctrl+K (by default) to open Action Center screen to configure Modern UI.

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

Modern Text Engine for Minecraft:

  • Support color Emoji, use Twemoji 14.0, based on Unicode 14.0 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;
  • 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

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)

Old Features: (1.x version)

  • Provide animation effects and smooth transitions.
  • Use shaders to draw rounded rectangle, circle, ring easily.
  • Reduced CPU computation and increased GPU performance.
  • GUI scale limit was removed and the algorithm was changed.

(Functions or contents that this mod adds to vanilla)

  • Cleaner sidebar in-game menu, blur world renderer, and hide crosshair.
  • Smooth scroll window for game settings / options / statistics.
  • Divide "items" statistics into items and blocks tab, and all stats can be updated in real time.
  • All slider options only apply changes when you stop dragging. (eg. reduced lag when changing render distance)
  • More intelligent keybinding setting, and more smart key conflicts detection.
  • Keybindings search function and filter all conflicts and locate to them.
  • Mouse cursor will be changed to I-beam shape when moved into a text field / text area.

Screenshots (2.0+):

compare sign text

Fps CompareArabic renderchinese 3x renderentity font renderHindi Render

Screenshots: (outdated 1.x version)

video settingresource packs settingblock statsitem statsexit popup

Mod Integration & Compatibility:

Compatible:

  • OptiFine (latest: OptiFine 1.19.2 HD U H9) (Remember to turn off Fast Render, it's auto disabled since 3.5.0)

Mods with similar functions are replaced:

  • Blur (ver: 1.15, 1.16; reason: full functional coverage, better optimization)
  • Controlling (ver: 1.15; reason: another way of implementation)
  • TipTheScales (ver:1.15, 1.16; reason: another way of implementation)
  • Inventory Pause (ver 1.18; reason: another way of implementation)
  • Emojiful (ver 1.18; reason: we support color emoji rendering since 3.5.0)

Conflict:

  • Emojiful (ver 1.16, 1.17, 1.18; solution: disable Modern UI text engine, via bootstrap file)
  • Legendary Tooltips (ver 1.16, 1.17, 1.18; solution: disable Modern UI tooltip, via config screen)

FAQ:

Q: How to disable all changes to vanilla, I don't want these features.

A: Only GUI scale algorithm is non-configurable, any other features can be disabled in Action Center screen (shortkey Ctrl+K by default), or config files (gameDir/config/ModernUI/).

Q: There's an error related to outdated Java versions/or my game crashed due to outdated Java versions (1.16).
A: Since 2.0, Java 1.8.0_201 is required, Java 11.0.9 or above is recommended.

Since 2.4.4, it will show a warning rather than crashing game.

Since 2.6.0, Java 11 or above is required. Since 3.0, Java 16 or above is required.

Whatever game launcher you are using you must ensure it use the Java Runtime Environment you updated rathen than the built-in one or auto-download one. You can get LibericaJDK.

Q: There's an error about graphics environment (unsupported OpenGL version)

A: Since 2.0, OpenGL 4.3 is required. Since 3.0, OpenGL 4.5 (or all its ARBs) is required.

OpenGL is a cross-platform graphics API which is used by Minecraft. Modern UI includes an OpenGL rendering pipeline based on OpenGL 4.5.

OpenGL graphics environment is prodived by your operating system, dedicated graphics card (video card) and graphics driver (video driver). If any of these requirements cannot be met, there will be an error. You need to make sure you have a dedicated graphics processor selected for Java applications and the latest graphics card drivers.

For macOS users, macOS stopped OpenGL support at version 4.1. You can try Mesa Zink over MoltenVK over Metal. Custom drivers is supported since Modern UI 3.4.7 (vanilla doesn't support it).

Since 3.5.0, all extensions (text engine, blur effect and so on) are backward compatible with OpenGL 3.3, but Modern UI core still requires OpenGL 4.5.

Q: Is this mod a client-only mod? Do I need to install it on the server?

A: Modern UI for Minecraft has many features. You should know that there are two interaction models. One is the local, and the other is the client/server. If any mod that is using Modern UI as a dependency for the client/server interaction model, then Modern UI is required on the server side. So Modern UI can be installed only on the client side or only on the server side, but generally needs to be installed on the both side. It depends on your needs.

There's a server version since 3.4.6, which you can find in additional files. This is a slim version of the universal version.

Since 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.


Q: Will there be a Fabric version or other versions?
A: Hardly. It's hard to maintain Fabric version since it's a lightweighted API. And you can't keep any other release versions compared to this official one on curseforge without my explicit permission.


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. If you have any questions, feel free to join our Discord server.


Q: Will there be a backport to 1.14.4 or older version?
A: No. They are obsolete. I will not provide maintenance and support for any outdated game versions.

Modpacks: Feel free to include this mod in any modpack as long as you don't distribute the mod jar files in the name of it. That is, add this mod to your modpack via CurseForge API instead of distributing files directly to other users.

Issues: All issue reports should go to GitHub Page.

Join my Discord Server for discussion and suggestions.