Modern UI
Современный фреймворк для десктопных графических приложений и низкоуровневый 3D-графический движок
- Загрузчики
- FabricNeoForgeForgeQuilt
- Скачиваний на Modrinth
- 23,2 млн
- Подписчиков на Modrinth
- 626
- версий
- 106
- Обновлён
- 14 июня 202614 июн.
- Опубликован
- в 2023
Коротко о моде
Ставится только в игру; на сервер ставить не нужно

Modern UI от Icyllis Milica
Описание:
Modern UI (от Icyllis Milica) — это фреймворк для десктопных приложений, предназначенный для разработки автономного ПО для 2D- и 3D-рендеринга. Он использует современные графические 3D-API и технологии для обеспечения рендеринга в реальном времени с высокой производительностью. Вдобавок ко всему, Modern UI улучшает и оптимизирует набор функций, используемых Google Android, а также собственный текстовый движок с поддержкой интернационализации.
Modern UI для Minecraft — это мод для Minecraft, основанный на Modern UI Core Framework и Modern UI Core Extensions. Он предоставляет загрузочную программу Modern UI в среде Minecraft и API для моддинга на базе Forge/Fabric, позволяя создавать мощные графические интерфейсы в Minecraft.
Для клиента нажмите Ctrl+K или ⌘+K (по умолчанию), чтобы открыть экран Action Center для настройки Modern UI. (Учтите, что экран Preferences можно пролистывать для настройки шрифтов)
Этот мод также включает мощный движок разметки текста и систему рендеринга текста, разработанные для Minecraft. Этот движок предоставляет подходящие методы для обработки текста Unicode и делает текст более читаемым в любом масштабе, в 2D/3D. Подробнее:
- Предпросмотр и перезагрузка шрифтов TrueType/OpenType в реальном времени
- Улучшенная реализация резервных шрифтов
- Сглаживание текста и хинтинг шрифтов FreeType
- Использование улучшенного SDF-рендеринга текста в 2D/3D (а также пакетный рендеринг)
- Вычисление точного размера шрифта в пространстве устройства для нативного рендеринга глифов
- Использование Google Noto Color Emoji и поддержка всех эмодзи Unicode 15.1 (12 сентября 2023)
- Настраиваемый эвристический алгоритм двунаправленного текста
- Настраиваемая тень текста и исходный размер шрифта
- Разрывы строк Unicode и CSS line-break & word-break
- Быстрое, точное и асинхронное вычисление разметки текста Unicode
- Более быстрый и экономичный по памяти алгоритм упаковки прямоугольников для глифов
- Использование настоящей полутоновой текстуры (1 байт на пиксель, тогда как в Minecraft — 4 бита на пиксель)
- Совместимость с OptiFine, Sodium (Rubidium), Iris (Oculus) и многими модами
- Совместимость с JSON-определением шрифтов Minecraft (растровые шрифты, TTF-шрифты)
Кроме того, этот мод предоставляет множество утилит, улучшающих производительность игры и игровой опыт. На данный момент у нас есть:
- Изменение цвета фона экрана
- Размытие по Гауссу для фонового изображения экрана
- Анимация появления фона экрана
- Больше режимов окна: Fullscreen (без рамки), Maximized (без рамки)
- Ограничение частоты кадров и затухание общей громкости при неактивном (потерявшем фокус) и свёрнутом окне
- Пауза одиночной игры при открытом инвентаре
- Изменение опции масштаба GUI на слайдер с подсказкой
- Воспроизведение звука "Ding" при загрузке Minecraft и достижении главного меню
- Включение плавной прокрутки в списках выбора Vanilla и панели прокрутки Forge
- Нажатие "C" для приближения, как в OptiFine
- Отмена/Повтор (Ctrl+Z/Ctrl+Y) и итератор графем/слов Unicode для всех текстовых полей
- Воспроизведение локальной музыки с возможностью перемотки и просмотра спектра
- Поддержка коротких кодов эмодзи Discord/Slack/GitHub/IamCal/JoyPixels в чате
Стильные всплывающие подсказки
- Выбор скруглённой или обычной рамки (с эффектом тени)
- Добавление разрыва заголовка и управление межстрочным интервалом заголовка
- Автоматический перенос строк и автоматическая вертикальная прокрутка при выходе за экран
- Центрирование строки заголовка, поддержка направления раскладки RTL
- Точное позиционирование подсказки по пиксельной сетке (плавное движение)
- Изменение цвета фона и цвета рамки (с градиентом и анимацией)
Основные возможности:
- Библиотека 2D-графики с поддержкой множества графических API
- Промежуточное представление и AST для шейдерных языков
- Символьная функция расстояния и рендеринг векторной графики
- Эффекты постобработки изображений
- Быстрые вычисления матриц и векторов
- Конвертация форматов изображений
- Фреймворк анимации и переходов
- Цикл событий и многопоточный фреймворк
- Движок формирования текста и сложной разметки текста
- MVVM и управление жизненным циклом
- Автоматическая раскладка UI для RTL (справа налево)
- Поддержка рендеринга Markdown (CommonMark)
Современный текстовый движок для Minecraft:
- Поддержка цветных эмодзи, используется Google Noto Color Emoji 15.1, на основе списка эмодзи Unicode 15.1;
- Поддержка коротких кодов эмодзи в чате, например :rofl: для «катаюсь по полу от смеха», поддержка коротких кодов Discord и Slack;
- Можно использовать шрифты TTF или OTF, настраивать базовый размер шрифта, задавать смещение базовой линии и выбирать, отбрасывать ли тень текста;
- Масштабируемая векторная графика, автоматическое переключение уровня разрешения (до 96px), нативный (не синтетический) рендеринг жирного и курсивного начертания;
- Поддержка рендеринга текста на основе distance field в 3D-мире, но с заострением атласа шрифтов в 2D GUI; это улучшает прежнюю возможность: *Плавный рендеринг всех символов при любом масштабе (например, когда вы находитесь далеко от таблички или при очень мелком тексте в GUI)
- Поддержка многослойного текста, совместная компоновка нескольких абзацев, потоковый алгоритм компоновки и быстрый кэш компоновки;
- Поддержка быстрой замены цифр, высокоточная компоновка и выравнивание, плавная отрисовка быстро меняющихся цифр (фиксированная ширина);
- Поддержка mip-mapping, сглаживания, линейной выборки и суперсэмплингового сглаживания (SSAA);
- Более качественная и эффективная компоновка абзацев BiDi-текста (например, арабского, идиша); использование заострённых атласов шрифтов;
- Настраиваемый эвристический алгоритм BiDi-текста для более точного управления направлением текста; поддержка исправления некорректных суррогатных пар;
- Используется HarfBuzz text shaping, поддержка рендеринга комбинируемых символов, таких как тайский, деванагари, бенгальский и тамильский;
- Поддержка разрыва графемных кластеров, поддержка алгоритма переноса строк Unicode;
- Поддержка контекстно-зависимого и локального разрыва слов и строк;
- Поддержка пиксельного рендеринга шрифтов, поддержка фиксированного уровня разрешения, поддержка выравнивания по пикселям;
- Поддержка замены битмапов, плавный рендеринг быстро меняющихся чисел, поддержка рендеринга эмодзи;
- Оптимизация алгоритма компоновки, повышение вашего FPS примерно на 10% при отрисовке текста в GUI
- Использование оттенков серого для хранения текстуры, снижение потребления памяти GPU
- Снижение ненужного потребления RAM и значительное сокращение создания объектов
Настройка шрифтов
Нажмите Ctrl+K или ⌘+K (по умолчанию), чтобы открыть Action Center, перейдите в Preferences, пролистайте экран на вторую страницу, и вы увидите настройки шрифтов.
- Preferred font family — это наиболее желаемое семейство шрифтов. Это может быть либо системный шрифт, либо файл (коллекция) TrueType/OpenType.
- Fallback font families используются, когда предпочитаемое семейство шрифтов недоступно.
Modern Text Engine:
Modern UI следует JSON-определению шрифтов Minecraft, игнорируются только типы провайдеров глифов 'legacy_unicode' и 'unihex'. Упомянутые выше семейства шрифтов Modern UI будут служить резервными семействами шрифтов для шрифтов Minecraft. Default Font Behavior (в Preferences > Text Layout) даёт вам возможность удалить некоторые провайдеры глифов из стандартного шрифта Minecraft (minecraft:default). Чтобы не использовать ванильные ASCII-шрифты, просто установите для него значение Keep Other. Учтите, что эта опция действительна только если вы не включили Force Unicode Font. Если вы хотите использовать ванильный Unicode-шрифт, просто скачайте OTF-версию GNU Unifont.
Дополнительные возможности для Minecraft:
- Поддержка настройки оконного режима, например полноэкранный без рамки, оконный без рамки;
- Анимация появления фона экрана GUI и эффект размытия двойной гауссовой свёрткой, настраиваемый цвет градиента фона;
- Плавный стиль всплывающих подсказок со скруглёнными углами, поддержка RTL-раскладки, настраиваемый цвет фона и границы;
- Воспроизведение звукового эффекта «динь» при загрузке игры;
- Поддержка паузы игры при открытии инвентаря;
- Новый алгоритм масштаба GUI и виджет-слайдер масштаба GUI (не ограничен чётными числами, совместим с OptiFine);
- Добавление плавной прокрутки для ванильных и forge панелей прокрутки;
- Асинхронный сетевой обработчик; автоматическое отключение сервера;
- Все функции настраиваются в конфигах или на экране Action Center (горячая клавиша по умолчанию Ctrl+K)
Modern UI for Fabric лишился некоторых функций (по сравнению с версией для Forge):
- Зум как в OptiFine, скрытие прицела в GUI
- Вывод больше отладочной информации, расширение отчёта о краше
Сравнение с техниками рендеринга текста Caxton
Мод Caxton известен своим рендерингом текста через MSDF, вы можете выбрать между Caxton и Modern Text Engine.
Сходства:
- Оба используют шейпинг текста HarfBuzz
- Оба поддерживают обработку текста Unicode
- Оба поддерживают разрывы строк Unicode и разбиение на графемные кластеры
- Оба совместимы с Iris в режиме растрового рендеринга
- У обоих эффективный алгоритм упаковки прямоугольников, даже лучше, чем у Mojang
Различия:
- Caxton использует более новый HarfBuzz, тогда как мы используем более старый (входящий в JDK 17, он обновлён в JDK 21)
- Caxton использует многоканальный SDF и рендерит более чёткий текст при увеличении, тогда как у нас он получается слишком сглаженным
- Мы совместимы с OptiFine, а Caxton — нет
- Мы поддерживаем цветные эмодзи, а Caxton — нет
- Мы поддерживаем хинтинг шрифтов FreeType, а Caxton никогда его не поддерживал; хинтинг шрифтов помогает на мониторах с низким разрешением
- Мы поддерживаем идеальную выборку нативного изображения глифа в экранном пространстве, это идеально для 2D-рендеринга
- Мы поддерживаем рендеринг текста через одноканальный SDF без дополнительных ресурсов GPU, мы всегда используем текстуры 1bpp
- У нас есть умный метод выборки SDF для уменьшения текста, а у Caxton — нет
- Не нужно ждать генерации MSDF-текстуры, вы можете переключать шрифты прямо в игре одним кликом
- Мы поддерживаем различные эвристики направления текста и стратегии переноса строк
- Мы не используем дополнительные нативные библиотеки, поэтому Modern UI работает на macOS
- У нас немного выше производительность компоновки, чем у Caxton, и мы используем меньше RAM
Интеграция с модами и совместимость:
Совместимо (стоит обратить внимание):
OptiFine, Sodium, Iris, Create, AoA3
Если активны шейдеры, Use Modern Text Shaders in 3D автоматически отключается, это приведёт к тому, что контур светящегося текста станет невидимым.
Моды с похожими функциями заменяются:
Blur (вер. 1.15 ~ 1.21.8; причина: полное покрытие функционала, лучшая оптимизация)
- Мод Blur заявляет, что использует гауссово размытие, но я обнаружил, что на самом деле он использует двухпроходное box blur. Тогда как Modern UI даёт вам настоящее однопроходное гауссово размытие, которое лучше, чем у мода Blur.
- Controlling (вер. 1.15; причина: другой способ реализации)
- TipTheScales (вер. 1.15 ~ 1.21.8; причина: другой способ реализации)
- Inventory Pause (вер. 1.18 ~ 1.21.1; причина: другой способ реализации)
- Emojiful (вер. 1.18 ~ 1.21.1; причина: мы поддерживаем рендеринг цветных эмодзи с 3.5.0; к тому же у Emojiful реально плохой код, который ломает вашу игру повсюду; вы можете столкнуться с зависаниями игры, высоким потреблением VRAM, глюками рендеринга и множеством проблем с производительностью и совместимостью модов)
- Borderless Window (вер. 1.18 ~ 1.21.4; причина: другой способ реализации)
- Ding (вер. 1.18 ~ 1.21.4; причина: другой способ реализации)
- SmoothScrollingEverywhere (вер. 1.18 ~ 1.19; причина: другой способ реализации)
- FPS Reducer (вер. 1.18 ~ 1.21.8; причина: другой способ реализации)
Конфликты и их решение:
- Emojiful (вер. 1.16 ~ 1.21.1; не рекомендуется использовать Emojiful; если вам всё же нужно, отключите движок текста Modern UI через экран настроек или bootstrap-свойства)
- Legendary Tooltips (вер. 1.16 ~ 1.21.4; решение: отключите тултипы Modern UI через экран настроек)
- FeyTweaks (вер. 1.18 ~ 1.21.1; решение: отключите TextRendererMixin в конфиге миксинов FeyTweaks)
- SmoothScrollingEverywhere (вер. 1.18 ~ 1.19; решение: отключите плавную прокрутку Modern UI через экран настроек)
- Caxton (вер. 1.18 ~ 1.21.8; решение: отключите движок текста Modern UI через экран настроек или bootstrap-свойства)
- ImmediatelyFast (вер. 1.18 ~ 1.21.8; решение: для 1.18 ~ 1.21.4: отключите в ImmediatelyFast параметры hud_batching, font_atlas_resizing и fast_text_lookup; иначе вы можете столкнуться со случайными крашами игры; для 1.21.6 ~ 1.21.8: отключите в ImmediatelyFast параметр avoid_redundant_framebuffer_switching)
- Untranslated Items (вер. 1.18 ~ 1.21.4; решение: отключите кэш текстовых компонентов Modern UI через экран настроек)
Поддерживаемые версии MC:
- Активно поддерживаются: 1.21.8, 1.21.7, 1.21.6, 1.21.1, 1.21, 1.20.1, 1.20
- Скоро перестанут поддерживаться: 1.21.4
- Больше не поддерживаются: 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
Все описания на этой странице относятся к Minecraft 1.20.1 и выше. В более старых версиях некоторые функции могут отсутствовать.
Системные требования (такие же, как у ванильного Minecraft)
Некоторые не хотят использовать Modern UI, потому что считают, что у Modern UI высокие системные требования. На самом деле, если вы можете играть в ванильный Minecraft, вы точно сможете играть и с Modern UI. Если только вы не забыли обновить драйвер видеокарты.
- ОС: Windows 8.1+, Linux с X11 или Wayland, macOS
- Архитектура: x64 или arm64
- Видеокарта: GeForce 210 или лучше
- Драйвер видеокарты: OpenGL 3.3+ или Vulkan 1.1+, чем выше, тем лучше
- Java: Java 17+, чем выше, тем лучше
FAQ:
В: В чём разница между Default Font Behavior и Force Unicode Font?
О: Во-первых, Modern UI всегда перенаправляет Unicode-шрифт на стандартный шрифт Modern UI. Default Font Behavior — это KEEP ALL в 1.19+, то есть стандартный шрифт Minecraft используется для ASCII-символов. KEEP OTHER означает, что стандартный шрифт Minecraft больше не используется, но дополнительные шрифты, например, в некоторых картах с мини-играми, всё ещё доступны. В этом отличие от Force Unicode Font (IGNORE ALL).
В: У Modern UI высокие накладные расходы? Modern UI снизит производительность приложения?
О: Нет, Modern UI не оказывает значительного влияния на использование CPU, GPU, RAM и VRAM. Это потому, что сам Modern UI хорошо оптимизирован, но при этом Modern UI предоставляет кучу новых функций и эффектов. Фреймворк Modern UI, как известно, эффективнее приложений на базе Chromium. Для слабых ПК эффект размытия экрана может убить производительность, потому что ванильный Minecraft не позволяет генерировать мипмапы на render targets. Даже так, эффект размытия, предоставляемый Modern UI, намного быстрее, чем у мода под названием 'Blur'.
В: Как отключить все изменения ванилы, я не хочу эти функции.
О: Только алгоритм масштаба GUI и некоторый низкоуровневый код нельзя настроить, любые другие функции можно отключить в экране Action Center (по умолчанию горячая клавиша Ctrl+K) или в файлах конфигурации (gameDir/config/ModernUI/), потому что Modern UI по сути является фреймворком.
В: Этот мод только для клиента? Нужно ли устанавливать его на сервер?
О: Начиная с MC 1.19.2, больше нет причин устанавливать этот мод на сервер. Все серверные функции устарели и реализованы в Forge API и Fabric API.
В: Как начать разрабатывать свой мод на основе Modern UI?
О: Этот проект всё ещё на ранней стадии, спецификация ещё пишется. Вы можете посмотреть JavaDoc. Примеры включают сам Modern UI (Action Center) и Flux Networks. Если у вас есть вопросы, присоединяйтесь к нашему Discord-серверу.
Проблемы: Все отчёты о проблемах следует отправлять в GitHub issue tracker.
Присоединяйтесь к моему Discord-серверу для обсуждений и предложений.
Частые вопросы
Как установить Modern UI?
Установите Fabric под свою версию Minecraft, скачайте Modern UI под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Modern UI?
У Modern UI есть сборки для Minecraft 1.20.4, 1.20.6–1.21.4, 1.21.6–1.21.8, 26.1–26.1.2 ….
Нужен ли Modern UI на сервере?
Ставится только в игру; на сервер ставить не нужно