plugins { id 'java' id 'org.jetbrains.kotlin.jvm' version '1.4.10' } version 'unspecified' targetCompatibility = 1.8 sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' implementation(rootProject.project("client")) compile 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10' } test { useJUnitPlatform() } task initializeNewJavaPlugin { doLast { def pluginFile = new File("src/main/java/MyPlugin") pluginFile.mkdirs() new File(rootProject.project("plugin-playground").projectDir.absolutePath + File.separator + "src/main/java/MyPlugin/plugin.properties").text = """ AUTHOR='Me' DESCRIPTION='Make sure to rename both the MyPlugin folder and the package statement in plugin.java! VERSION=-1.1 """ new File(rootProject.project("plugin-playground").projectDir.absolutePath + File.separator + "src/main/java/MyPlugin/plugin.java").text = """ package MyPlugin; import plugin.Plugin; public class plugin extends Plugin { @Override public void Init() { //Init() is called when the plugin is loaded } @Override public void Update() { //Update() is called once per tick (600ms) } @Override public void Draw(long deltaTime) { //Draw() is called once per frame, with deltaTime being the time since last frame. } //Check the source of plugin.Plugin for more methods you can override! Happy hacking! <3 //There are also many methods to aid in plugin development in plugin.api.API } """ } } task initializeNewKotlinPlugin { doLast { def pluginFile = new File("src/main/kotlin/MyPlugin") pluginFile.mkdirs() new File(rootProject.project("plugin-playground").projectDir.absolutePath + File.separator + "src/main/kotlin/MyPlugin/plugin.properties").text = """ AUTHOR='Me' DESCRIPTION='Make sure to rename both the MyPlugin folder and the package statement in plugin.java! VERSION=1.0 """ new File(rootProject.project("plugin-playground").projectDir.absolutePath + File.separator + "src/main/kotlin/MyPlugin/plugin.kt").text = """ package MyPlugin import plugin.Plugin class plugin : Plugin() { override fun Init() { //Init() is called when the plugin is loaded } override fun Update() { //Update() is called once per tick (600ms) } override fun Draw(deltaTime: Long) { //Draw() is called once per frame, with deltaTime being the time since last frame. } //Check the source of plugin.Plugin for more methods you can override! Happy hacking! <3 //There are also many methods to aid in plugin development in plugin.api.API } """ } } task buildPlugins(type: Copy, dependsOn: classes) { def pluginsPath = rootProject.project("client").projectDir.absolutePath + File.separator + "plugins" copy { from(layout.projectDirectory.dir("src/main/java")) from (layout.projectDirectory.dir("src/main/kotlin")) include("**/*.properties") into pluginsPath } copy { from "build/classes/java/main" from "build/classes/kotlin/main" into pluginsPath } // Find and copy any 'res' directories from 'src/main/kotlin/**/res/' copy { from fileTree(dir: "src/main/kotlin", include: "**/res/**") into pluginsPath } }