diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..9fecb912 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,42 @@ +name: Omaloon Build CI + +on: + push: + pull_request: + release: + types: + - created + +permissions: + contents: write + +jobs: + buildJar: + name: Build and Publish Jar + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: temurin + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + - name: Build mod artifact + run: | + chmod +x gradlew + ./gradlew clean dex + - name: Upload built mod artifact as a GitHub Action artifact + uses: actions/upload-artifact@v4 + if: github.event_name == 'push' || github.event_name == 'pull_request' + with: + name: Omaloon (zipped) + path: build/libs/Omaloon.jar + if-no-files-found: error + compression-level: 0 + - name: Upload built mod artifact into release + uses: softprops/action-gh-release@v2 + if: github.event_name == 'release' && github.event.action == 'created' + with: + files: build/libs/Omaloon.jar \ No newline at end of file diff --git a/.github/workflows/commit.yml b/.github/workflows/commit.yml deleted file mode 100644 index ca713486..00000000 --- a/.github/workflows/commit.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Omaloon Commit - -on: [push] - -jobs: - buildJar: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: Set up PATH - run: | - echo "${ANDROID_HOME}/build-tools/30.0.1" >> $GITHUB_PATH - - name: Set up JDK 17 - uses: actions/setup-java@v1 - with: - java-version: 17 - - name: Build mod jar - run: ./gradlew clean dex - - name: Upload built jar file - uses: actions/upload-artifact@v4 - with: - name: ${{ github.event.repository.name }} - path: build/libs/${{ github.event.repository.name }}.jar diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml deleted file mode 100644 index 1f190b22..00000000 --- a/.github/workflows/pr.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Omaloon Pull Request - -on: [pull_request] - -jobs: - buildJar: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: Set up PATH - run: | - echo "${ANDROID_HOME}/build-tools/30.0.1" >> $GITHUB_PATH - - name: Set up JDK 17 - uses: actions/setup-java@v1 - with: - java-version: 17 - - name: Build mod jar - run: ./gradlew clean dex - - name: Upload built jar file - uses: actions/upload-artifact@v4 - with: - name: ${{ github.event.repository.name }} Pull Request - path: build/libs/${{ github.event.repository.name }}.jar diff --git a/.gitignore b/.gitignore index 0369c8d4..d3d0d568 100644 --- a/.gitignore +++ b/.gitignore @@ -148,4 +148,7 @@ gradle-app.setting Thumbs.db android/libs/ /.run/*.run.xml -modsDirectories.txt \ No newline at end of file +modsDirectories.txt + +# Mindustry Client +/run/ \ No newline at end of file diff --git a/README.md b/README.md index 19838e62..31f498e0 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,9 @@ [![Download](https://img.shields.io/github/v/release/xStaBUx/Omaloon-mod-public?color=6aa84f&include_prereleases&label=Latest%20version&logo=github&logoColor=white&style=for-the-badge)](https://github.com/xStaBUx/Omaloon-mod-public/releases) [![Total Downloads](https://img.shields.io/github/downloads/xStaBUx/Omaloon-mod-public/total?color=7289da&label&logo=docusign&logoColor=white&style=for-the-badge)](https://github.com/xStaBUx/Omaloon-mod-public/releases) -An ambitious [Mindustry](https://github.com/Anuken/Mindustry) modification developed by stabu and uujuju. This mod aims to expand the game's standard campaign by adding a new star system. +> An ambitious [Mindustry](https://github.com/Anuken/Mindustry) mod +developed by [stabu](https://github.com/stabu-dev) and [uujuju](https://github.com/uujuju1). +Mod aimed at expanding a campaign by adding a new star system. ## Building from Source @@ -45,13 +47,9 @@ The built mod will be in the `build/libs` directory. To test the mod directly: ```bash -gradlew run -``` - -To install the mod to your Mindustry mods folder: -```bash -gradlew installJar +gradlew runClient ``` +This Mindustry client uses the `run` directory to store its data. ## Contributing @@ -62,12 +60,18 @@ gradlew installJar ### Feature Suggestions - Join our [Discord server](https://discord.gg/bNMT82Hswb) to suggest new content +- Provide examples and specific arguments why your suggestion should be added to Omaloon - The Issues section is reserved for bug reports only -### Balance Feedback -- Share your thoughts on content balancing in our Discord +### Game-play Feedback +- Share your thoughts on game-play and balancing in our Discord - Provide specific examples and reasoning for balance changes +### Pull Requests +- Improve Omaloon's code/sprites/localization and propose these changes to us by creating a [Pull Request](https://github.com/stabu-dev/Omaloon/pulls). +- Make sure your code works properly and doesn't cause any issues. +- Provide specific reasoning why your Pull Request should be accepted. + ## Credits ### Developers diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 98322657..00000000 --- a/build.gradle +++ /dev/null @@ -1,223 +0,0 @@ -import arc.files.* -import arc.util.* - -import java.util.regex.* - -buildscript{ - dependencies{ - classpath "com.github.Anuken.Arc:arc-core:$arcVersion" - } - - repositories{ - mavenCentral() - maven{url 'https://oss.sonatype.org/content/repositories/snapshots/'} - maven{url 'https://oss.sonatype.org/content/repositories/releases/'} - maven{url 'https://raw.githubusercontent.com/Zelaux/MindustryRepo/master/repository'} - maven{url 'https://jitpack.io'} - } -} - -plugins{ - // Register `EntityAnno` plugin, but only apply on `rootProject`. - id 'java' - id 'com.github.GlennFolker.EntityAnno' version "$entVersion" apply false -} - -configure(allprojects){ - sourceSets.main.java.srcDirs = [layout.projectDirectory.dir('src')] - - ext{ - compilerVersion = JavaVersion.current().ordinal() - JavaVersion.VERSION_17.ordinal() + 17 - useJitpack = Boolean.valueOf(mindustryBE) - - arc = {String module -> - return "com.github.Anuken.Arc$module:$arcVersion" - } - arcLibrary = {String module -> - return "com.github.Zelaux.ArcLibrary$module:$arcLibraryVersion" - } - mindustry = {String module -> - return "com.github.Anuken.Mindustry$module:$mindustryVersion" - } - } - - configurations.configureEach{ - // Resolve the correct Mindustry dependency, and force Arc version. - resolutionStrategy.eachDependency{ - if(useJitpack && requested.group == 'com.github.Anuken.Mindustry'){ - useTarget "com.github.Anuken.MindustryJitpack:$it.requested.name:$mindustryBEVersion" - } - - if(requested.group == 'com.github.Anuken.Arc'){ - useVersion arcVersion - } - } - } - - dependencies{ - // Downgrade Java 9+ syntax into being available in Java 8. - annotationProcessor "com.github.GlennFolker.EntityAnno:downgrader:$entVersion" - } - - repositories{ - // Necessary Maven repositories to pull dependencies from. - mavenCentral() - maven{url 'https://oss.sonatype.org/content/repositories/snapshots/'} - maven{url 'https://oss.sonatype.org/content/repositories/releases/'} - - // Use Zelaux's non-buggy repository for release Mindustry and Arc builds. - if(!useJitpack) maven{url 'https://raw.githubusercontent.com/Zelaux/MindustryRepo/master/repository'} - maven{url 'https://raw.githubusercontent.com/Zelaux/Repo/master/repository'}//for ArcLibrary - maven{url 'https://jitpack.io'} - } - - tasks.withType(JavaCompile).configureEach{ - // Use Java 17+ syntax, but target Java 8 bytecode version. - sourceCompatibility = compilerVersion - options.release.set 8 - options.compilerArgs << '-Xlint:-options' - - options.incremental = true - options.encoding = 'UTF-8' - } -} - -configure(rootProject){ - // Apply `EntityAnno` plugin to integrate the annotation processors. - apply plugin: 'com.github.GlennFolker.EntityAnno' - - entityAnno{ - modName = property('modName') - mindustryVersion = property(useJitpack ? 'mindustryBEVersion' : 'mindustryVersion') - isJitpack = useJitpack - revisionDir = layout.projectDirectory.dir('revisions').asFile - fetchPackage = modFetch - genSrcPackage = modGenSrc - genPackage = modGen - } - - dependencies{ - // Use the entity generation annotation processor. - compileOnly "com.github.GlennFolker.EntityAnno:entity:$entVersion" - kapt "com.github.GlennFolker.EntityAnno:entity:$entVersion" - - compileOnly "org.jetbrains:annotations:24.0.1" - - // Depend on Mindustry/Arc classpath. - compileOnly "${mindustry(':core')}" - compileOnly "${arc(':arc-core')}" - implementation "${arcLibrary(':graphics-draw3d')}" - implementation "${arcLibrary(':graphics-dashDraw')}" - implementation "${arcLibrary(':graphics-extendedDraw')}" - } - - jar{ - archiveFileName = "${modArtifact}Desktop.jar" - - from files(sourceSets.main.output.classesDirs) - from files(sourceSets.main.output.resourcesDir) - from configurations.runtimeClasspath.collect{it.isDirectory() ? it : zipTree(it)} - - from files(layout.projectDirectory.dir('assets')) - from(layout.projectDirectory){ - include 'mod.json' - include 'icon.png' - } - - doFirst{ - def name = Pattern - .compile('"name": "(.*)"') - .matcher(layout.projectDirectory.file('mod.json').asFile.text) - - if(name.find() && name.group(1) != modName){ - logger.log(LogLevel.WARN, "Mod name mismatch: '${name.group(1)}' (mod.json) != '$modName' (gradle.properties)") - } - } - } - - tasks.register('dex', Jar){ - inputs.files tasks.jar - archiveFileName = "${modArtifact}.jar" - - final def desktopJar = tasks.jar.archiveFile - final def dexJar = file("$temporaryDir/Dexed.jar") - - from zipTree(desktopJar), zipTree(dexJar) - doFirst{ - // Find Android SDK root. - def sdkRoot = file( - System.getenv('ANDROID_SDK_ROOT') ?: System.getenv('ANDROID_HOME') ?: - { throw new GradleException('Neither `ANDROID_SDK_ROOT` nor `ANDROID_HOME` is set') } - ) - - // Find `d8`. - def d8 = file("$sdkRoot/build-tools/$androidBuildVersion/d8") - if(!d8.exists()){ - throw new GradleException("Android SDK `build-tools;$androidBuildVersion` isn't installed or is corrupted") - } - - // Initialize a release build. - def input = desktopJar.get().asFile - def command = "$d8 --release --min-api $androidMinVersion --output $dexJar $input" - - // Include all compile and runtime classpath. - (configurations.compileClasspath.asList() + configurations.runtimeClasspath.asList()).forEach{ - if(it.exists()) command = "$command --classpath $it" - } - - // Include Android platform as library. - def androidJar = file("$sdkRoot/platforms/android-$androidSdkVersion/android.jar") - if(!androidJar.exists()){ - throw new GradleException("Android SDK `platforms;android-$androidSdkVersion` isn't installed or is corrupted") - } - - command = "$command --lib $androidJar" - if(OS.isWindows) command = "cmd /c $command" - - // Run `d8`. - logger.log(LogLevel.LIFECYCLE, 'Running `d8`.') - command.execute(null, layout.projectDirectory.asFile).waitForProcessOutput(System.out, System.err) - } - } -} - -tasks.register('installJar'){ - dependsOn tasks.jar - doLast{ - def folder = Fi.get(OS.getAppDataDirectoryString('Mindustry')).child('mods') - folder.mkdirs() - - folder.child(tasks.jar.archiveFileName.get()).delete() - folder.child(tasks.dex.archiveFileName.get()).delete() - - def jarOutput = new Fi(tasks.jar.archiveFile.get().asFile) - def dexOutput = new Fi(tasks.dex.archiveFile.get().asFile) - - if(!jarOutput.exists() && !dexOutput.exists()){ - logger.log(LogLevel.ERROR, 'Neither :jar nor :dex artifacts are found; run one of these tasks first.') - }else if(dexOutput.exists()){ - dexOutput.copyTo(folder) - logger.log(LogLevel.LIFECYCLE, "Copied :dex output to $folder.") - }else{ - jarOutput.copyTo(folder) - logger.log(LogLevel.LIFECYCLE, "Copied :jar output to $folder.") - } - } -} - -tasks.register('run'){ - dependsOn installJar - doLast{ - def gamePath = "${temporaryDir.absolutePath}\\Mindustry${mindustryVersion}.jar" - def gameUrl = mindustryVersion.startsWith("v") ? - "https://github.com/Anuken/Mindustry/releases/download/${mindustryVersion}/Mindustry.jar" : - "https://github.com/Anuken/MindustryBuilds/releases/download/${mindustryVersion}/Mindustry-BE-Desktop-${mindustryVersion}.jar" - def gameFile = new File(gamePath) - if (!gameFile.exists()) { - println "Downloading Mindustry ${mindustryVersion} from ${gameUrl} to ${gamePath}" - new URL(gameUrl).withInputStream{ i -> gameFile.withOutputStream{ it << i } } - println "Done" - } - javaexec{ classpath = files(gamePath) } - } -} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 00000000..5c7dc768 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,237 @@ +import arc.util.* +import arc.util.serialization.* +import de.undercouch.gradle.tasks.download.Download +import ent.* +import java.io.* + +buildscript{ + val arcVersion: String by project + val useJitpack = property("mindustryBE").toString().toBooleanStrict() + + dependencies{ + classpath("com.github.Anuken.Arc:arc-core:$arcVersion") + } + + repositories{ + if(!useJitpack) maven("https://raw.githubusercontent.com/Zelaux/MindustryRepo/master/repository") + maven("https://jitpack.io") + } +} + +plugins{ + java + id("de.undercouch.download") version "5.4.0" + id("com.github.GlennFolker.EntityAnno") apply false +} + +val arcVersion: String by project +val arcLibraryVersion: String by project +val mindustryVersion: String by project +val mindustryBEVersion: String by project +val entVersion: String by project + +val modName: String by project +val modArtifact: String by project +val modFetch: String by project +val modGenSrc: String by project +val modGen: String by project + +val androidSdkVersion: String by project +val androidBuildVersion: String by project +val androidMinVersion: String by project + +val useJitpack = property("mindustryBE").toString().toBooleanStrict() + +fun arc(module: String): String{ + return "com.github.Anuken.Arc$module:$arcVersion" +} + +fun arcLibrary(module: String):String{ + return "com.github.Zelaux.ArcLibrary$module:$arcLibraryVersion" +} + +fun mindustry(module: String): String{ + return "com.github.Anuken.Mindustry$module:$mindustryVersion" +} + +fun entity(module: String): String{ + return "com.github.GlennFolker.EntityAnno$module:$entVersion" +} + +allprojects{ + apply(plugin = "java") + sourceSets["main"].java.setSrcDirs(listOf(layout.projectDirectory.dir("src"))) + + configurations.configureEach{ + // Resolve the correct Mindustry dependency, and force Arc version. + resolutionStrategy.eachDependency{ + if(useJitpack && requested.group == "com.github.Anuken.Mindustry"){ + useTarget("com.github.Anuken.MindustryJitpack:${requested.module.name}:$mindustryBEVersion") + }else if(requested.group == "com.github.Anuken.Arc"){ + useVersion(arcVersion) + } + } + } + + dependencies{ + // Downgrade Java 9+ syntax into being available in Java 8. + annotationProcessor(entity(":downgrader")) + } + + repositories{ + // Necessary Maven repositories to pull dependencies from. + mavenCentral() + maven("https://oss.sonatype.org/content/repositories/snapshots/") + maven("https://oss.sonatype.org/content/repositories/releases/") + maven("https://raw.githubusercontent.com/GlennFolker/EntityAnnoMaven/main") + + // Use Zelaux's non-buggy repository for release Mindustry and Arc builds. + if(!useJitpack) maven("https://raw.githubusercontent.com/Zelaux/MindustryRepo/master/repository") + maven("https://raw.githubusercontent.com/Zelaux/Repo/master/repository")//for ArcLibrary + maven("https://jitpack.io") + } + + tasks.withType().configureEach{ + // Use Java 17+ syntax, but target Java 8 bytecode version. + sourceCompatibility = "17" + options.apply{ + release = 8 + compilerArgs.add("-Xlint:-options") + + isIncremental = true + encoding = "UTF-8" + } + } +} + +project(":"){ + apply(plugin = "com.github.GlennFolker.EntityAnno") + configure{ + modName = project.properties["modName"].toString() + mindustryVersion = project.properties[if(useJitpack) "mindustryBEVersion" else "mindustryVersion"].toString() + isJitpack = useJitpack + revisionDir = layout.projectDirectory.dir("revisions").asFile + fetchPackage = modFetch + genSrcPackage = modGenSrc + genPackage = modGen + } + + dependencies{ + // Use the entity generation annotation processor. + compileOnly(entity(":entity")) + add("kapt", entity(":entity")) + + compileOnly("org.jetbrains:annotations:24.0.1") + + compileOnly(mindustry(":core")) + compileOnly(arc(":arc-core")) + implementation(arcLibrary(":graphics-draw3d")) + implementation(arcLibrary(":graphics-dashDraw")) + implementation(arcLibrary(":graphics-extendedDraw")) + } + + val jar = tasks.named("jar"){ + archiveFileName = "${modArtifact}Desktop.jar" + + val meta = layout.projectDirectory.file("$temporaryDir/mod.json") + from( + files(sourceSets["main"].output.classesDirs), + files(sourceSets["main"].output.resourcesDir), + configurations.runtimeClasspath.map{conf -> conf.map{if(it.isDirectory) it else zipTree(it)}}, + + files(layout.projectDirectory.dir("assets")), + layout.projectDirectory.file("icon.png"), + meta + ) + + metaInf.from(layout.projectDirectory.file("LICENSE")) + doFirst{ + // Deliberately check if the mod meta is actually written in HJSON, since, well, some people actually use + // it. But this is also not mentioned in the `README.md`, for the mischievous reason of driving beginners + // into using JSON instead. + val metaJson = layout.projectDirectory.file("mod.json") + val metaHjson = layout.projectDirectory.file("mod.hjson") + + if(metaJson.asFile.exists() && metaHjson.asFile.exists()){ + throw IllegalStateException("Ambiguous mod meta: both `mod.json` and `mod.hjson` exist.") + }else if(!metaJson.asFile.exists() && !metaHjson.asFile.exists()){ + throw IllegalStateException("Missing mod meta: neither `mod.json` nor `mod.hjson` exist.") + } + + val isJson = metaJson.asFile.exists() + val map = (if(isJson) metaJson else metaHjson).asFile + .reader(Charsets.UTF_8) + .use{Jval.read(it)} + + map.put("name", modName) + meta.asFile.writer(Charsets.UTF_8).use{file -> BufferedWriter(file).use{map.writeTo(it, Jval.Jformat.formatted)}} + } + } + + tasks.register("dex"){ + inputs.files(jar) + archiveFileName = "$modArtifact.jar" + + val desktopJar = jar.flatMap{it.archiveFile} + val dexJar = File(temporaryDir, "Dex.jar") + + from(zipTree(desktopJar), zipTree(dexJar)) + doFirst{ + logger.lifecycle("Running `d8`.") + providers.exec{ + // Find Android SDK root. + val sdkRoot = File( + OS.env("ANDROID_SDK_ROOT") ?: OS.env("ANDROID_HOME") ?: + throw IllegalStateException("Neither `ANDROID_SDK_ROOT` nor `ANDROID_HOME` is set.") + ) + + // Find `d8`. + val d8 = File(sdkRoot, "build-tools/$androidBuildVersion/${if(OS.isWindows) "d8.bat" else "d8"}") + if(!d8.exists()) throw IllegalStateException("Android SDK `build-tools;$androidBuildVersion` isn't installed or is corrupted") + + // Initialize a release build. + val input = desktopJar.get().asFile + val command = arrayListOf("$d8", "--release", "--min-api", androidMinVersion, "--output", "$dexJar", "$input") + + // Include all compile and runtime classpath. + (configurations.compileClasspath.get().toList() + configurations.runtimeClasspath.get().toList()).forEach{ + if(it.exists()) command.addAll(arrayOf("--classpath", it.path)) + } + + // Include Android platform as library. + val androidJar = File(sdkRoot, "platforms/android-$androidSdkVersion/android.jar") + if(!androidJar.exists()) throw IllegalStateException("Android SDK `platforms;android-$androidSdkVersion` isn't installed or is corrupted") + + command.addAll(arrayOf("--lib", "$androidJar")) + if(OS.isWindows) command.addAll(0, arrayOf("cmd", "/c").toList()) + + // Run `d8`. + commandLine(command) + }.result.get().rethrowFailure() + } + } + + tasks.register("fetchClient") { + src("https://github.com/Anuken/Mindustry/releases/download/$mindustryVersion/Mindustry.jar") + dest(file("$rootDir/run/Mindustry.jar")) + overwrite(false) + } + + tasks.register("runClient") { + dependsOn("fetchClient") + dependsOn("jar") + + val modFilename = "${project.name}Desktop.jar" + doFirst { + copy { + from("$rootDir/build/libs/$modFilename") + into("$rootDir/run/mods") + rename { modFilename } + } + } + + environment("MINDUSTRY_DATA_DIR", "$rootDir/run") + classpath(files("$rootDir/run/Mindustry.jar")) + mainClass.set("mindustry.desktop.DesktopLauncher") + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 7c240f48..8e93fe38 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,7 +13,7 @@ modArtifact = Omaloon # EntityAnno version, for integrating syntax-downgrader and entity annotation processor. # The exact version you need should be looked up on the project's `README.md` # (see https://github.com/GlennFolker/EntityAnno?tab=readme-ov-file#version-compatibility). -entVersion = v146.0.8 +entVersion = v146.0.10 # Set to `true` if the mod is compiled against Mindustry bleeding-edge build. # See documents on `mindustryVersion` and `mindustryBEVersion`. mindustryBE = false @@ -23,16 +23,16 @@ mindustryVersion = v146 # Mindustry *bleeding-edge* version, corresponds to commit hashes of Anuken/MindustryJitpack, e.g. `345ea0d54de0aee6953a664468556f4fea1a7c4f`. # Leave empty if `mindustryBE = false`. mindustryBEVersion = -# Arc version, should either follow `mindustryVersion` for release or whatever hash bleeding-edge Mindustry uses. +# Arc version should either follow `mindustryVersion` for release or whatever hash bleeding-edge Mindustry uses. arcVersion = v146 # Arc library version, has some things that omaloon needs -arcLibraryVersion = v1.0.5.1 +arcLibraryVersion = v1.0.7 ##### Android SDK configuration for building Android artifacts. # Android platform SDK version. -androidSdkVersion = 34 +androidSdkVersion = 35 # Android build-tools version. -androidBuildVersion = 34.0.0 +androidBuildVersion = 35.0.0 # Android platform minimum API version. Should be left as 14, as that's what Mindustry officially supports. androidMinVersion = 14 diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index d556a4a1..00000000 --- a/settings.gradle +++ /dev/null @@ -1,13 +0,0 @@ -pluginManagement{ - repositories{ - gradlePluginPortal() - maven{url 'https://jitpack.io'} - } -} - -if(JavaVersion.current().ordinal() < JavaVersion.VERSION_17.ordinal()){ - throw new GradleException("JDK 17 is a required minimum version. Yours: ${System.getProperty('java.version')}") -} - -rootProject.name = 'Omaloon' - diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 00000000..b1b496b3 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,18 @@ +pluginManagement{ + repositories{ + gradlePluginPortal() + maven("https://raw.githubusercontent.com/GlennFolker/EntityAnnoMaven/main") + } + + plugins{ + val entVersion: String by settings + id("com.github.GlennFolker.EntityAnno") version(entVersion) + } +} + +if(JavaVersion.current().ordinal < JavaVersion.VERSION_17.ordinal){ + throw IllegalStateException("JDK 17 is a required minimum version. Yours: ${System.getProperty("java.version")}") +} + +val modName: String by settings +rootProject.name = modName \ No newline at end of file diff --git a/src/omaloon/utils/OlUtils.java b/src/omaloon/utils/OlUtils.java index 6d26bc9e..bec2ea64 100644 --- a/src/omaloon/utils/OlUtils.java +++ b/src/omaloon/utils/OlUtils.java @@ -3,8 +3,8 @@ import arc.func.*; import arc.graphics.g2d.*; import arc.struct.*; -import mindustry.type.Item; -import omaloon.ui.MultiItemData; +import mindustry.type.*; +import omaloon.ui.*; import org.jetbrains.annotations.*; import static arc.Core.*;