MC Toolkit

Руководства / Строительство и ресурсы

Скрытие и изменение размера элементов HUD с помощью ресурспака

Хотбар, прицел и полоса опыта — всё это хранится в одном атласе текстур. Вот как сделать часть его невидимой, что нельзя переместить и какой трюк со шрифтом позволяет создавать собственный текст HUD.

В игре нет настройки, которая скрывает хотбар. Зато есть текстура — и если сделать её часть прозрачной, она исчезнет визуально, а всё остальное продолжит работать.

Всё лежит в одной папке

assets/minecraft/textures/gui/sprites/hud/

В современных версиях старый атлас widgets.png разбит на отдельные спрайты: hotbar.png, crosshair.png, experience_bar_background.png, heart/full.png и так далее. Замените любой из них полностью прозрачным PNG тех же размеров — и он исчезнет.

Совпадение размеров важно для всего, что вы рисуете. По умолчанию спрайты растягиваются на всю ячейку, поэтому холст меньшего размера с видимым рисунком получится размазанным. Полностью прозрачный спрайт скрывается при любом размере — размазывать нечего.

Что можно и чего нельзя

Можно:

  • скрыть любой элемент, сделав его спрайт прозрачным
  • полностью переоформить всё — другие сердца, минималистичный прицел, тематический хотбар
  • изменить видимый размер, нарисовав содержимое мельче внутри холста того же размера

Нельзя:

  • переместить элемент. Позиции жёстко заданы в коде; данные — только графика.
  • скрыть ячейки хотбара отдельно от рамки — это один спрайт.
  • изменить поведение ячейки. Это только косметика, и предмет по-прежнему можно выбрать.

Последний пункт стоит проговорить прямо: скрытый хотбар — всё ещё хотбар. Это не ограничение инвентаря, и игрок по-прежнему может пользоваться ячейками.

Ловушка девятисегментных спрайтов

Некоторые спрайты GUI — девятисегментные (nine-sliced): углы фиксированы, края растягиваются. В HUD так устроен только фон полосы локатора; большинство кнопок и рамок в gui/sprites/ — тоже. Файл .mcmeta рядом с PNG задаёт границы:

{ "gui": { "scaling": { "type": "nine_slice", "width": 200, "height": 20,
  "border": { "left": 2, "top": 2, "right": 2, "bottom": 2 } } } }

Замените такой спрайт, не приложив соответствующий mcmeta, — и он растянется неправильно. Если сомневаетесь, скопируйте ванильный .mcmeta рядом со своим PNG.

Собственный текст HUD через шрифты

По-настоящему мощный трюк: опишите провайдер шрифта, глифами которого служат изображения, а затем выводите эти символы через /title или боссбар. Текст отрисуется вашей графикой.

assets/minecraft/font/default.json

Поместите файл в пространство имён minecraft — и ваши провайдеры сольются с ванильным шрифтом по умолчанию. Если оставить собственное пространство имён, каждый текстовый компонент, который его использует, должен указывать это явно, через "font":"my_pack:default".

{ "providers": [
  { "type": "bitmap", "file": "my_pack:font/icons.png", "ascent": 8, "height": 9,
    "chars": [""] }
] }

Используйте кодовые точки из области для приватного использования (начиная с ), чтобы ничего не конфликтовало с настоящим текстом. Тогда /title @a actionbar {"text":""} нарисует ваше изображение на панели действий.

Именно так серверы показывают собственные полосы здоровья, значки валюты и индикаторы прогресса без модов на клиенте — только ресурспаком.

Шрифты с отрицательным пространством

Задайте глиф с отрицательным advances — и сможете двигать курсор назад, накладывая изображения друг на друга. На этом приёме держатся серверные HUD, выглядящие как настоящие интерфейсы. Это кропотливо, и это единственный способ что-либо расположить.

Скрывайте и переоформляйте элементы HUD и создавайте провайдеры шрифтов с кодовыми точками, выделенными для вас в HUD Customizer & Font Pack Maker.

Настройка интерфейса и наборы шрифтов →

Другие руководства

Смотреть все →