Omni Ocular
Внимание: ознакомьтесь с журналом изменений перед использованием этой модификации с Java19.
Модификация находится в активной разработке.
Обзор
Omni Ocular представляет собой расширенный инструмент для отображения пользовательских данных NBT через интерфейс Waila HUD. Полезен для опытных пользователей, ценящих точные показатели, а также для тестирования и отладки модов.
Этот проект является развитием концепции WailaNBT, предлагая полностью переработанный код и значительно расширенный функционал.
Установка
Необходимые компоненты
Для работы требуются моды Not Enough Items и Waila на стороне как клиента, так и сервера. Просто разместите JAR-файлы в папке mods.
Для удобства работы с данными NBT рекомендуется установить In-Game NBTEdit, который поможет изучить структуру NBT-данных и оптимизировать настройки отображения.
Галерея
Начните работу сразу после установки - дополнительные действия не требуются.
Настройка конфигурации
Omni Ocular использует XML-файлы для настройки профилей. Их можно найти в папке minecraft/config/OmniOcular после первого запуска.
Команды в игре
-
/oor(Omni Ocular Reload) - перезагружает все XML-конфигурации из указанной папки. Если команда используется на сервере, новые настройки автоматически передаются всем онлайн-игрокам. -
/ooe(Omni Ocular Entity) - показывает тип сущности, на которую направлен курсор. -
/oon(Omni Ocular Name) - отображает полное название предмета в руке.
Создание конфигурационного файла
Файлы конфигурации используют XML формат с встроенным JavaScript кодом и должны соответствовать стандартам этих технологий.
Рекомендуется называть файлы по ID мода, для которого предназначена конфигурация. Пример настройки:
<!--Автор: EpixZhang-->
<!--Дата: 2015/1/1-->
<!--Версия: 1.0-->
<oo>
<init>
function tick2second(n){return n/20}
</init>
<tileentity id="Furnace">
<line displayname="Время горения">
return tick2second(nbt['BurnTime'])
</line>
</tileentity>
<entity id="Sheep">
<line displayname="До следующей любви">
tick2second(nbt['InLove'])
</line>
</entity>
<tooltip id="minecraft:skull">
<line displayname="Владелец">
return nbt['SkullOwner']
</line>
</tooltip>
</oo>
Информационный блок:
<!--Автор: EpixZhang-->
<!--Дата: 2015/1/1-->
<!--Версия: 1.0-->
Эта секция не обязательна, но полезна для отслеживания информации о версии и авторе.
Основная структура:
Все рабочие элементы должны находиться внутри тегов <oo></oo>.
Блоки Tile Entity:
Определение информации, отображаемой для блоков с дополнительными данными:
<tileentity id="Furnace"></tileentity>
Атрибут "id" определяет конкретный тип блока. Поддерживаются регулярные выражения для группового выбора.
Элементы Entity:
Настройка отображения данных для живых существ:
<entity id="Sheep"></entity>
Подсказки для предметов:
Добавление информации в подсказки при наведении курсора:
<tooltip id="minecraft:skull"></tooltip>
Блок инициализации:
Здесь размещаются часто используемые функции и переменные:
<init></init>
Код выполняется при загрузке конфигурации.
Строки отображения:
Формат определения индивидуальных строк данных:
<line displayname="Название">
JavaScript код
</line>
JavaScript код должен возвращать значение для отображения. По умолчанию используется формат: название (белым) + табуляция + значение (серым). Для изменения всего цвета строки оставьте displayname пустым.
Специальные символы форматирования
Доступны константы для удобного использования кодов форматирования:
BLACK, DBLUE, DGREEN, DAQUA, DRED, DPURPLE, GOLD, GRAY, DGRAY, BLUE, GREEN, AQUA, RED, LPURPLE, YELLOW, WHITE, OBF, BOLD, STRIKE, UNDER, ITALIC, RESET
TAB - символ табуляции ALIGNRIGHT, ALIGNCENTER - выравнивание текста HEART, HHEART, EHEART - символы сердец
Встроенные функции JavaScript
translate() - возвращает локализованный текст name() - показывает имя объекта fluidName() - локализованное название жидкости holding() - ID предмета в руке armor() - ID экипированной брони isInHotbar() - проверка наличия предмета в панели быстрого доступа isInInv() - проверка наличия предмета во всем инвентаре
Практическое применение
Представим, что вы хотите отслеживать состояние печи в реальном времени:
<oo>
<tileentity id="Furnace">
<line displayname="Прогресс готовки">
return nbt['CookTime']
</line>
</tileentity>
</oo>
Для идентификации типов объектов используйте команды /ooe (для сущностей) и /oon (для предметов).
Работа с конфигурациями
Клиентская часть
Загружаются все XML-файлы из папки minecraft/config/OmniOcular. Основываясь на установленных модах, автоматически создаются предварительные настройки, которые не перезаписывают существующие файлы.
Серверная часть
Файлы конфигурации работают аналогично клиентской версии, но предварительные настройки не создаются автоматически. В многопользовательской игре серверные настройки имеют приоритет над клиентскими.
Планы по развитию
- Поддержка отображения данных для предметов на земле
- Возможность скрытия информации по условным командам (например, нажатию клавиш)