b8e5df778e
Моды грузятся через -javaagent, game.jar не патчится, переживают ре-обфускацию. Что внутри: - агент rsx-bridge.jar: профиль сборки игры, патчи A2/A6, загрузка модов через родной загрузчик игры (ilxq -> special.Main) - патч лаунчера: окно выбора «С модами / Ванилла» по кнопке «Играть» и защита от автоапдейта лаунчера - install/uninstall: всё ставится в %LOCALAPPDATA%\rsx-mod, пути не хардкодятся - build: три готовых артефакта в dist, нужен только JDK - testserver: локальный сервер, принимает любой ник и токен Проверено на живом клиенте: мод грузится и выполняется в игровом потоке, в логе видно игрока и мир.
47 lines
1.3 KiB
Groovy
47 lines
1.3 KiB
Groovy
// rsx-bridge: the mod loader that is attached to the client through -javaagent.
|
|
//
|
|
// Compiled for Java 8 because the client ships its own 8u51 runtime and nothing
|
|
// newer is available on that JVM. No external dependencies on purpose: the jar
|
|
// is loaded into a process we do not control, so every dependency is a risk.
|
|
|
|
plugins {
|
|
id 'java'
|
|
}
|
|
|
|
group = 'net.rustexremake'
|
|
version = '1.0.0'
|
|
|
|
java {
|
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
targetCompatibility = JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
tasks.withType(JavaCompile).configureEach {
|
|
options.encoding = 'UTF-8'
|
|
options.release = 8
|
|
}
|
|
|
|
jar {
|
|
archiveFileName = 'rsx-bridge.jar'
|
|
manifest {
|
|
attributes(
|
|
'Premain-Class': 'rsx.RsxAgent',
|
|
'Agent-Class': 'rsx.RsxAgent',
|
|
'Can-Redefine-Classes': 'false',
|
|
'Can-Retransform-Classes': 'false',
|
|
'Implementation-Title': 'RustexRemake mod bridge',
|
|
'Implementation-Version': project.version
|
|
)
|
|
}
|
|
}
|
|
|
|
// a copy of the profile for the build that is installed, so the installer only
|
|
// has to drop two files next to the jar
|
|
tasks.register('installLayout', Copy) {
|
|
from jar
|
|
from "${rootDir}/../rsx-map/profiles" {
|
|
include 'latest.rsxp'
|
|
rename { 'profile.rsxp' }
|
|
}
|
|
into "${rootDir}/build/install"
|
|
} |