Files
ZoteCoreLoader/README-RU.md

156 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Zote Core — Inner Core Loader
[:us: English](README.md)
__Zote Core__ — серверное ядро, основанное на Inner Core для Minecraft: Bedrock Edition 1.16.201, созданное для уникального геймплея с модами, часто ассоциируемое с созданием собственных модовых серверов.
Основой серверного ядра послужил [Nukkit-MOT](https://github.com/ZoteTeam/Nukkit-MOT), его можно легко обновить, заменив соответствующую библиотеку.
![Zote Core](/.github/logo.png)
## Установка
Поддерживается любая платформа, поддерживающая Java 17. Загрузите последний релиз серверного ядра, либо соберите репозиторий с помощью Gradle.
Запустите собранное ядро, открыв консоль в папке с ним:
```sh
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](https://github.com/unnamed/mocha) под 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](https://learn.microsoft.com/en-us/minecraft/creator/reference/content/recipereference/examples/recipedefinitions/minecraftrecipe_furnace?view=minecraft-bedrock-stable).
## Конфигурация
Настройки производятся посредством двух основных файлов: *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
Стандартные настройки ядра, которые можно использовать как основу:
```yml 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](/.github/license.jpg)
## Техническая информация
| Ключ | Значение |
|-------------------------|--------------------|
| Версия протокола | 422 (1.16.200) |
| Версия Rhino | 1.7.14 (`5a917b5`) |
| Instant Referrer | `a264591` |