3d429b2a86
Загрузчик игры даёт каждому моду свой class loader, поэтому моды не видят друг друга. Но у всех этих загрузчиков родитель — системный, а значит всё, что попало в его class path, доступно каждому моду. Агент подмешивает jar'ы из libs\ именно туда, поэтому библиотека одна на всех, и модам не нужно вшивать её в себя. Первый набор: - json.Json — разборщик и писатель JSON без внешних зависимостей; - config.Config — настройки мода в config\<mod>.json, битый файл не роняет игру, а откатывается на значения по умолчанию с записью в лог; - config.Home — где лежит модлоадер, чтобы мод не гадал; - config.Log — логи с именем мода. build.cmd собирает jar и сразу гоняет тесты библиотеки.
35 lines
1.1 KiB
Batchfile
35 lines
1.1 KiB
Batchfile
@echo off
|
|
rem Builds rsxm-lib: the jar goes to dist\, the tests run right after.
|
|
rem Only a JDK is needed.
|
|
setlocal
|
|
cd /d "%~dp0"
|
|
|
|
if not exist "build\classes" mkdir "build\classes"
|
|
if not exist "build\testclasses" mkdir "build\testclasses"
|
|
if not exist "dist" mkdir "dist"
|
|
|
|
echo [1/3] compiling...
|
|
dir /s /b src\main\java\*.java > build\sources.txt
|
|
dir /s /b src\test\java\*.java > build\testsources.txt
|
|
javac -encoding UTF-8 --release 8 -nowarn -cp "libs\rsx-api.jar" -d build\classes @build\sources.txt
|
|
if errorlevel 1 goto :fail
|
|
javac -encoding UTF-8 --release 8 -nowarn -cp "libs\rsx-api.jar;build\classes" -d build\testclasses @build\testsources.txt
|
|
if errorlevel 1 goto :fail
|
|
|
|
echo [2/3] packaging rsxm-lib.jar...
|
|
if exist "dist\rsxm-lib.jar" del "dist\rsxm-lib.jar"
|
|
jar cf "dist\rsxm-lib.jar" -C build\classes .
|
|
|
|
echo [3/3] running the library tests...
|
|
java -cp "libs\rsx-api.jar;build\classes;build\testclasses" net.rsxm.lib.test.LibTest
|
|
if errorlevel 1 goto :fail
|
|
|
|
echo.
|
|
echo Готово: dist\rsxm-lib.jar
|
|
exit /b 0
|
|
|
|
:fail
|
|
echo.
|
|
echo Сборка не удалась.
|
|
exit /b 1
|