From be9968c345281cf59fc92fea3ce3802aff9797a6 Mon Sep 17 00:00:00 2001 From: Britakee <127439938+realBritakee@users.noreply.github.com> Date: Tue, 17 Feb 2026 19:21:10 +0100 Subject: [PATCH] Switch to Groovy DSL; add runServer task Migrate the project from Gradle Kotlin DSL to Groovy DSL: update README to reference build.gradle/settings.gradle and change code blocks to Groovy. Remove build.gradle.kts. Add runServerJar and runServer tasks in build.gradle that depend on shadowJar and launch the Hytale server (uses hytaleHome paths, assets, and optional user mods). Bump plugin manifest version to 0.0.3 and set a concrete ServerVersion string. Fixed some issues. --- README.md | 20 ++++---- build.gradle | 27 ++++++++++ build.gradle.kts | 87 -------------------------------- src/main/resources/manifest.json | 4 +- 4 files changed, 39 insertions(+), 99 deletions(-) delete mode 100644 build.gradle.kts diff --git a/README.md b/README.md index 5ec290c..0eae348 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ A minimal, ready-to-use template for creating Hytale plugins with modern build t ## Features -✅ **Modern Build System** - Gradle with Kotlin DSL +✅ **Modern Build System** - Gradle with Groovy DSL ✅ **Automated Testing** - Custom Gradle plugin for one-command server testing ✅ **Java 25** - Latest Java features ✅ **ShadowJar** - Automatic dependency bundling @@ -51,9 +51,9 @@ Your plugin JAR will be in: `build/libs/TemplatePlugin-1.0.0.jar` When ready to customize, edit these files: -**`settings.gradle.kts`:** +**`settings.gradle`:** -```kotlin +```groovy rootProject.name = "your-plugin-name" ``` @@ -139,9 +139,9 @@ TemplatePlugin/ │ └── resources/ │ └── manifest.json # Plugin metadata ├── .gitignore # Git ignore rules -├── build.gradle.kts # Build configuration +├── build.gradle # Build configuration ├── gradle.properties # Project properties -├── settings.gradle.kts # Project settings +├── settings.gradle # Project settings ├── LICENSE # MIT License └── README.md # This file ``` @@ -200,9 +200,9 @@ rm -rf run/ ### Adding Dependencies -Edit `build.gradle.kts`: +Edit `build.gradle`: -```kotlin +```groovy dependencies { // Hytale API (provided by server) compileOnly(files("./HytaleServer.jar")) @@ -221,9 +221,9 @@ dependencies { **Usage:** -Edit `build.gradle.kts`: +Edit `build.gradle`: -```kotlin +```groovy runHytale { jarUrl = "url to hytale server jar" } @@ -322,7 +322,7 @@ GitHub Actions will automatically build and create a release with your plugin JA ### Server Won't Start -1. Check that `jarUrl` in `build.gradle.kts` is correct +1. Check that `jarUrl` in `build.gradle` is correct 2. Verify Java 25 is installed: `java -version` 3. Check logs in `run/logs/` diff --git a/build.gradle b/build.gradle index 1356cdf..ad87ae3 100644 --- a/build.gradle +++ b/build.gradle @@ -121,6 +121,33 @@ if (hasHytaleHome) { return programParameters } + def serverJar = file("$hytaleHome/install/$patchline/package/game/latest/Server/HytaleServer.jar") + def assetsZip = file("$hytaleHome/install/$patchline/package/game/latest/Assets.zip") + def shadowJarTask = tasks.named('shadowJar') + + tasks.register('runServerJar', JavaExec) { + dependsOn shadowJarTask + mainClass = 'com.hypixel.hytale.Main' + classpath = files(serverJar) + workingDir = serverRunDir.absolutePath + doFirst { + def modPaths = [shadowJarTask.get().archiveFile.get().asFile.absolutePath] + if (load_user_mods.toBoolean()) { + modPaths << "${hytaleHome}/UserData/Mods" + } + setArgs([ + '--allow-op', + '--disable-sentry', + "--assets=${assetsZip}", + "--mods=${modPaths.join(',')}" + ]) + } + } + + tasks.register('runServer') { + dependsOn 'runServerJar' + } + // Creates a run configuration in IDEA that will run the Hytale server with // your plugin and the default assets. idea.project.settings.runConfigurations { diff --git a/build.gradle.kts b/build.gradle.kts deleted file mode 100644 index 372dbb0..0000000 --- a/build.gradle.kts +++ /dev/null @@ -1,87 +0,0 @@ -plugins { - id("java-library") - id("com.gradleup.shadow") version "9.3.1" - id("run-hytale") -} - -group = findProperty("pluginGroup") as String? ?: "com.example" -version = findProperty("pluginVersion") as String? ?: "1.0.0" -description = findProperty("pluginDescription") as String? ?: "A Hytale plugin template" - -repositories { - mavenLocal() - mavenCentral() -} - -dependencies { - // Hytale Server API (provided by server at runtime) - compileOnly(files("./libs/HytaleServer.jar")) - - // Common dependencies (will be bundled in JAR) - implementation("com.google.code.gson:gson:2.10.1") - implementation("org.jetbrains:annotations:24.1.0") - - // Test dependencies - testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") - testRuntimeOnly("org.junit.platform:junit-platform-launcher") -} - -// Configure server testing -runHytale { - jarUrl = "./libs/HytaleServer.jar" - assetsPath = "./libs/Assets.zip" -} - -tasks { - // Configure Java compilation - compileJava { - options.encoding = Charsets.UTF_8.name() - options.release = 25 - } - - // Configure resource processing - processResources { - filteringCharset = Charsets.UTF_8.name() - - // Replace placeholders in manifest.json - val props = mapOf( - "group" to project.group, - "version" to project.version, - "description" to project.description - ) - inputs.properties(props) - - filesMatching("manifest.json") { - expand(props) - } - } - - // Configure ShadowJar (bundle dependencies) - shadowJar { - archiveBaseName.set(rootProject.name) - archiveClassifier.set("") - - // Relocate dependencies to avoid conflicts - relocate("com.google.gson", "com.yourplugin.libs.gson") - - // Minimize JAR size (removes unused classes) - minimize() - } - - // Configure tests - test { - useJUnitPlatform() - } - - // Make build depend on shadowJar - build { - dependsOn(shadowJar) - } -} - -// Configure Java toolchain -java { - toolchain { - languageVersion.set(JavaLanguageVersion.of(25)) - } -} diff --git a/src/main/resources/manifest.json b/src/main/resources/manifest.json index 169a0cc..5c8357c 100644 --- a/src/main/resources/manifest.json +++ b/src/main/resources/manifest.json @@ -1,7 +1,7 @@ { "Group": "Example", "Name": "ExamplePlugin", - "Version": "0.0.2", + "Version": "0.0.3", "Description": "An example plugin for HyTale!", "Authors": [ { @@ -9,7 +9,7 @@ } ], "Website": "example.org", - "ServerVersion": "*", + "ServerVersion": "2026.02.17-255364b8e", "Dependencies": { },