Перейти к содержимому

HtmlCraft API

HTML/CSS-движок рендеринга, который предоставляет возможности построения веб-интерфейсов для GUI Minecraft.

FabricForge
Загрузчики
FabricForge
Скачиваний на Modrinth
211
Подписчиков на Modrinth
2
версии
4
Обновлён
14 августа 202614 авг.
Опубликован
в 2026
Это библиотека — она нужна другим модам и сама ничего не добавляет в игру

Коротко о моде

Библиотека — нужна другим модам
Работает на Fabric и Forge
Для Minecraft 1.20.1, 26.1.2–26.2
Ставится только в игру; на сервер ставить не нужно
Последняя версия — 1.0.0-26.1.2fabric от 14 августа 2026
Лицензия LGPL-2.1-only — бесплатно
Где нужен
В игреобязателенНа серверене нужен

Ставится только в игру; на сервер ставить не нужно

Версии игры1.20.1, 26.1.2–26.2
Описание переведено автоматическиПоказать оригинал (EN)

HtmlCraft API

Движок рендеринга HTML/CSS GUI для Minecraft 1.20.1 Forge

Введение

HtmlCraft API — это лёгкий движок рендеринга HTML/CSS, который привносит технологии веб-фронтенда в разработку GUI для Minecraft. Вместо изучения сложного Minecraft GUI API (GuiGraphics, Widget, AbstractContainerScreen и т.д.) разработчики могут создавать красивые игровые интерфейсы, просто написав HTML + CSS.

Возможности

ВозможностьОписание
Парсинг HTMLРаспространённые HTML-теги, атрибуты, вложенные структуры, HTML-сущности (именованные/десятичные/шестнадцатеричные)
Стилизация CSSСелекторы классов, селекторы ID, селекторы тегов, инлайн-стили
Движок компоновкиБлочная компоновка, Flexbox, CSS Grid
Визуальные эффектыЛинейные градиенты, скругление углов, имитация теней, прозрачность
ВзаимодействиеСобытия клика по кнопкам, прокрутка колёсиком мыши, проверка попадания
ШаблонизаторПодстановка {{переменная}}, контекст привязки данных
ПотокобезопасностьConcurrentHashMap, CopyOnWriteArrayList

Требования

ЗависимостьВерсия
Minecraft1.20.1
Forge47.x
Java17

Установка

Как зависимость мода

Поместите htmlcraftapi-1.0.0-1.20.1forge.jar в папку mods.

Как зависимость для разработки

Добавьте в ваш build.gradle:

dependencies {
    implementation files('libs/htmlcraftapi-1.0.0-1.20.1forge.jar')
}

Быстрый старт

1. Создание экрана через Builder

import com.htmlcraft.api.HtmlRendererAPI;
import com.htmlcraft.api.binding.DataContext;
import com.htmlcraft.api.screen.HtmlScreen;
import net.minecraft.network.chat.Component;

DataContext data = new DataContext(); data.set("title", "My Interface"); data.set("content", "Hello, Minecraft!");

HtmlScreen screen = HtmlRendererAPI.createScreen(Component.literal("My Screen")) .html("
" + "

{{title}}

" + "

{{content}}

" + " " + "
") .css(".container { padding: 20px; background: #1a1a2e; border-radius: 10px; }" + "h1 { color: #e94560; font-size: 16px; }" + "p { color: #ffffff; }" + "#btn-ok { background: #0f3460; color: #ffffff; border-radius: 6px; padding: 8px; }") .data(data) .onClick(event -> { if ("btn-ok".equals(event.element().getId())) { System.out.println("Player clicked the OK button"); } }) .build();

Minecraft.getInstance().setScreen(screen);

### 2. Наследование HtmlScreen для кастомных экранов
```java
public class MyScreen extends HtmlScreen {

    public MyScreen() {
        super(Component.literal("My Screen"));
    }

    @Override
    protected String getHtml() {
        return "<div class='root'>Custom content</div>";
    }

    @Override
    protected String getCss() {
        return ".root { padding: 16px; background: #2d2d44; }";
    }
}

Основной API

HtmlRendererAPI

Единая точка входа, предоставляющая паттерн Builder для создания HTML-экранов.

МетодОписание
createScreen(Component title)Создать builder экрана

HtmlRendererAPI.Builder

Цепочный builder для настройки HTML, CSS, данных и событий.

МетодОписание
html(String html)Задать HTML-содержимое
css(String css)Задать таблицу стилей CSS
data(DataContext context)Задать контекст данных шаблона
`onClick(Consumer handler)`Задать обработчик события клика
build()Собрать экземпляр HtmlScreen

HtmlScreen

Абстрактный базовый класс экрана HTML-рендеринга, наследует Minecraft Screen.

МетодОписание
getHtml()Абстрактный метод, подкласс предоставляет HTML-содержимое
getCss()Переопределите для предоставления стилей CSS
`setClickHandler(Consumer)`Задать обработчик события клика
setPreferredSize(int w, int h)Задать размер области содержимого (центрированная компоновка)
rebuild()Пересобрать конвейер рендеринга (обновление после изменения данных)
getRootLayout()Получить корневой узел компоновки
getPipeline()Получить конвейер рендеринга

HtmlScreen.ClickEvent

Событие клика, содержащее кликнутый элемент и координаты.

МетодОписание
element()Кликнутый DOM-элемент
button()Кнопка мыши (0=левая, 1=правая, 2=средняя)
x() / y()Координаты клика

DataContext

Контекст переменных шаблона, потокобезопасный.

МетодОписание
set(String key, Object value)Задать переменную
get(String key)Получить переменную
getString(String key)Получить строковое значение
has(String key)Проверить существование переменной
clear()Очистить все переменные

HtmlElement

Узел DOM-элемента.

МетодОписание
tagName()Получить имя тега
getId()Получить атрибут id
hasClass(String)Проверить наличие класса
getAttribute(String)Получить значение атрибута
children()Получить дочерние узлы

Поддерживаемые свойства CSS

Компоновка

СвойствоЗначения
displayblock / flex / inline / grid / none
flex-directionrow / column
justify-contentflex-start / center / flex-end / space-between / space-around
align-itemsflex-start / center / flex-end / stretch
gapЗначение в пикселях
grid-template-columnsrepeat(N, 1fr)

Блочная модель

СвойствоОписание
width / heightЗначение в пикселях, auto
paddingЗначение в пикселях
marginЗначение в пикселях
border-widthЗначение в пикселях

Визуальные эффекты

СвойствоЗначения
background#RRGGBB / #AARRGGBB / #RRGGBBAA
background (градиент)linear-gradient(to bottom, #color1, #color2)
colorЦвет текста
border-colorЦвет границы
border-radiusРадиус скругления углов в пикселях
box-shadowoffsetX offsetY blur spread #color
opacity0.0 - 1.0

Текст

СвойствоЗначения
font-sizeЗначение в пикселях
text-alignleft / center / right

Позиционирование и переполнение

СвойствоЗначения
positionstatic / relative / absolute / fixed
overflow-x / overflow-yvisible / hidden / scroll / auto
z-indexЦелое число

Шаблонизатор

Используйте плейсхолдеры {{variable}} в HTML. Они заменяются методом TemplateEngine.render() значениями из DataContext во время init().

DataContext data = new DataContext();
data.set("player_name", "Steve");
data.set("level", 30);

// HTML template
String html = "<div>Player: {{player_name}} | Level: {{level}}</div>";

Специальные символы автоматически экранируются в HTML-сущности для предотвращения инъекций.

Конвейер рендеринга

HTML String
    ↓
HtmlParser (parse to DOM tree)
    ↓
StyleSheet + CssParser (load CSS rules)
    ↓
StyleCalculator (compute final styles per element)
    ↓
LayoutEngine (perform layout, generate LayoutNode tree)
    ↓
RenderPipeline (generate and execute render commands)
    ↓
GuiGraphics (draw to Minecraft screen)

Структура пакетов

com.htmlcraft.api
├── HtmlCraftAPI.java          // Mod main class
├── HtmlRendererAPI.java       // Public entry point + Builder
├── core/
│   ├── HtmlDocument.java      // HTML document
│   ├── HtmlElement.java       // DOM element node
│   ├── HtmlNode.java          // DOM node interface
│   └── HtmlText.java          // DOM text node
├── parser/
│   ├── HtmlParser.java        // HTML parser
│   └── CssParser.java         // CSS parser
├── style/
│   ├── StyleSheet.java        // CSS stylesheet
│   ├── StyleCalculator.java   // Style calculator
│   └── ComputedStyle.java     // Computed style
├── layout/
│   ├── LayoutEngine.java      // Layout engine
│   └── LayoutNode.java        // Layout node
├── render/
│   ├── RenderPipeline.java    // Render pipeline
│   ├── RenderContext.java     // Render context
│   ├── RenderCommand.java     // Render command interface
│   └── commands/              // Concrete render commands
│       ├── FillRectCommand.java
│       ├── DrawTextCommand.java
│       ├── DrawBorderCommand.java
│       └── BlitTextureCommand.java
├── binding/
│   ├── DataContext.java       // Data binding context
│   └── TemplateEngine.java    // Template engine
└── screen/
    └── HtmlScreen.java        // HTML rendering screen base class

События клика

Кликабельные элементы включают:

  • Теги `
  • Теги ``
  • Любой элемент с атрибутом id Клики вызывают колбэк ClickEvent. Используйте event.element().getId(), чтобы определить, по какому элементу кликнули.

Поддержка прокрутки

Элементы с overflow-y: scroll или overflow-y: auto автоматически реагируют на прокрутку колёсиком мыши. Каждый шаг прокрутки сдвигает на 20 пикселей.

Лицензия

LGPL-2.1

Автор

Yifei

Частые вопросы

Как установить HtmlCraft API?

Установите Fabric под свою версию Minecraft, скачайте HtmlCraft API под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть HtmlCraft API?

У HtmlCraft API есть сборки для Minecraft 1.20.1, 26.1.2–26.2.

Нужен ли HtmlCraft API на сервере?

Ставится только в игру; на сервер ставить не нужно

Лицензия и источник
GNU Lesser General Public License v2.1 onlyможно использовать и распространять; изменённые версии — под той же лицензией и с исходным кодом
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее