From d8116478d4241fee0865df513fc3f25f410f4c96 Mon Sep 17 00:00:00 2001 From: Gary Tierney Date: Tue, 27 Mar 2018 21:12:44 +0100 Subject: [PATCH] Remove dependency on embedded kotlin compiler This is a large change that significantly simplifies the plugin build system by having the kotlinc handle everything related to script compilation. Since we no longer use package name rewriting, the "packageName" option has been dropped from the gradle script API and has been removed from existing plugins. In addition to simplifying the build system, it should also significantly speed up build times. Previously we ran 2 build processes for every plugin and didn't have fully working incremental compilation for scripts compared to 1 build process with built-in incremental compilation. There were also some random pieces of code that referenced kotlinc directly, so those have either been removed or refactored out. --- buildSrc/build.gradle | 3 +- .../build/plugin/ApolloPluginExtension.groovy | 77 ++++------------- .../KotlinCompilerConfigurationFactory.groovy | 59 ------------- .../plugin/compiler/KotlinScriptBinary.groovy | 23 ----- .../KotlinScriptBinaryArtifactRemapper.groovy | 46 ---------- .../compiler/KotlinScriptCompiler.groovy | 73 ---------------- .../KotlinScriptCompilerException.groovy | 11 --- .../tasks/ApolloScriptCompileTask.groovy | 84 ------------------- game/build.gradle | 2 +- game/plugin/bank/build.gradle | 1 - game/plugin/cmd/build.gradle | 1 - game/plugin/consumables/build.gradle | 1 - game/plugin/dummy/build.gradle | 1 - game/plugin/emote-tab/build.gradle | 1 - game/plugin/entity/following/build.gradle | 1 - game/plugin/entity/player-action/build.gradle | 1 - game/plugin/entity/spawn/build.gradle | 1 - game/plugin/entity/walk-to/build.gradle | 1 - game/plugin/locations/al-kharid/build.gradle | 1 - game/plugin/locations/edgeville/build.gradle | 1 - game/plugin/locations/falador/build.gradle | 1 - game/plugin/locations/lumbridge/build.gradle | 1 - .../locations/tutorial-island/build.gradle | 1 - game/plugin/locations/varrock/build.gradle | 1 - game/plugin/navigation/door/build.gradle | 3 +- game/plugin/shops/build.gradle | 1 - game/plugin/shops/src/dsl.kt | 3 +- game/plugin/skills/fishing/build.gradle | 1 - game/plugin/skills/mining/build.gradle | 1 - game/plugin/skills/runecrafting/build.gradle | 1 - game/plugin/skills/woodcutting/build.gradle | 1 - game/plugin/util/command/build.gradle | 3 +- game/plugin/util/lookup/build.gradle | 3 +- .../game/plugin/KotlinPluginEnvironment.java | 27 ++---- properties.gradle | 2 +- 35 files changed, 30 insertions(+), 409 deletions(-) delete mode 100644 buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinCompilerConfigurationFactory.groovy delete mode 100644 buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptBinary.groovy delete mode 100644 buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptBinaryArtifactRemapper.groovy delete mode 100644 buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptCompiler.groovy delete mode 100644 buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptCompilerException.groovy delete mode 100644 buildSrc/src/main/groovy/org/apollo/build/plugin/tasks/ApolloScriptCompileTask.groovy diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 404e3214..76639e17 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -20,7 +20,6 @@ repositories { dependencies { compile gradleApi() - compile group: 'org.ow2.asm', name: 'asm-all', version: '5.0.3' compile group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jre8', version: "$kotlinVersion" - compile group: 'org.jetbrains.kotlin', name: 'kotlin-compiler-embeddable', version: "$kotlinVersion" + compile group: 'org.jetbrains.kotlin', name: 'kotlin-reflect', version: "$kotlinVersion" } \ No newline at end of file diff --git a/buildSrc/src/main/groovy/org/apollo/build/plugin/ApolloPluginExtension.groovy b/buildSrc/src/main/groovy/org/apollo/build/plugin/ApolloPluginExtension.groovy index ea4c910e..a87c6082 100644 --- a/buildSrc/src/main/groovy/org/apollo/build/plugin/ApolloPluginExtension.groovy +++ b/buildSrc/src/main/groovy/org/apollo/build/plugin/ApolloPluginExtension.groovy @@ -1,10 +1,6 @@ package org.apollo.build.plugin -import org.apollo.build.plugin.tasks.ApolloScriptCompileTask import org.gradle.api.Project -import org.gradle.api.Task -import org.gradle.api.file.FileTree -import org.gradle.api.tasks.testing.Test class ApolloPluginExtension { final Project project @@ -14,11 +10,6 @@ class ApolloPluginExtension { */ String name - /** - * The package that plugin scripts (.kts files) will be packaged under for this plugin. - */ - String packageName = "org.apollo.game.plugins" - /** * An optional description of this plugin. */ @@ -51,21 +42,6 @@ class ApolloPluginExtension { init() } - private def addDependencyOn(Project other, String configuration, boolean includeProject) { - def compileConfiguration = other.configurations.getByName("compile") - def sources = other.sourceSets.main - def deps = compileConfiguration.dependencies - - deps.each { - project.dependencies.add(configuration, it) - } - - project.dependencies.add(configuration, sources.output) - if (includeProject) { - project.dependencies.add(configuration, other) - } - } - /** * Setup the {@link Project} with the correct dependencies and tasks required to build the plugin * and its scripts. @@ -75,44 +51,26 @@ class ApolloPluginExtension { def pluginTestingProject = project.findProject(':game:plugin-testing') project.plugins.apply('kotlin') + project.dependencies { + def transitiveGameDeps = gameProject.configurations["compile"].dependencies + def gameSources = gameProject.sourceSets.main + + transitiveGameDeps.each { dependency -> + compile dependency + } + + compile gameSources.output + testCompile pluginTestingProject + } + project.sourceSets { - main { - kotlin { - srcDir this.srcDir - exclude '*.kts' - } - } - - test { - kotlin { - srcDir this.testDir - } - } + main.kotlin.srcDirs += this.srcDir + test.kotlin.srcDirs += this.testDir } - def mainSources = project.sourceSets.main - - addDependencyOn(gameProject, "compile", false) - addDependencyOn(pluginTestingProject, "testCompile", true) - - def buildTask = project.tasks['classes'] - - FileTree scripts = project.fileTree(srcDir).matching { - include '*.kts' - } - - project.tasks.create('compileScripts', ApolloScriptCompileTask) { - def outputDir = mainSources.output.classesDir - - inputs.files scripts.files - outputsDir = outputDir - - compileClasspath = mainSources.compileClasspath + mainSources.runtimeClasspath + mainSources.output - scriptDefinitionClass = "org.apollo.game.plugin.kotlin.KotlinPluginScript" - mustRunAfter buildTask - } - - buildTask.finalizedBy(project.tasks['compileScripts']) + project.tasks["compileKotlin"].kotlinOptions.freeCompilerArgs += [ + "-script-templates", "org.apollo.game.plugin.kotlin.KotlinPluginScript" + ] } def getDependencies() { @@ -126,5 +84,4 @@ class ApolloPluginExtension { this.dependencies = dependencies } - } diff --git a/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinCompilerConfigurationFactory.groovy b/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinCompilerConfigurationFactory.groovy deleted file mode 100644 index 3da38f15..00000000 --- a/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinCompilerConfigurationFactory.groovy +++ /dev/null @@ -1,59 +0,0 @@ -package org.apollo.build.plugin.compiler - -import kotlin.jvm.JvmClassMappingKt -import kotlin.reflect.KClass -import kotlin.reflect.full.KClasses -import kotlin.reflect.jvm.internal.KClassImpl -import kotlin.script.templates.ScriptTemplateDefinition -import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys -import org.jetbrains.kotlin.cli.common.messages.MessageCollector -import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot -import org.jetbrains.kotlin.config.CompilerConfiguration -import org.jetbrains.kotlin.config.JVMConfigurationKeys -import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate - -import java.lang.management.ManagementFactory - -class KotlinCompilerConfigurationFactory { - - static CompilerConfiguration create(String scriptDefinitionClassName, Collection classpath, MessageCollector messageCollector) { - def parentClassLoader = (URLClassLoader) Thread.currentThread().contextClassLoader - if (parentClassLoader == null) { - throw new RuntimeException("Unable to find current classloader") - } - - URL[] classpathUrls = parentClassLoader.getURLs() - - for (classpathUrl in classpathUrls) { - try { - classpath.add(new File(classpathUrl.toURI())) - } catch (ex) { - throw new RuntimeException("URL returned by ClassLoader is invalid", ex) - } - - } - - def runtimeBean = ManagementFactory.getRuntimeMXBean() - if (!runtimeBean.bootClassPathSupported) { - println("Warning! Boot class path is not supported, must be supplied on the command line") - } else { - def bootClasspath = runtimeBean.bootClassPath - classpath.addAll(bootClasspath.split(File.pathSeparatorChar.toString()).collect { new File(it) }) - } - - def classLoader = new URLClassLoader(classpath.collect { it.toURL() }.toArray(new URL[classpath.size()])) - def configuration = new CompilerConfiguration() - def scriptDefinitionClass = classLoader.loadClass(scriptDefinitionClassName) - - def scriptDefinition = new KotlinScriptDefinitionFromAnnotatedTemplate(JvmClassMappingKt.getKotlinClass(scriptDefinitionClass), - null, null, null, classpath.collect()) - - configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) - configuration.put(JVMConfigurationKeys.CONTENT_ROOTS, classpath.collect { new JvmClasspathRoot(it) }) - configuration.put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, false) - configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector) - configuration.copy() - - return configuration - } -} diff --git a/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptBinary.groovy b/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptBinary.groovy deleted file mode 100644 index 398ed251..00000000 --- a/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptBinary.groovy +++ /dev/null @@ -1,23 +0,0 @@ -package org.apollo.build.plugin.compiler - -import java.nio.file.Path - -class KotlinScriptBinaryArtifact { - final String relativePath - final byte[] data - - KotlinScriptBinaryArtifact(String relativePath, byte[] data) { - this.relativePath = relativePath - this.data = data - } -} - -class KotlinScriptBinary { - final String mainClassName - final List artifacts - - KotlinScriptBinary(String mainClassName, List artifacts) { - this.mainClassName = mainClassName - this.artifacts = artifacts - } -} diff --git a/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptBinaryArtifactRemapper.groovy b/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptBinaryArtifactRemapper.groovy deleted file mode 100644 index ffaae951..00000000 --- a/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptBinaryArtifactRemapper.groovy +++ /dev/null @@ -1,46 +0,0 @@ -package org.apollo.build.plugin.compiler - -import org.objectweb.asm.ClassReader -import org.objectweb.asm.ClassWriter -import org.objectweb.asm.commons.Remapper -import org.objectweb.asm.commons.RemappingClassAdapter -import org.objectweb.asm.tree.ClassNode - -class KotlinScriptBinaryArtifactRemapper { - final String originalSourceFileName - final String mainClassName - - KotlinScriptBinaryArtifactRemapper(String originalSourceFileName, String mainClassName) { - this.originalSourceFileName = originalSourceFileName - this.mainClassName = mainClassName - } - - KotlinScriptBinaryArtifact remapToPackage(KotlinScriptBinaryArtifact artifact, String packageName) { - def node = new ClassNode() - def writer = new ClassWriter(0) - def reader = new ClassReader(new ByteArrayInputStream(artifact.data)) - reader.accept(node, ClassReader.EXPAND_FRAMES) - - def normalizedPackageName = packageName.replace('.', '/') - def oldClassName = reader.getClassName() - def newClassName = artifact.relativePath.replace(oldClassName, "$normalizedPackageName/$oldClassName") - - def remapper = new Remapper() { - @Override - String map(String typeName) { - if (typeName.equals(mainClassName) || typeName.startsWith("$mainClassName\$")) { - return "$normalizedPackageName/$typeName" - } - - return super.map(typeName); - } - } - - def remappingAdapter = new RemappingClassAdapter(writer, remapper) - node.accept(remappingAdapter) - writer.visitSource(originalSourceFileName, null) - writer.visitEnd() - - return new KotlinScriptBinaryArtifact(newClassName, writer.toByteArray()) - } -} diff --git a/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptCompiler.groovy b/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptCompiler.groovy deleted file mode 100644 index 98a1716c..00000000 --- a/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptCompiler.groovy +++ /dev/null @@ -1,73 +0,0 @@ -package org.apollo.build.plugin.compiler - -import org.jetbrains.kotlin.cli.common.messages.MessageCollector -import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler -import org.jetbrains.kotlin.com.intellij.openapi.util.Disposer -import org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.java.PsiPackageStatementImpl -import org.jetbrains.kotlin.config.CommonConfigurationKeys -import org.jetbrains.kotlin.config.JVMConfigurationKeys -import org.jetbrains.kotlin.config.KotlinSourceRoot - -import java.nio.file.Path - -class KotlinScriptCompiler { - private String scriptDefinitionClass - private Collection classpath - private MessageCollector messageCollector - - KotlinScriptCompiler(String scriptDefinitionClass, Collection classpath, MessageCollector messageCollector) { - this.scriptDefinitionClass = scriptDefinitionClass - this.classpath = classpath - this.messageCollector = messageCollector - } - - KotlinScriptBinary compile(Path input) { - def compilerConfiguration = KotlinCompilerConfigurationFactory.create( - scriptDefinitionClass, - classpath, - messageCollector - ) - - def rootDisposable = Disposer.newDisposable() - def configuration = compilerConfiguration.copy() - - - configuration.put(CommonConfigurationKeys.MODULE_NAME, input.toString()) - configuration.add(JVMConfigurationKeys.CONTENT_ROOTS, new KotlinSourceRoot(input.toAbsolutePath().toString())) - - def configFiles = EnvironmentConfigFiles.JVM_CONFIG_FILES - def environment = KotlinCoreEnvironment.createForProduction(rootDisposable, configuration, configFiles) - - try { - def generationState = KotlinToJVMBytecodeCompiler.INSTANCE.analyzeAndGenerate(environment) - if (generationState == null) { - throw new KotlinScriptCompilerException("Failed to generate bytecode for kotlin script") - } - - def sourceFiles = environment.getSourceFiles() - def script = sourceFiles[0].script - - if (script == null) { - throw new KotlinScriptCompilerException("Main source file is not a script") - } - - def scriptFilePath = script.fqName.asString().replace('.', '/') + ".class" - def scriptFileClass = generationState.factory.get(scriptFilePath) - - if (scriptFileClass == null) { - throw new KotlinScriptCompilerException("Unable to find compiled plugin class file $scriptFilePath") - } - - def outputs = generationState.factory.asList() - def artifacts = outputs.collect { new KotlinScriptBinaryArtifact(it.relativePath, it.asByteArray()) } - - return new KotlinScriptBinary(script.fqName.asString(), artifacts) - } catch (ex) { - throw new KotlinScriptCompilerException("Compilation failed", ex) - } finally { - Disposer.dispose(rootDisposable) - } - } -} diff --git a/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptCompilerException.groovy b/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptCompilerException.groovy deleted file mode 100644 index ae899f48..00000000 --- a/buildSrc/src/main/groovy/org/apollo/build/plugin/compiler/KotlinScriptCompilerException.groovy +++ /dev/null @@ -1,11 +0,0 @@ -package org.apollo.build.plugin.compiler - -class KotlinScriptCompilerException extends Exception { - KotlinScriptCompilerException(String message) { - super(message) - } - - KotlinScriptCompilerException(String message, Throwable cause) { - super(message, cause) - } -} diff --git a/buildSrc/src/main/groovy/org/apollo/build/plugin/tasks/ApolloScriptCompileTask.groovy b/buildSrc/src/main/groovy/org/apollo/build/plugin/tasks/ApolloScriptCompileTask.groovy deleted file mode 100644 index df590410..00000000 --- a/buildSrc/src/main/groovy/org/apollo/build/plugin/tasks/ApolloScriptCompileTask.groovy +++ /dev/null @@ -1,84 +0,0 @@ -package org.apollo.build.plugin.tasks - -import org.apollo.build.plugin.ApolloPluginExtension -import org.apollo.build.plugin.compiler.KotlinScriptBinaryArtifactRemapper -import org.apollo.build.plugin.compiler.KotlinScriptCompiler -import org.gradle.api.DefaultTask -import org.gradle.api.file.FileCollection -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.OutputDirectory -import org.gradle.api.tasks.TaskAction -import org.gradle.api.tasks.incremental.IncrementalTaskInputs -import org.jetbrains.kotlin.cli.common.messages.MessageRenderer -import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector - -import java.nio.file.Files -import java.nio.file.StandardOpenOption - -class ApolloScriptCompileTask extends DefaultTask { - @OutputDirectory - File outputsDir - - @Input - FileCollection compileClasspath - - @Input - String scriptDefinitionClass - - @TaskAction - def execute(IncrementalTaskInputs inputs) { - def extension = getProject().getExtensions().getByType(ApolloPluginExtension.class); - def packageName = extension.packageName - - if (scriptDefinitionClass == null) { - throw new Exception("No script definition class given") - } - - if (compileClasspath == null) { - throw new Exception("No compile classpath given") - } - - def classpath = compileClasspath.files - def messageCollector = new PrintingMessageCollector(System.err, MessageRenderer.PLAIN_RELATIVE_PATHS, true); - def compiler = new KotlinScriptCompiler(scriptDefinitionClass, classpath, messageCollector) - - outputsDir.mkdirs() - - inputs.outOfDate { - removeBinariesFor(it.file) - - def binary = compiler.compile(it.file.toPath()) - def binaryArtifactRemapper = new KotlinScriptBinaryArtifactRemapper(it.file.name, binary.mainClassName) - def artifacts = binary.artifacts.collect { binaryArtifactRemapper.remapToPackage(it, packageName) } - - artifacts.each { - def artifactOutput = outputsDir.toPath().resolve(it.relativePath) - - Files.createDirectories(artifactOutput.getParent()) - Files.write(artifactOutput, it.data, - StandardOpenOption.CREATE, - StandardOpenOption.WRITE, - StandardOpenOption.TRUNCATE_EXISTING - ) - } - } - - inputs.removed { - removeBinariesFor(it.file) - } - } - - def removeBinariesFor(File file) { - def normalizedFilename = file.name.replace("[^A-Z_]", "_") - def normalizedPrefix = normalizedFilename.subSequence(0, normalizedFilename.lastIndexOf('.')) - - FileFilter filter = { - return it.name.startsWith(normalizedPrefix) - } - - def binaries = outputsDir.listFiles(filter) - binaries.each { - it.delete() - } - } -} diff --git a/game/build.gradle b/game/build.gradle index eae4f98f..cd8d5f70 100644 --- a/game/build.gradle +++ b/game/build.gradle @@ -33,7 +33,7 @@ dependencies { compile group: 'io.github.lukehutch', name: 'fast-classpath-scanner', version: '2.0.21' compile group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jre8', version: "$kotlinVersion" - compile group: 'org.jetbrains.kotlin', name: 'kotlin-compiler-embeddable', version: "$kotlinVersion" + compile group: 'org.jetbrains.kotlin', name: 'kotlin-script-runtime', version: "$kotlinVersion" compile group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-jdk8', version: '0.16' compile group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: '0.16' diff --git a/game/plugin/bank/build.gradle b/game/plugin/bank/build.gradle index ba8a32fa..a8166f04 100644 --- a/game/plugin/bank/build.gradle +++ b/game/plugin/bank/build.gradle @@ -1,6 +1,5 @@ plugin { name = "banking" - packageName = "org.apollo.game.plugin.banking" authors = [ "Major", ] diff --git a/game/plugin/cmd/build.gradle b/game/plugin/cmd/build.gradle index d7520c63..de1e006f 100644 --- a/game/plugin/cmd/build.gradle +++ b/game/plugin/cmd/build.gradle @@ -1,6 +1,5 @@ plugin { name = "chat_commands" - packageName = "org.apollo.game.plugin.cmd" authors = [ "Graham", "Major", diff --git a/game/plugin/consumables/build.gradle b/game/plugin/consumables/build.gradle index 97834d7f..6f5139fa 100644 --- a/game/plugin/consumables/build.gradle +++ b/game/plugin/consumables/build.gradle @@ -1,6 +1,5 @@ plugin { name = "consumables" - packageName = "org.apollo.game.plugin.consumables" authors = [ "Gary Tierney", ] diff --git a/game/plugin/dummy/build.gradle b/game/plugin/dummy/build.gradle index 23142dca..46f8224a 100644 --- a/game/plugin/dummy/build.gradle +++ b/game/plugin/dummy/build.gradle @@ -1,6 +1,5 @@ plugin { name = "training_dummy" - packageName = "org.apollo.game.plugin.entity" authors = [ "Gary Tierney", ] diff --git a/game/plugin/emote-tab/build.gradle b/game/plugin/emote-tab/build.gradle index d54c23e5..04160d86 100644 --- a/game/plugin/emote-tab/build.gradle +++ b/game/plugin/emote-tab/build.gradle @@ -1,6 +1,5 @@ plugin { name = "emote_tab" - packageName = "org.apollo.game.plugin.widget" authors = [ "Gary Tierney", ] diff --git a/game/plugin/entity/following/build.gradle b/game/plugin/entity/following/build.gradle index da73a832..7ebc73f9 100644 --- a/game/plugin/entity/following/build.gradle +++ b/game/plugin/entity/following/build.gradle @@ -1,6 +1,5 @@ plugin { name = "following" - packageName = "org.apollo.game.plugin.entity" authors = [ "Gary Tierney", ] diff --git a/game/plugin/entity/player-action/build.gradle b/game/plugin/entity/player-action/build.gradle index 264d895f..43f394f3 100644 --- a/game/plugin/entity/player-action/build.gradle +++ b/game/plugin/entity/player-action/build.gradle @@ -1,6 +1,5 @@ plugin { name = "player_action" - packageName = "org.apollo.game.plugin.entity" authors = [ "Gary Tierney", ] diff --git a/game/plugin/entity/spawn/build.gradle b/game/plugin/entity/spawn/build.gradle index e417db46..adc0d466 100644 --- a/game/plugin/entity/spawn/build.gradle +++ b/game/plugin/entity/spawn/build.gradle @@ -1,6 +1,5 @@ plugin { name = "spawning" - packageName = "org.apollo.game.plugin.entity" authors = [ "Gary Tierney", ] diff --git a/game/plugin/entity/walk-to/build.gradle b/game/plugin/entity/walk-to/build.gradle index 4f14b86f..13ca8949 100644 --- a/game/plugin/entity/walk-to/build.gradle +++ b/game/plugin/entity/walk-to/build.gradle @@ -1,6 +1,5 @@ plugin { name = "walkto" - packageName = "org.apollo.plugin.entity.walkto" authors = [ "Gary Tierney", ] diff --git a/game/plugin/locations/al-kharid/build.gradle b/game/plugin/locations/al-kharid/build.gradle index 8eb8ee02..a587f4fe 100644 --- a/game/plugin/locations/al-kharid/build.gradle +++ b/game/plugin/locations/al-kharid/build.gradle @@ -1,6 +1,5 @@ plugin { name = "al_kharid_npc_spawns" - packageName = "org.apollo.game.plugin.locations" authors = [ "Jesse W", ] diff --git a/game/plugin/locations/edgeville/build.gradle b/game/plugin/locations/edgeville/build.gradle index 663066a8..6c9023e3 100644 --- a/game/plugin/locations/edgeville/build.gradle +++ b/game/plugin/locations/edgeville/build.gradle @@ -1,6 +1,5 @@ plugin { name = "edgeville_npc_spawns" - packageName = "org.apollo.game.plugin.locations" authors = [ "Jesse W", ] diff --git a/game/plugin/locations/falador/build.gradle b/game/plugin/locations/falador/build.gradle index ffff3f04..c599f40c 100644 --- a/game/plugin/locations/falador/build.gradle +++ b/game/plugin/locations/falador/build.gradle @@ -1,6 +1,5 @@ plugin { name = "falador_npc_spawns" - packageName = "org.apollo.game.plugin.locations" authors = [ "Jesse W", ] diff --git a/game/plugin/locations/lumbridge/build.gradle b/game/plugin/locations/lumbridge/build.gradle index a85c254a..60f39625 100644 --- a/game/plugin/locations/lumbridge/build.gradle +++ b/game/plugin/locations/lumbridge/build.gradle @@ -1,6 +1,5 @@ plugin { name = "lumbridge_npc_spawns" - packageName = "org.apollo.game.plugin.locations" authors = [ "Gary Tierney", ] diff --git a/game/plugin/locations/tutorial-island/build.gradle b/game/plugin/locations/tutorial-island/build.gradle index 44c5e1a5..60631802 100644 --- a/game/plugin/locations/tutorial-island/build.gradle +++ b/game/plugin/locations/tutorial-island/build.gradle @@ -1,6 +1,5 @@ plugin { name = "tutorial_island_npc_spawns" - packageName = "org.apollo.game.plugin.locations" authors = [ "Jesse W", ] diff --git a/game/plugin/locations/varrock/build.gradle b/game/plugin/locations/varrock/build.gradle index 1443d085..f094b1bc 100644 --- a/game/plugin/locations/varrock/build.gradle +++ b/game/plugin/locations/varrock/build.gradle @@ -1,6 +1,5 @@ plugin { name = "varrock" - packageName = "org.apollo.game.plugin.locations.varrock" authors = [ "Jesse W", "Major", diff --git a/game/plugin/navigation/door/build.gradle b/game/plugin/navigation/door/build.gradle index 2d62d81f..8ac64215 100644 --- a/game/plugin/navigation/door/build.gradle +++ b/game/plugin/navigation/door/build.gradle @@ -1,7 +1,6 @@ plugin { name = "door" - packageName = "org.apollo.game.plugin.navigation.door" - dependencies = ["api"] + dependencies = ["api"] authors = [ "Shiver", "Arin" diff --git a/game/plugin/shops/build.gradle b/game/plugin/shops/build.gradle index 1147de62..2532af02 100644 --- a/game/plugin/shops/build.gradle +++ b/game/plugin/shops/build.gradle @@ -1,6 +1,5 @@ plugin { name = "shops" - packageName = "org.apollo.game.plugin.shops" authors = [ "Stuart", "Major", diff --git a/game/plugin/shops/src/dsl.kt b/game/plugin/shops/src/dsl.kt index 71365f66..7aba837b 100644 --- a/game/plugin/shops/src/dsl.kt +++ b/game/plugin/shops/src/dsl.kt @@ -4,7 +4,6 @@ import org.apollo.cache.def.NpcDefinition import org.apollo.game.plugin.shops.CategoryWrapper.Affix import org.apollo.game.plugin.util.lookup.lookup_item import org.apollo.game.plugin.util.lookup.lookup_npc -import org.jetbrains.kotlin.utils.keysToMap /** * Creates a [Shop]. @@ -16,7 +15,7 @@ fun shop(name: String, builder: ShopBuilder.() -> Unit) { builder(shop) val built = shop.build() - val operators = shop.operators().keysToMap { built } + val operators = shop.operators().map { it to built }.toMap() SHOPS.putAll(operators) } diff --git a/game/plugin/skills/fishing/build.gradle b/game/plugin/skills/fishing/build.gradle index 4e13f439..6f870b9d 100644 --- a/game/plugin/skills/fishing/build.gradle +++ b/game/plugin/skills/fishing/build.gradle @@ -1,6 +1,5 @@ plugin { name = "fishing_skill" - packageName = "org.apollo.game.plugin.skills.fishing" authors = [ "Linux", "Major", diff --git a/game/plugin/skills/mining/build.gradle b/game/plugin/skills/mining/build.gradle index 00a16537..c301b216 100644 --- a/game/plugin/skills/mining/build.gradle +++ b/game/plugin/skills/mining/build.gradle @@ -1,6 +1,5 @@ plugin { name = "mining-skill" - packageName = "org.apollo.game.plugin.skills.mining" authors = [ "Graham", "Mikey`", diff --git a/game/plugin/skills/runecrafting/build.gradle b/game/plugin/skills/runecrafting/build.gradle index 595add78..123631a8 100644 --- a/game/plugin/skills/runecrafting/build.gradle +++ b/game/plugin/skills/runecrafting/build.gradle @@ -1,6 +1,5 @@ plugin { name = "runecrafting-skill" - packageName = "org.apollo.game.plugin.skills.runecrafting" authors = [ "Major", "BugCrusher", diff --git a/game/plugin/skills/woodcutting/build.gradle b/game/plugin/skills/woodcutting/build.gradle index 0c154fb3..0da7a40d 100644 --- a/game/plugin/skills/woodcutting/build.gradle +++ b/game/plugin/skills/woodcutting/build.gradle @@ -1,6 +1,5 @@ plugin { name = "woodcutting_skill" - packageName = "org.apollo.game.plugin.skills.woodcutting" authors = [ "tlf30" ] diff --git a/game/plugin/util/command/build.gradle b/game/plugin/util/command/build.gradle index 58e59401..3648da32 100644 --- a/game/plugin/util/command/build.gradle +++ b/game/plugin/util/command/build.gradle @@ -1,4 +1,3 @@ plugin { name = "command_utilities" - packageName = "org.apollo.game.plugins.util" -} \ No newline at end of file + } \ No newline at end of file diff --git a/game/plugin/util/lookup/build.gradle b/game/plugin/util/lookup/build.gradle index e910e2fa..6c225ddf 100644 --- a/game/plugin/util/lookup/build.gradle +++ b/game/plugin/util/lookup/build.gradle @@ -1,4 +1,3 @@ plugin { name = "entity_lookup" - packageName = "org.apollo.game.plugins.util" -} \ No newline at end of file + } \ No newline at end of file diff --git a/game/src/main/java/org/apollo/game/plugin/KotlinPluginEnvironment.java b/game/src/main/java/org/apollo/game/plugin/KotlinPluginEnvironment.java index 853326aa..cc187cb1 100644 --- a/game/src/main/java/org/apollo/game/plugin/KotlinPluginEnvironment.java +++ b/game/src/main/java/org/apollo/game/plugin/KotlinPluginEnvironment.java @@ -1,29 +1,14 @@ package org.apollo.game.plugin; -import java.io.BufferedReader; -import java.io.File; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.lang.reflect.Constructor; -import java.net.URISyntaxException; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; -import java.util.stream.Collectors; - import io.github.lukehutch.fastclasspathscanner.FastClasspathScanner; -import io.github.lukehutch.fastclasspathscanner.scanner.ScanResult; import org.apollo.game.model.World; import org.apollo.game.plugin.kotlin.KotlinPluginScript; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation; -import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity; -import org.jetbrains.kotlin.cli.common.messages.MessageCollector; + +import java.lang.reflect.Constructor; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.logging.Logger; public class KotlinPluginEnvironment implements PluginEnvironment { diff --git a/properties.gradle b/properties.gradle index e19e24a2..d44cfccf 100644 --- a/properties.gradle +++ b/properties.gradle @@ -1,3 +1,3 @@ ext { - kotlinVersion = '1.1.4-3' + kotlinVersion = '1.2.31' } \ No newline at end of file