Files
rsxm-lib/README.md
T
SashegDev 3d429b2a86 rsxm-lib: общая библиотека для модов
Загрузчик игры даёт каждому моду свой class loader, поэтому моды не видят
друг друга. Но у всех этих загрузчиков родитель — системный, а значит всё,
что попало в его class path, доступно каждому моду. Агент подмешивает jar'ы
из libs\ именно туда, поэтому библиотека одна на всех, и модам не нужно
вшивать её в себя.

Первый набор:
- json.Json — разборщик и писатель JSON без внешних зависимостей;
- config.Config — настройки мода в config\<mod>.json, битый файл не роняет
  игру, а откатывается на значения по умолчанию с записью в лог;
- config.Home — где лежит модлоадер, чтобы мод не гадал;
- config.Log — логи с именем мода.

build.cmd собирает jar и сразу гоняет тесты библиотеки.
2026-10-17 02:51:13 +03:00

40 lines
2.0 KiB
Markdown
Raw 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.
# rsxm-lib
Общая библиотека для модов RustexRemake. Лежит в `libs\` рядом с `mods\`, и
агент подмешивает её в системный class path при старте — поэтому моды видят её
без дублирования: один jar, одна копия в памяти.
Загрузчик игры даёт каждому моду свой class loader, и напрямую моды друг друга
не видят. Но у всех этих загрузчиков родитель — системный, а значит всё, что
в нём, доступно каждому. На этом и построена библиотека.
## Что внутри
* `net.rsxm.lib.json.Json` — маленький разборщик и писатель JSON. Без внешних
зависимостей: мод — это jar, который друг бросил в папку, тащить туда ещё и
библиотеку незачем.
* `net.rsxm.lib.config.Config` — настройки мода в `config\<mod>.json`.
Значения по умолчанию задаёт сам мод, битый файл не роняет игру, а заменяется
дефолтами с записью в лог.
* `net.rsxm.lib.config.Home` — где вообще лежит модлоадер, чтобы мод не гадал.
* `net.rsxm.lib.config.Log` — логирование с именем мода.
## Сборка
build.cmd
Нужен только JDK. Скрипт собирает `dist\rsxm-lib.jar` и сразу прогоняет тесты
JSON и конфигов.
## Использование
Компилируйте мод против `rsx-api.jar` **и** `rsxm-lib.jar`, но не кладите
`rsxm-lib.jar` внутрь мода — он и так на class path:
javac -cp "rsx-api.jar;rsxm-lib.jar" ...
Config cfg = Config.of("hud");
boolean show = cfg.bool("show", true);
cfg.set("x", 8);
cfg.save();