Browse Source

Switch from Maven to Gradle

pull/66/head
Graham 2 years ago
parent
commit
ccbbf873af
  1. 2
      .editorconfig
  2. 6
      .gitignore
  3. 2
      .idea/runConfigurations/AstDeobfuscator.xml
  4. 2
      .idea/runConfigurations/Bundler.xml
  5. 2
      .idea/runConfigurations/Decompiler.xml
  6. 2
      .idea/runConfigurations/Deobfuscator.xml
  7. 2
      .idea/runConfigurations/GameServer.xml
  8. 2
      .idea/runConfigurations/client.xml
  9. 11
      README.md
  10. 81
      all/build.gradle.kts
  11. 90
      all/pom.xml
  12. 30
      all/src/assembly/bin.xml
  13. 3
      all/src/bin/openrs2-bundle
  14. 3
      all/src/bin/openrs2-bundle.cmd
  15. 3
      all/src/bin/openrs2-decompiler
  16. 3
      all/src/bin/openrs2-decompiler.cmd
  17. 3
      all/src/bin/openrs2-deob
  18. 3
      all/src/bin/openrs2-deob-ast
  19. 3
      all/src/bin/openrs2-deob-ast.cmd
  20. 3
      all/src/bin/openrs2-deob.cmd
  21. 3
      all/src/bin/openrs2-game
  22. 3
      all/src/bin/openrs2-game.cmd
  23. 39
      all/src/main/java/dev/openrs2/Launcher.kt
  24. 27
      asm/build.gradle.kts
  25. 43
      asm/pom.xml
  26. 203
      build.gradle.kts
  27. 7
      buildSrc/build.gradle.kts
  28. 1
      buildSrc/settings.gradle.kts
  29. 19
      buildSrc/src/main/java/Versions.kt
  30. 30
      bundler/build.gradle.kts
  31. 35
      bundler/pom.xml
  32. 26
      common/build.gradle.kts
  33. 59
      common/pom.xml
  34. 30
      decompiler/build.gradle.kts
  35. 35
      decompiler/pom.xml
  36. 21
      deob-annotations/build.gradle.kts
  37. 26
      deob-annotations/pom.xml
  38. 29
      deob-ast/build.gradle.kts
  39. 35
      deob-ast/pom.xml
  40. 32
      deob/build.gradle.kts
  41. 42
      deob/pom.xml
  42. 20
      docs/faq.md
  43. 27
      game/build.gradle.kts
  44. 26
      game/pom.xml
  45. 1
      gradle.properties
  46. BIN
      gradle/wrapper/gradle-wrapper.jar
  47. 5
      gradle/wrapper/gradle-wrapper.properties
  48. 183
      gradlew
  49. 100
      gradlew.bat
  50. 20
      jsobject/build.gradle.kts
  51. 23
      jsobject/pom.xml
  52. 241
      pom.xml
  53. 29
      settings.gradle.kts

2
.editorconfig

@ -7,7 +7,7 @@ trim_trailing_whitespace = true
max_line_length = 120
indent_style = tab
[*.kt]
[*.{kt,kts}]
indent_style = space
indent_size = 4
# see https://github.com/pinterest/ktlint/issues/527

6
.gitignore

@ -4,10 +4,12 @@
!.idea
!.mailmap
*.iml
*/build
*/out
*/target
*~
/nonfree
/build
/out
/target
hs_err_pid*.log
pom.xml.releaseBackup
release.properties

2
.idea/runConfigurations/AstDeobfuscator.xml

@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="AstDeobfuscator" type="JetRunConfigurationType" factoryName="Kotlin">
<module name="openrs2-deob-ast" />
<module name="openrs2.deob-ast.main" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />

2
.idea/runConfigurations/Bundler.xml

@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Bundler" type="JetRunConfigurationType" factoryName="Kotlin">
<module name="openrs2-bundler" />
<module name="openrs2.bundler.main" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />

2
.idea/runConfigurations/Decompiler.xml

@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Decompiler" type="JetRunConfigurationType" factoryName="Kotlin">
<module name="openrs2-decompiler" />
<module name="openrs2.decompiler.main" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />

2
.idea/runConfigurations/Deobfuscator.xml

@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Deobfuscator" type="JetRunConfigurationType" factoryName="Kotlin">
<module name="openrs2-deob" />
<module name="openrs2.deob.main" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />

2
.idea/runConfigurations/GameServer.xml

@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="GameServer" type="JetRunConfigurationType" factoryName="Kotlin">
<module name="openrs2-game" />
<module name="openrs2.game.main" />
<option name="VM_PARAMETERS" value="-Dio.netty.leakDetection.level=PARANOID" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />

2
.idea/runConfigurations/client.xml

@ -1,7 +1,7 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="client" type="Application" factoryName="Application" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="client" />
<module name="openrs2-client" />
<module name="openrs2.nonfree.client.main" />
<option name="PROGRAM_PARAMETERS" value="1 live english game0" />
<method v="2">
<option name="Make" enabled="true" />

11
README.md

@ -10,10 +10,7 @@ released in late 2009.
## Prerequisites
Building OpenRS2 requires the following pieces of software:
* [Java Development Kit][jdk] (version 8 or later)
* [Apache Maven][maven] (version 3.3.9 or later)
Building OpenRS2 requires version 8 or later of the [Java Development Kit][jdk].
### Non-free components
@ -50,8 +47,8 @@ non-free material from being accidentally included in the repository.
## Building
Run `mvn verify` to download the dependencies, build the code, run the unit
tests and package it.
Run `./gradlew` to download the dependencies, build the code, run the unit tests
and package it.
## Contributing
@ -62,7 +59,7 @@ formatter before each commit. The 'Optimize imports' option should also be
selected. Do not select 'Rearrange entries'.
OpenRS2's code style settings are held in `.idea/codeStyles/Project.xml` in the
repository, and IDEA should use them automatically after importing the Maven
repository, and IDEA should use them automatically after importing the Gradle
project.
Kotlin code must pass all of [ktlint][ktlint]'s tests.

81
all/build.gradle.kts

@ -0,0 +1,81 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import com.github.jk1.license.render.TextReportRenderer
plugins {
`maven-publish`
application
id("com.github.jk1.dependency-license-report")
id("com.github.johnrengelman.shadow")
kotlin("jvm")
}
application {
applicationName = "openrs2"
mainClassName = "dev.openrs2.LauncherKt"
}
dependencies {
implementation(project(":bundler"))
implementation(project(":decompiler"))
implementation(project(":deob"))
implementation(project(":deob-ast"))
implementation(project(":game"))
}
tasks.withType<ShadowJar> {
minimize()
}
licenseReport {
renderers = arrayOf(TextReportRenderer())
}
val distTasks = listOf(
"distTar",
"distZip",
"installDist",
"installShadowDist",
"shadowDistTar",
"shadowDistZip"
)
configure(tasks.filter { it.name in distTasks }) {
dependsOn("generateLicenseReport")
}
distributions {
all {
contents {
from("${rootProject.projectDir}/COPYING")
from("${rootProject.projectDir}/README.md")
from("${rootProject.projectDir}/docs") {
include("*.md")
into("docs")
}
from("$buildDir/reports/dependency-license/THIRD-PARTY-NOTICES.txt") {
rename { "third-party-licenses.txt" }
into("docs")
}
}
}
named("shadow") {
distributionBaseName.set("openrs2-shadow")
}
}
publishing {
publications.create<MavenPublication>("maven") {
artifact(tasks.named("shadowDistZip").get())
pom {
packaging = "zip"
name.set("OpenRS2")
description.set("""
OpenRS2 is an open-source multiplayer game server and suite of
associated tools. It is compatible with build 550 of the
RuneScape client, which was released in mid-2009.
""".trimIndent())
}
}
}

90
all/pom.xml

@ -1,90 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>openrs2-all</artifactId>
<packaging>jar</packaging>
<name>OpenRS2 All</name>
<description>
Zip file for end users, containing OpenRS2, all of its transitive
dependencies and launcher scripts.
</description>
<dependencies>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2-decompiler</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2-deob</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2-deob-ast</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2-game</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>jar-with-dependencies</shadedClassifierName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>dev.openrs2.game.GameServerKt</Main-Class>
</manifestEntries>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
</transformers>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptors>
<descriptor>${project.basedir}/src/assembly/bin.xml</descriptor>
</descriptors>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</plugin>
</plugins>
</build>
</project>

30
all/src/assembly/bin.xml

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.basedir}/src/bin</directory>
<outputDirectory>bin</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.parent.basedir}/docs</directory>
<outputDirectory>docs</outputDirectory>
</fileSet>
</fileSets>
<files>
<file>
<source>${project.build.directory}/${project.artifactId}-${project.version}-jar-with-dependencies.jar</source>
<outputDirectory>lib</outputDirectory>
<destName>openrs2.jar</destName>
</file>
<file>
<source>${project.parent.basedir}/COPYING</source>
</file>
<file>
<source>${project.parent.basedir}/README.md</source>
</file>
</files>
</assembly>

3
all/src/bin/openrs2-bundle

@ -1,3 +0,0 @@
#!/bin/sh -e
cd `dirname "$0"`/..
exec java -cp lib/openrs2.jar dev.openrs2.bundler.BundlerKt "$@"

3
all/src/bin/openrs2-bundle.cmd

@ -1,3 +0,0 @@
@echo off
cd /d %~dp0\..
java -cp lib\openrs2.jar dev.openrs2.bundler.BundlerKt %*

3
all/src/bin/openrs2-decompiler

@ -1,3 +0,0 @@
#!/bin/sh -e
cd `dirname "$0"`/..
exec java -cp lib/openrs2.jar dev.openrs2.decompiler.DecompilerKt "$@"

3
all/src/bin/openrs2-decompiler.cmd

@ -1,3 +0,0 @@
@echo off
cd /d %~dp0\..
java -cp lib\openrs2.jar dev.openrs2.decompiler.DecompilerKt %*

3
all/src/bin/openrs2-deob

@ -1,3 +0,0 @@
#!/bin/sh -e
cd `dirname "$0"`/..
exec java -cp lib/openrs2.jar dev.openrs2.deob.DeobfuscatorKt "$@"

3
all/src/bin/openrs2-deob-ast

@ -1,3 +0,0 @@
#!/bin/sh -e
cd `dirname "$0"`/..
exec java -cp lib/openrs2.jar dev.openrs2.deob.ast.AstDeobfuscatorKt "$@"

3
all/src/bin/openrs2-deob-ast.cmd

@ -1,3 +0,0 @@
@echo off
cd /d %~dp0\..
java -cp lib\openrs2.jar dev.openrs2.deob.ast.AstDeobfuscatorKt %*

3
all/src/bin/openrs2-deob.cmd

@ -1,3 +0,0 @@
@echo off
cd /d %~dp0\..
java -cp lib\openrs2.jar dev.openrs2.deob.DeobfuscatorKt %*

3
all/src/bin/openrs2-game

@ -1,3 +0,0 @@
#!/bin/sh -e
cd `dirname "$0"`/..
exec java -cp lib/openrs2.jar dev.openrs2.game.GameServerKt "$@"

3
all/src/bin/openrs2-game.cmd

@ -1,3 +0,0 @@
@echo off
cd /d %~dp0\..
java -cp lib\openrs2.jar dev.openrs2.game.GameServerKt %*

39
all/src/main/java/dev/openrs2/Launcher.kt

@ -0,0 +1,39 @@
package dev.openrs2
import kotlin.system.exitProcess
import dev.openrs2.bundler.main as bundlerMain
import dev.openrs2.decompiler.main as decompilerMain
import dev.openrs2.deob.ast.main as astDeobfuscatorMain
import dev.openrs2.deob.main as deobfuscatorMain
import dev.openrs2.game.main as gameMain
fun main(args: Array<String>) {
val command: String
val commandArgs: Array<String>
if (args.isEmpty()) {
command = "game"
commandArgs = emptyArray()
} else {
command = args[0]
commandArgs = args.copyOfRange(1, args.size)
}
when (command) {
"bundle" -> bundlerMain()
"decompile" -> decompilerMain()
"deob" -> deobfuscatorMain()
"deob-ast" -> astDeobfuscatorMain()
"game" -> gameMain()
else -> {
System.err.println("Usage: openrs2 [<command> [<args>]]")
System.err.println()
System.err.println("Commands:")
System.err.println(" bundle")
System.err.println(" decompile")
System.err.println(" deob")
System.err.println(" deob-ast")
System.err.println(" game")
exitProcess(1)
}
}
}

27
asm/build.gradle.kts

@ -0,0 +1,27 @@
plugins {
`maven-publish`
kotlin("jvm")
}
dependencies {
api(project(":common"))
api("org.ow2.asm:asm:${Versions.asm}")
api("org.ow2.asm:asm-commons:${Versions.asm}")
api("org.ow2.asm:asm-tree:${Versions.asm}")
api("org.ow2.asm:asm-util:${Versions.asm}")
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
packaging = "jar"
name.set("OpenRS2 ASM Utilities")
description.set("""
Common utility code used for manipulating Java bytecode with
the ASM library.
""".trimIndent())
}
}
}

43
asm/pom.xml

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>openrs2-asm</artifactId>
<packaging>jar</packaging>
<name>OpenRS2 ASM Utilities</name>
<description>
Common utility code used for manipulating Java bytecode with the ASM
library.
</description>
<dependencies>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-commons</artifactId>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-tree</artifactId>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-util</artifactId>
</dependency>
</dependencies>
</project>

203
build.gradle.kts

@ -0,0 +1,203 @@
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapper
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
defaultTasks("build")
plugins {
base
id("com.github.ben-manes.versions") version Versions.versionsPlugin
id("com.github.jk1.dependency-license-report") version Versions.dependencyLicenseReport apply false
id("com.github.johnrengelman.shadow") version Versions.shadowPlugin apply false
id("org.jmailen.kotlinter") version Versions.kotlinter apply false
kotlin("jvm") version Versions.kotlin apply false
}
allprojects {
group = "dev.openrs2"
version = "1.0.0-SNAPSHOT"
repositories {
mavenLocal()
mavenCentral()
maven(url = "https://repo.openrs2.dev/repository/openrs2") {
credentials {
username = findProperty("repoUsername")?.toString()
password = findProperty("repoPassword")?.toString()
}
}
maven(url = "https://repo.openrs2.dev/repository/openrs2-snapshots") {
credentials {
username = findProperty("repoUsername")?.toString()
password = findProperty("repoPassword")?.toString()
}
}
maven(url = "https://dl.bintray.com/michaelbull/maven")
}
plugins.withType<BasePlugin> {
configure<BasePluginConvention> {
archivesBaseName = "${rootProject.name}-$name"
}
}
plugins.withType<ApplicationPlugin> {
tasks.named<JavaExec>("run") {
workingDir = rootProject.projectDir
}
}
plugins.withType<JavaPlugin> {
configure<JavaPluginExtension> {
withSourcesJar()
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}
tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = "1.8"
}
tasks.withType<AbstractArchiveTask> {
isPreserveFileTimestamps = false
isReproducibleFileOrder = true
}
tasks.withType<Test> {
reports {
html.isEnabled = false
junitXml.isEnabled = true
}
}
tasks.withType<JacocoReport> {
dependsOn("test")
reports {
csv.isEnabled = false
html.isEnabled = false
xml.isEnabled = false
}
tasks.named("check") {
dependsOn("jacocoTestReport")
}
}
}
val Project.free: Boolean
get() = name != "nonfree" && parent?.name != "nonfree"
configure(subprojects.filter { it.free }) {
apply(plugin = "jacoco")
plugins.withType<KotlinPluginWrapper> {
apply(plugin = "org.jmailen.kotlinter")
dependencies {
val api by configurations
api(kotlin("stdlib-jdk8"))
val implementation by configurations
implementation("com.michael-bull.kotlin-inline-logger:kotlin-inline-logger-jvm:${Versions.inlineLogger}")
val testImplementation by configurations
testImplementation(kotlin("test-junit5"))
}
}
plugins.withType<JavaPlugin> {
dependencies {
val testRuntimeOnly by configurations
testRuntimeOnly("org.junit.jupiter:junit-jupiter:${Versions.junit}")
}
}
plugins.withType<ApplicationPlugin> {
dependencies {
val runtimeOnly by configurations
runtimeOnly("ch.qos.logback:logback-classic:${Versions.logback}")
}
}
tasks.withType<Test> {
useJUnitPlatform()
jvmArgs = listOf("-ea", "-Dio.netty.leakDetection.level=PARANOID")
}
plugins.withType<MavenPublishPlugin> {
configure<PublishingExtension> {
repositories {
maven {
url = if (version.toString().endsWith("-SNAPSHOT")) {
uri("https://repo.openrs2.dev/repository/openrs2-snapshots")
} else {
uri("https://repo.openrs2.dev/repository/openrs2")
}
credentials {
username = findProperty("repoUsername")?.toString()
password = findProperty("repoPassword")?.toString()
}
}
}
publications.withType<MavenPublication> {
artifactId = "openrs2-${project.name}"
pom {
url.set("https://www.openrs2.dev/")
inceptionYear.set("2019")
organization {
name.set("OpenRS2 Authors")
url.set("https://www.openrs2.dev/")
}
licenses {
license {
if (project.name in listOf("deob-annotations", "jsobject")) {
name.set("GNU Lesser General Public License v3.0 or later")
url.set("https://www.gnu.org/licenses/lgpl-3.0.txt")
} else {
name.set("GNU General Public License v3.0 or later")
url.set("https://www.gnu.org/licenses/gpl-3.0.txt")
}
}
}
scm {
connection.set("scm:git:https://git.openrs2.dev/openrs2/openrs2.git")
developerConnection.set("scm:git:git@git.openrs2.dev:openrs2/openrs2.git")
url.set("https://git.openrs2.dev/openrs2/openrs2")
}
issueManagement {
system.set("Gitea")
url.set("https://git.openrs2.dev/openrs2/openrs2")
}
ciManagement {
system.set("Jenkins")
url.set("https://build.openrs2.dev/job/openrs2/")
}
}
}
}
}
}
val rejectVersionRegex = Regex("(?i)[._-](?:alpha|beta|rc|cr|m)")
tasks.withType<DependencyUpdatesTask> {
gradleReleaseChannel = "current"
revision = "release"
rejectVersionIf {
candidate.version.contains(rejectVersionRegex)
}
}

7
buildSrc/build.gradle.kts

@ -0,0 +1,7 @@
plugins {
`embedded-kotlin`
}
repositories {
mavenCentral()
}

1
buildSrc/settings.gradle.kts

@ -0,0 +1 @@

19
buildSrc/src/main/java/Versions.kt

@ -0,0 +1,19 @@
object Versions {
const val asm = "7.3.1"
const val bouncyCastle = "1.64"
const val dependencyLicenseReport = "1.13"
const val fernflower = "1.0.3"
const val guava = "28.2-jre"
const val guice = "4.2.2"
const val inlineLogger = "1.0.1"
const val javaParser = "3.15.11"
const val jimfs = "1.1"
const val junit = "5.6.0"
const val kotlin = "1.3.61"
const val kotlinter = "2.3.0"
const val logback = "1.2.3"
const val netty = "4.1.45.Final"
const val openrs2Natives = "2.0.0"
const val shadowPlugin = "5.2.0"
const val versionsPlugin = "0.27.0"
}

30
bundler/build.gradle.kts

@ -0,0 +1,30 @@
plugins {
`maven-publish`
application
kotlin("jvm")
}
application {
mainClassName = "dev.openrs2.bundler.BundlerKt"
}
dependencies {
api(project(":asm"))
implementation("dev.openrs2:openrs2-natives-all:${Versions.openrs2Natives}")
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
packaging = "jar"
name.set("OpenRS2 Bundler")
description.set("""
A tool for patching the RuneScape client to allow it to connect
to an OpenRS2 server and improve compatibility with modern JVMs.
""".trimIndent())
}
}
}

35
bundler/pom.xml

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>openrs2-bundler</artifactId>
<packaging>jar</packaging>
<name>OpenRS2 Bundler</name>
<description>
A tool for patching the RuneScape client to allow it to connect to an
OpenRS2 server and improve compatibility with modern JVMs.
</description>
<dependencies>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2-asm</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2-natives-all</artifactId>
</dependency>
</dependencies>
</project>

26
common/build.gradle.kts

@ -0,0 +1,26 @@
plugins {
`maven-publish`
kotlin("jvm")
}
dependencies {
api("com.google.inject:guice:${Versions.guice}")
api("io.netty:netty-buffer:${Versions.netty}")
api("org.bouncycastle:bcprov-jdk15on:${Versions.bouncyCastle}")
testImplementation("com.google.jimfs:jimfs:${Versions.jimfs}")
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
packaging = "jar"
name.set("OpenRS2 Common")
description.set("""
Common code used by all modules.
""".trimIndent())
}
}
}

59
common/pom.xml

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>openrs2-common</artifactId>
<packaging>jar</packaging>
<name>OpenRS2 Common</name>
<description>Common code used by all modules.</description>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
</dependency>
<dependency>
<groupId>com.google.jimfs</groupId>
<artifactId>jimfs</artifactId>
</dependency>
<dependency>
<groupId>com.michael-bull.kotlin-inline-logger</groupId>
<artifactId>kotlin-inline-logger-jvm</artifactId>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-buffer</artifactId>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test-junit5</artifactId>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
</dependency>
</dependencies>
</project>

30
decompiler/build.gradle.kts

@ -0,0 +1,30 @@
plugins {
`maven-publish`
application
kotlin("jvm")
}
application {
mainClassName = "dev.openrs2.decompiler.DecompilerKt"
}
dependencies {
implementation(project(":common"))
implementation("dev.openrs2:fernflower:${Versions.fernflower}")
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
packaging = "jar"
name.set("OpenRS2 Decompiler")
description.set("""
A thin wrapper around OpenRS2's fork of Fernflower that sets
the standard options required to decompile the RuneScape client
and its dependencies.
""".trimIndent())
}
}
}

35
decompiler/pom.xml

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>openrs2-decompiler</artifactId>
<packaging>jar</packaging>
<name>OpenRS2 Decompiler</name>
<description>
A thin wrapper around OpenRS2's fork of Fernflower that sets the standard
options required to decompile the RuneScape client and its dependencies.
</description>
<dependencies>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>fernflower</artifactId>
</dependency>
</dependencies>
</project>

21
deob-annotations/build.gradle.kts

@ -0,0 +1,21 @@
plugins {
`java-library`
`maven-publish`
}
// XXX(gpe): this module MUST NOT depend on any of the GPLed modules.
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
packaging = "jar"
name.set("OpenRS2 Deobfuscator Annotations")
description.set("""
Annotations inserted by the deobfuscator to track the original
names and descriptors of classes, methods and fields.
""".trimIndent())
}
}
}

26
deob-annotations/pom.xml

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>openrs2-deob-annotations</artifactId>
<packaging>jar</packaging>
<name>OpenRS2 Deobfuscator Annotations</name>
<description>
Annotations inserted by the deobfuscator to track the original names and
descriptors of classes, methods and fields.
</description>
<licenses>
<license>
<name>GNU Lesser General Public License v3.0 or later</name>
<url>https://www.gnu.org/licenses/lgpl-3.0.txt</url>
</license>
</licenses>
<!-- XXX(gpe): this module MUST NOT depend on any of the GPLed modules. -->
</project>

29
deob-ast/build.gradle.kts

@ -0,0 +1,29 @@
plugins {
`maven-publish`
application
kotlin("jvm")
}
application {
mainClassName = "dev.openrs2.deob.ast.AstDeobfuscatorKt"
}
dependencies {
implementation(project(":common"))
implementation("com.github.javaparser:javaparser-symbol-solver-core:${Versions.javaParser}")
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
packaging = "jar"
name.set("OpenRS2 AST Deobfuscator")
description.set("""
A tool for performing AST-level deobfuscation of the RuneScape client. It
may be run after decompiling the client.
""".trimIndent())
}
}
}

35
deob-ast/pom.xml

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>openrs2-deob-ast</artifactId>
<packaging>jar</packaging>
<name>OpenRS2 AST Deobfuscator</name>
<description>
A tool for performing AST-level deobfuscation of the RuneScape client. It
may be run after decompiling the client.
</description>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>openrs2-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>com.github.javaparser</groupId>
<artifactId>javaparser-symbol-solver-core</artifactId>
</dependency>
</dependencies>
</project>

32
deob/build.gradle.kts

@ -0,0 +1,32 @@
plugins {
`maven-publish`
application
kotlin("jvm")
}
application {
mainClassName = "dev.openrs2.deob.DeobfuscatorKt"
}
dependencies {
implementation(project(":bundler"))
implementation(project(":deob-annotations"))
implementation("com.google.guava:guava:${Versions.guava}")
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
packaging = "jar"
name.set("OpenRS2 Bytecode Deobfuscator")
description.set("""
A tool for performing bytecode-level deobfuscation of the
RuneScape client. It must be run before decompiling the
client - some of the transformations it performs are required
for the decompiler to produce valid output.
""".trimIndent())
}
}
}

42
deob/pom.xml

@ -1,42 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>openrs2-deob</artifactId>
<packaging>jar</packaging>
<name>OpenRS2 Bytecode Deobfuscator</name>
<description>
A tool for performing bytecode-level deobfuscation of the RuneScape client.
It must be run before decompiling the client - some of the transformations
it performs are required for the decompiler to produce valid output.
</description>
<dependencies>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2-asm</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2-bundler</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2-deob-annotations</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
</dependencies>
</project>

20
docs/faq.md

@ -12,23 +12,11 @@ A mixture of reasons:
* Availability of the complete set of original client data files.
* Availability of a large proportion of the location file encryption keys.
## Why does OpenRS2 use Maven instead of Gradle?
## Why do the OpenRS2 Natives use Maven instead of Gradle?
Gradle's task-based model is significantly better than Maven's fixed lifecycle
model.
However, Gradle's flexibility and rate of development has come at a cost of
worse IDE integration, to the point at which recent versions of IntelliJ IDEA
now delegate build actions to Gradle by default rather than attempting to
understand the project structure. This tends to be slower and consume more
memory than IDEA's built-in build system. While this setting can be changed, I
think it is a sign of the future of Gradle's IDE integration.
Furthermore, [nar-maven-plugin][nar-maven-plugin] is, at the time of writing,
significantly better than Gradle's support for building native code. Gradle's
new C++ plugin simply doesn't provide enough features.
This might be a decision we revisit in the future.
[nar-maven-plugin][nar-maven-plugin] is, at the time of writing, significantly
better than Gradle's support for building native code. Gradle's new C++ plugin
simply doesn't provide enough features.
## Why is OpenRS2 licensed under the GNU GPL?

27
game/build.gradle.kts

@ -0,0 +1,27 @@
plugins {
`maven-publish`
application
kotlin("jvm")
}
application {
mainClassName = "dev.openrs2.game.GameServerKt"
}
dependencies {
implementation(project(":common"))
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
packaging = "jar"
name.set("OpenRS2 Game Server")
description.set("""
Reimplementation of the RuneScape game server software.
""".trimIndent())
}
}
}

26
game/pom.xml

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>openrs2-game</artifactId>
<packaging>jar</packaging>
<name>OpenRS2 Game Server</name>
<description>
Reimplementation of the RuneScape game server software.
</description>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>openrs2-common</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

1
gradle.properties

@ -0,0 +1 @@
kotlin.code.style=official

BIN
gradle/wrapper/gradle-wrapper.jar

Binary file not shown.

5
gradle/wrapper/gradle-wrapper.properties

@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

183
gradlew

@ -0,0 +1,183 @@
#!/usr/bin/env sh
#
# Copyright 2015 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
exec "$JAVACMD" "$@"

100
gradlew.bat

@ -0,0 +1,100 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

20
jsobject/build.gradle.kts

@ -0,0 +1,20 @@
plugins {
`java-library`
`maven-publish`
}
// XXX(gpe): this module MUST NOT depend on any of the GPLed modules.
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
packaging = "jar"
name.set("OpenRS2 JavaScript Object")
description.set("""
Stubs for the netscape.javascript package.
""".trimIndent())
}
}
}

23
jsobject/pom.xml

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>openrs2-jsobject</artifactId>
<packaging>jar</packaging>
<name>OpenRS2 JavaScript Object</name>
<description>Stubs for the netscape.javascript package.</description>
<licenses>
<license>
<name>GNU Lesser General Public License v3.0 or later</name>
<url>https://www.gnu.org/licenses/lgpl-3.0.txt</url>
</license>
</licenses>
<!-- XXX(gpe): this module MUST NOT depend on any of the GPLed modules. -->
</project>

241
pom.xml

@ -1,241 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2-parent</artifactId>
<version>1.0.8</version>
</parent>
<artifactId>openrs2</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>OpenRS2</name>
<description>
OpenRS2 is an open-source multiplayer game server and suite of associated
tools. It is compatible with build 550 of the RuneScape client, which was
released in mid-2009.
</description>
<modules>
<module>all</module>
<module>asm</module>
<module>bundler</module>
<module>common</module>
<module>decompiler</module>
<module>deob-annotations</module>
<module>deob-ast</module>
<module>deob</module>
<module>game</module>
<module>jsobject</module>
</modules>
<scm>
<connection>scm:git:https://git.openrs2.dev/openrs2/openrs2.git</connection>
<developerConnection>scm:git:git@git.openrs2.dev:openrs2/openrs2.git</developerConnection>
<url>https://git.openrs2.dev/openrs2/openrs2</url>
</scm>
<issueManagement>
<system>Gitea</system>
<url>https://git.openrs2.dev/openrs2/openrs2/issues</url>
</issueManagement>
<ciManagement>
<system>Jenkins</system>
<url>https://build.openrs2.dev/job/openrs2/</url>
</ciManagement>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.2-jre</version>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>4.2.2</version>
</dependency>
<dependency>
<groupId>com.google.jimfs</groupId>
<artifactId>jimfs</artifactId>
<version>1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.javaparser</groupId>
<artifactId>javaparser-symbol-solver-core</artifactId>
<version>3.15.11</version>
</dependency>
<dependency>
<groupId>com.michael-bull.kotlin-inline-logger</groupId>
<artifactId>kotlin-inline-logger-jvm</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>fernflower</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>dev.openrs2</groupId>
<artifactId>openrs2-natives-all</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-buffer</artifactId>
<version>4.1.45.Final</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.64</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>7.3.1</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-commons</artifactId>
<version>7.3.1</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-tree</artifactId>
<version>7.3.1</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-util</artifactId>
<version>7.3.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>