diff --git a/build.gradle.kts b/build.gradle.kts index 110f2dc535..caa2179526 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -69,6 +69,8 @@ configurations { } } +sourceSets.create("launcher") + dependencies { // Fabric minecraft(libs.minecraft) @@ -100,6 +102,16 @@ dependencies { jij(libs.waybackauthlib) } +sourceSets { + val launcher = getByName("launcher") + + launcher.apply { + java { + srcDir("src/launcher/java") + } + } +} + // Handle transitive dependencies for jar-in-jar // Based on implementation from BaseProject by FlorianMichael/EnZaXD // Source: https://github.com/FlorianMichael/BaseProject/blob/main/src/main/kotlin/de/florianmichael/baseproject/Fabric.kt @@ -113,7 +125,6 @@ afterEvaluate { "jsr305" // Compile time annotations only ) - jijConfig.incoming.resolutionResult.allDependencies.forEach { dep -> val requested = dep.requested.displayName @@ -135,12 +146,6 @@ loom { accessWidenerPath = file("src/main/resources/meteor-client.accesswidener") } -afterEvaluate { - tasks.migrateMappings.configure { - outputDir.set(project.file("src/main/java")) - } -} - tasks { processResources { val buildNumber = project.findProperty("build_number")?.toString() ?: "" @@ -160,6 +165,13 @@ tasks { } } + // Compile launcher with Java 8 for backwards compatibility + getByName("compileLauncherJava") { + sourceCompatibility = JavaVersion.VERSION_1_8.toString() + targetCompatibility = JavaVersion.VERSION_1_8.toString() + options.compilerArgs.add("-Xlint:-options") + } + jar { inputs.property("archivesName", project.base.archivesName.get()) @@ -167,9 +179,10 @@ tasks { rename { "${it}_${inputs.properties["archivesName"]}" } } - // Launch sub project - dependsOn(":launch:compileJava") - from(project(":launch").layout.buildDirectory.dir("classes/java/main")) + // Include launcher classes + val launcher = sourceSets.getByName("launcher") + from(launcher.output.classesDirs) + from(launcher.output.resourcesDir) manifest { attributes["Main-Class"] = "meteordevelopment.meteorclient.Main" @@ -187,7 +200,6 @@ tasks { } withType { - options.release = 21 options.compilerArgs.add("-Xlint:deprecation") options.compilerArgs.add("-Xlint:unchecked") } diff --git a/launch/build.gradle.kts b/launch/build.gradle.kts deleted file mode 100644 index 27b1651a09..0000000000 --- a/launch/build.gradle.kts +++ /dev/null @@ -1,13 +0,0 @@ -plugins { - id("java") -} - -group = "meteordevelopment" -version = "0.1.0" - -tasks { - withType { - options.release = 8 - options.compilerArgs.add("-Xlint:-options") // Suppress Java 8 deprecation warnings - } -} diff --git a/settings.gradle.kts b/settings.gradle.kts index c9d5e44e8a..48aa4436df 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -10,5 +10,3 @@ pluginManagement { } rootProject.name = "meteor-client" - -include("launch") diff --git a/launch/src/main/java/meteordevelopment/meteorclient/Main.java b/src/launcher/java/meteordevelopment/meteorclient/Main.java similarity index 66% rename from launch/src/main/java/meteordevelopment/meteorclient/Main.java rename to src/launcher/java/meteordevelopment/meteorclient/Main.java index 868c666f68..14117e8e67 100644 --- a/launch/src/main/java/meteordevelopment/meteorclient/Main.java +++ b/src/launcher/java/meteordevelopment/meteorclient/Main.java @@ -19,40 +19,45 @@ public static void main(String[] args) throws UnsupportedLookAndFeelException, C UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); int option = JOptionPane.showOptionDialog( - null, - "To install Meteor Client you need to put it in your mods folder and run Fabric for latest Minecraft version.", - "Meteor Client", - JOptionPane.YES_NO_OPTION, - JOptionPane.ERROR_MESSAGE, - null, - new String[] { "Open Wiki", "Open Mods Folder" }, - null + null, + "To install Meteor Client you need to put it in your mods folder and run Fabric for latest Minecraft version.", + "Meteor Client", + JOptionPane.YES_NO_OPTION, + JOptionPane.ERROR_MESSAGE, + null, + new String[]{"Open Wiki", "Open Mods Folder"}, + null ); switch (option) { - case 0: getOS().open("https://meteorclient.com/faq/installation"); break; + case 0: + getOS().open("https://meteorclient.com/faq/installation"); + break; case 1: { - String path; - - switch (getOS()) { - case WINDOWS: path = System.getenv("AppData") + "/.minecraft/mods"; break; - case OSX: path = System.getProperty("user.home") + "/Library/Application Support/minecraft/mods"; break; - default: path = System.getProperty("user.home") + "/.minecraft"; break; - } - - File mods = new File(path); + File mods = new File(getModsFolder()); if (!mods.exists()) mods.mkdirs(); - getOS().open(mods); break; } } } + private static String getModsFolder() { + String userHome = System.getProperty("user.home"); + switch (getOS()) { + case WINDOWS: + return System.getenv("AppData") + "/.minecraft/mods"; + case OSX: + return userHome + "/Library/Application Support/minecraft/mods"; + default: + return userHome + "/.minecraft/mods"; + } + } + private static OperatingSystem getOS() { String os = System.getProperty("os.name").toLowerCase(Locale.ROOT); - if (os.contains("linux") || os.contains("unix")) return OperatingSystem.LINUX; + if (os.contains("linux") || os.contains("unix")) return OperatingSystem.LINUX; if (os.contains("mac")) return OperatingSystem.OSX; if (os.contains("win")) return OperatingSystem.WINDOWS; @@ -64,13 +69,13 @@ private enum OperatingSystem { WINDOWS { @Override protected String[] getURLOpenCommand(URL url) { - return new String[] { "rundll32", "url.dll,FileProtocolHandler", url.toString() }; + return new String[]{"rundll32", "url.dll,FileProtocolHandler", url.toString()}; } }, OSX { @Override protected String[] getURLOpenCommand(URL url) { - return new String[] { "open", url.toString() }; + return new String[]{"open", url.toString()}; } }, UNKNOWN; @@ -106,7 +111,7 @@ protected String[] getURLOpenCommand(URL url) { string = string.replace("file:", "file://"); } - return new String[] { "xdg-open", string }; + return new String[]{"xdg-open", string}; } } }