Files
ZoteCoreLoader/README-RU.md

15 KiB
Raw Permalink Blame History

Zote Core — Inner Core Loader

🇺🇸 English

Zote Core — серверное ядро, основанное на Inner Core для Minecraft: Bedrock Edition 1.16.201, созданное для уникального геймплея с модами, часто ассоциируемое с созданием собственных модовых серверов.

Основой серверного ядра послужил Nukkit-MOT, его можно легко обновить, заменив соответствующую библиотеку.

Zote Core

Установка

Поддерживается любая платформа, поддерживающая Java 17. Загрузите последний релиз серверного ядра, либо соберите репозиторий с помощью Gradle.

Запустите собранное ядро, открыв консоль в папке с ним:

java -jar ZoteCore-SNAPSHOT.jar -XX:MaxRAMPercentage=95.0

Behavior packs 1.16

Распакуйте пак в behavior_packs/<имя-пака>/ рядом с сервером: manifest.json должен находиться непосредственно в этой папке. Также загружаются паки из behavior_packs выбранного модпака, из модов и runtime-паки Inner Core. Исходные каталоги читаются без копирования и удаления; повторные пути и UUID загружаются один раз, с приоритетом зарегистрированных паков модов/модпака перед серверной папкой. После изменения пака перезапустите сервер.

Поддержка серверной части частичная:

  • Манифесты версий 1 и 2, вложенные папки, необязательный contents.json, UTF-8/BOM и комментарии JSON. Ошибка отдельного файла записывается в лог и не прерывает загрузку остальных.
  • Предметы форматов от 1.10 до 1.16.201, включая 1.16.100: собственный namespace, имя, размер стака, максимальная прочность, категория творческого инвентаря и базовая еда с питательностью и насыщением. Переопределение ванильных предметов не поддерживается. Визуальные компоненты обрабатывает клиент.
  • Рецепты minecraft:recipe_shaped и minecraft:recipe_shapeless для верстака, shapeless-рецепты камнереза, minecraft:recipe_furnace для обычной и плавильной печи, костра и костра душ. Поддерживаются строковые и объектные ссылки на предметы, data, count, wildcard data: -1/32767 во входных предметах и дополнительные результаты shaped-рецептов. Предметы всех паков регистрируются до рецептов.
  • Сущности форматов от 1.8 до 1.16.201: независимое состояние каждого моба, component_groups, события add/remove, sequence, взвешенный randomize, вложенные фильтры, таймеры и environment_sensor. Группы, переменные Molang, здоровье, экипировка и состояние контроллеров сохраняются в NBT. Поддерживаются вызов по строковому идентификатору и числовому ID яйца, яйца в творческом инвентаре, runtime_identifier и стабильные сетевые определения.
  • AI с приоритетами: выбор цели, ответ на урон, ближняя/дальняя атака, прогулки, плавание/полёт, избегание, паника, следование, приманивание, размножение и поворот головы. Ограниченный A* обходит препятствия в загруженных чанках; поиск пути не генерирует новые чанки. Это серверная реализация целей, а не точная копия алгоритмов Bedrock.
  • Жизненный цикл: дробные коллизии и масштаб, дыхание, горение, рост, приручение, лечение, взаимодействия, посадка пассажиров, экипировка, снаряды, взрывы, превращения, создание других сущностей, деспавн, полосы боссов, loot tables и опыт. Естественный спавн учитывает поверхность/воду, свет, высоту, сложность, биом, плотность, вес и размер стада; он выполняется раз в 100 тиков только в загруженных чанках.
  • Molang выполняется открытой библиотекой Mocha 3.0.1 под MIT, без собственного парсера языка. Подключены серверные query.*/q.*, постоянные variable.*/v.*, временные переменные и math.*. Выражения кешируются; вложенность ограничена 64 уровнями, циклы — 4096 итерациями на вычисление. Лицензия включена в JAR как META-INF/LICENSE-mocha.txt.
  • Серверные animation_controllers и animations: состояния, переходы Molang, on_entry/on_exit, переменные с remap curves, временные шкалы и события/команды на них. Кости, материалы и визуальные эффекты анимаций остаются на клиенте.

Полная совместимость со всем движком Bedrock 1.16 пока не гарантируется. Не реализованы специализированные цели и механики (торговля/экономика жителей, рейды, полноценные генетика и инвентари ездовых мобов, специальные атаки боссов и другие отсутствующие компоненты/queries), функции .mcfunction, кастомные блоки, эффекты еды и рецепты только для коптильни. Параметры отдельных AI-компонентов и точное распределение естественного спавна могут отличаться от Bedrock. Биомные теги сопоставляются с семействами биомов Nukkit; собственные биомы не добавляются. Для регистрации пользовательских сущностей автоматически включается runtime-флаг experiment mode Nukkit. Неизвестный контент получает диагностику в логе. Текстуры, модели, анимации и клиентские определения предметов/сущностей должны быть установлены на клиентах вместе с соответствующими паками; этот загрузчик реализует серверную логику и не заменяет клиентские ресурсы.

Синтаксис переплавки описан в документации Bedrock.

Конфигурация

Настройки производятся посредством двух основных файлов: server.properties и zotecore.yml. Они будут созданы автоматически сразу же после запуска ядра, документация по первому доступна в репозитории Nukkit-MOT.

Некоторые настройки Nukkit заблокированы загрузчиком, среди которых multiversion-min/max-protocol (422), xbox-auth (авторизация с помощью него не доступна) и save-player-data-by-uuid (false).

Чтобы сокеты клиентов отваливались, не крашая сервер, отключите Watchdog. В текущей реализации альтернативные варианты исправления недоступны, необходимая настройка thread-watchdog=on.

zotecore.yml

Стандартные настройки ядра, которые можно использовать как основу:

# Изменение информации пака, который клиент должен иметь для входа на сервер.
# Устаревшие или не реализованные методы, однако, добавлены не будут.
pack: Inner Core
pack-version: 2.4.0b122 or higher
pack-version-code: ">163"

# Устанавливает список модов и конфигураций для загрузки, вы можете
# указать название, имя папки модпака из /modpacks или путь.
modpack: innercore

# Использование ванильного интерфейса верстака, вместо кастомного.
# Внимание: в настоящее время не рекомендуется использовать,
# так как некоторые рецепты отображаются с проблемами.
use-legacy-workbench-override: off

# Отключение исправления инвентаря для подключенных клиентов,
# устаревшие версии не работают должным образом с ним,
# не позволяя перемещать предметы по инвентарю.
use-legacy-inventory: on

# Переключение режима отладки для неподдерживаемых методов (например, клиентских).
# Может быть одним из: none, debug (по умолчанию), warning, raise.
unsupported-method-handling: debug

# Могут ли моды использовать небезопасные функции (например, вызов eval) или нет.
# Внимание: это может создать риск безопасности, однако, например, его запрет
# влияет на requireGlobal и часто может нарушить работу модов.
allow-unsafe-scripting: on

# Режим разработчика позволяет получать дополнительную информацию
# о работе ядра, а также профайлинг методов.
developer-mode: off

# Время в секундах между запусками автосохранения данных модов (любое от 20),
# а также мира, если он включен в другой опции.
auto-save-period: 60

# Нужно ли помимо данных модов сохранять еще и миры.
auto-save-world: on

# Включен ли сокетный сервер или нет. Сокеты требуют дополнительный порт,
# подключение через серверные сокеты более нестабильное.
socket-server-enabled: off

# Порт серверного сокета, обычно должен быть между 10000 и 24999.
# Но учтите, что по умолчанию клиент использует порт 2304.
socket-port: 2304

# Отправляет текстовую форму игрокам когда происходят ошибки тика,
# содержит только стактрейс скрипта (без потенциально опасных свойств).
display-ticking-errors-to-players: true

# Если серверный тик прерывается слишком часто, сервер будет остановлен;
# в противном случае тик будет пытаться продолжать перезапуски.
stop-on-critical-ticking-error: true

# Максималльное количесво пакетов которые может хранить сервер для отправки игроку
# Если количесвто пакетов привышает это, то игрок кикается с сервера
max-packet-sending: 200

# Дополнительные потоки Updatable
threading_additional_thread_count: 0

#  uuid игрока, отправляемый клиентом
override-player-uuid: on

# Дополнительная информация в лог
# debug-logger: on
# info-logger: on

# Включить детальную отладку сети
# network-debug: off

# Разрешить использование заблокированных/неподдерживаемых настроек Nukkit
# allow-unsupported-options: off

Консольные команды

  • custom_items — выводит список кастомных предметов
  • custom_blocks — выводит список кастомных блоков
  • mods — выводит список модификаций на сервере
  • inner_core_network — выводит список подключенных к протоколу игроков на сервере
  • state [runtimeId] — выводит стейты блока по рантайм идентификатору
  • profilecallback [enabled] [showParameters] — отладка и профайлинг калбеков
  • dimensions_list — выводит список измерений
  • tps — отображает нагрузку на tick inner core
  • gen_chunks [dimension] [x1] [z1] [x2] [z2] — загружает или генерирует чанки в указанной области
  • get_all_players_id — выводит имена и рантайм идентификаторы всех игроков онлайн

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

Лицензия

Licensing

Техническая информация

Ключ Значение
Версия протокола 422 (1.16.200)
Версия Rhino 1.7.14 (5a917b5)
Instant Referrer a264591