From 840fd7f2cff8d0702d7cf391d3c0dd64124821cf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 25 Sep 2025 08:59:33 +0000 Subject: [PATCH 1/6] Initial plan From a6aa16824b4beee934b1cf4391f01e66b8d958e8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 25 Sep 2025 09:05:22 +0000 Subject: [PATCH 2/6] Refactor build.gradle.kts to use Kotlin DSL-friendly property access Co-authored-by: Meatwo310 <72017364+Meatwo310@users.noreply.github.com> --- build.gradle.kts | 86 +++++++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 41 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index daed18d..f6c5c9f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,26 +12,30 @@ plugins { id("org.spongepowered.mixin") version "0.7.+" } -val mod_version: String by project -val mod_group_id: String by project -val mod_id: String by project -val minecraft_version: String by project -val minecraft_version_range: String by project -val mapping_channel: String by project -val mapping_version: String by project -val forge_version: String by project -val forge_version_range: String by project -val loader_version_range: String by project -val mod_name: String by project -val mod_license: String by project -val mod_authors: String by project -val mod_description: String by project - -version = "v$mod_version" -group = mod_group_id +// Kotlin DSL-friendly property accessor +fun Project.prop(name: String): String = findProperty(name) as? String ?: error("Property '$name' not found") + +// Extension properties for cleaner access to gradle.properties +val Project.modVersion get() = prop("mod_version") +val Project.modGroupId get() = prop("mod_group_id") +val Project.modId get() = prop("mod_id") +val Project.minecraftVersion get() = prop("minecraft_version") +val Project.minecraftVersionRange get() = prop("minecraft_version_range") +val Project.mappingChannel get() = prop("mapping_channel") +val Project.mappingVersion get() = prop("mapping_version") +val Project.forgeVersion get() = prop("forge_version") +val Project.forgeVersionRange get() = prop("forge_version_range") +val Project.loaderVersionRange get() = prop("loader_version_range") +val Project.modName get() = prop("mod_name") +val Project.modLicense get() = prop("mod_license") +val Project.modAuthors get() = prop("mod_authors") +val Project.modDescription get() = prop("mod_description") + +version = "v$modVersion" +group = modGroupId base { - archivesName.set("$mod_id-forge-$minecraft_version") + archivesName.set("$modId-forge-$minecraftVersion") } java.toolchain.languageVersion.set(JavaLanguageVersion.of(17)) @@ -39,7 +43,7 @@ java.toolchain.languageVersion.set(JavaLanguageVersion.of(17)) println("Java: ${System.getProperty("java.version")}, JVM: ${System.getProperty("java.vm.version")} (${System.getProperty("java.vendor")}), Arch: ${System.getProperty("os.arch")}") minecraft { - mappings(mapping_channel, mapping_version) + mappings(mappingChannel, mappingVersion) copyIdeResources.set(true) // accessTransformer(file("src/main/resources/META-INF/accesstransformer.cfg")) @@ -48,7 +52,7 @@ minecraft { property("forge.logging.markers", "REGISTRIES") property("forge.logging.console.level", "debug") - mods.create(mod_id) { + mods.create(modId) { source(sourceSets.main.get()) } @@ -58,23 +62,23 @@ minecraft { runs { create("client") { - property("forge.enabledGameTestNamespaces", mod_id) + property("forge.enabledGameTestNamespaces", modId) } create("server") { workingDirectory(project.file("run-server")) - property("forge.enabledGameTestNamespaces", mod_id) + property("forge.enabledGameTestNamespaces", modId) args("--nogui") } create("gameTestServer") { workingDirectory(project.file("run-server")) - property("forge.enabledGameTestNamespaces", mod_id) + property("forge.enabledGameTestNamespaces", modId) } create("data") { workingDirectory(project.file("run-data")) - args("--mod", mod_id, "--all", "--output", file("src/generated/resources/"), "--existing", file("src/main/resources/")) + args("--mod", modId, "--all", "--output", file("src/generated/resources/"), "--existing", file("src/main/resources/")) } } } @@ -117,7 +121,7 @@ repositories { } dependencies { - minecraft("net.minecraftforge:forge:$minecraft_version-$forge_version") + minecraft("net.minecraftforge:forge:$minecraftVersion-$forgeVersion") annotationProcessor("org.spongepowered:mixin:0.8.5:processor") // // Mixin Extras @@ -135,23 +139,23 @@ dependencies { } mixin { - add(sourceSets.main.get(), "$mod_id.refmap.json") - config("$mod_id.mixins.json") + add(sourceSets.main.get(), "$modId.refmap.json") + config("$modId.mixins.json") } tasks.named("processResources") { val replaceProperties = mapOf( - "minecraft_version" to minecraft_version, - "minecraft_version_range" to minecraft_version_range, - "forge_version" to forge_version, - "forge_version_range" to forge_version_range, - "loader_version_range" to loader_version_range, - "mod_id" to mod_id, - "mod_name" to mod_name, - "mod_license" to mod_license, - "mod_version" to mod_version, - "mod_authors" to mod_authors, - "mod_description" to mod_description, + "minecraft_version" to minecraftVersion, + "minecraft_version_range" to minecraftVersionRange, + "forge_version" to forgeVersion, + "forge_version_range" to forgeVersionRange, + "loader_version_range" to loaderVersionRange, + "mod_id" to modId, + "mod_name" to modName, + "mod_license" to modLicense, + "mod_version" to modVersion, + "mod_authors" to modAuthors, + "mod_description" to modDescription, ) inputs.properties(replaceProperties) @@ -163,12 +167,12 @@ tasks.named("processResources") { tasks.named("jar") { manifest.attributes( - "Specification-Title" to mod_id, - "Specification-Vendor" to mod_authors, + "Specification-Title" to modId, + "Specification-Vendor" to modAuthors, "Specification-Version" to "1", "Implementation-Title" to project.name, "Implementation-Version" to archiveVersion, - "Implementation-Vendor" to mod_authors, + "Implementation-Vendor" to modAuthors, "Implementation-Timestamp" to ZonedDateTime.now() .format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ")) ) From e160ab923b508621a821cb036e1d352210878a14 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 25 Sep 2025 09:15:37 +0000 Subject: [PATCH 3/6] Replace gradle.properties with ModConfig object for IDE completion support Co-authored-by: Meatwo310 <72017364+Meatwo310@users.noreply.github.com> --- build.gradle.kts | 92 +++++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 45 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index f6c5c9f..889eaa1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,30 +12,32 @@ plugins { id("org.spongepowered.mixin") version "0.7.+" } -// Kotlin DSL-friendly property accessor -fun Project.prop(name: String): String = findProperty(name) as? String ?: error("Property '$name' not found") - -// Extension properties for cleaner access to gradle.properties -val Project.modVersion get() = prop("mod_version") -val Project.modGroupId get() = prop("mod_group_id") -val Project.modId get() = prop("mod_id") -val Project.minecraftVersion get() = prop("minecraft_version") -val Project.minecraftVersionRange get() = prop("minecraft_version_range") -val Project.mappingChannel get() = prop("mapping_channel") -val Project.mappingVersion get() = prop("mapping_version") -val Project.forgeVersion get() = prop("forge_version") -val Project.forgeVersionRange get() = prop("forge_version_range") -val Project.loaderVersionRange get() = prop("loader_version_range") -val Project.modName get() = prop("mod_name") -val Project.modLicense get() = prop("mod_license") -val Project.modAuthors get() = prop("mod_authors") -val Project.modDescription get() = prop("mod_description") - -version = "v$modVersion" -group = modGroupId +// Mod configuration - directly defined for IDE completion support +object ModConfig { + // Environment Properties + const val minecraftVersion = "1.20.1" + const val minecraftVersionRange = "[1.20.1,1.21)" + const val forgeVersion = "47.4.0" + const val forgeVersionRange = "[47.4,)" + const val loaderVersionRange = "[47,)" + const val mappingChannel = "parchment" + const val mappingVersion = "2023.09.03-1.20.1" + + // Mod Properties + const val modId = "examplemod" + const val modName = "Example Mod" + const val modLicense = "MIT" + const val modVersion = "0.1.0" + const val modGroupId = "io.github.meatwo310.examplemod" + const val modAuthors = "Meatwo310" + const val modDescription = "" +} + +version = "v${ModConfig.modVersion}" +group = ModConfig.modGroupId base { - archivesName.set("$modId-forge-$minecraftVersion") + archivesName.set("${ModConfig.modId}-forge-${ModConfig.minecraftVersion}") } java.toolchain.languageVersion.set(JavaLanguageVersion.of(17)) @@ -43,7 +45,7 @@ java.toolchain.languageVersion.set(JavaLanguageVersion.of(17)) println("Java: ${System.getProperty("java.version")}, JVM: ${System.getProperty("java.vm.version")} (${System.getProperty("java.vendor")}), Arch: ${System.getProperty("os.arch")}") minecraft { - mappings(mappingChannel, mappingVersion) + mappings(ModConfig.mappingChannel, ModConfig.mappingVersion) copyIdeResources.set(true) // accessTransformer(file("src/main/resources/META-INF/accesstransformer.cfg")) @@ -52,7 +54,7 @@ minecraft { property("forge.logging.markers", "REGISTRIES") property("forge.logging.console.level", "debug") - mods.create(modId) { + mods.create(ModConfig.modId) { source(sourceSets.main.get()) } @@ -62,23 +64,23 @@ minecraft { runs { create("client") { - property("forge.enabledGameTestNamespaces", modId) + property("forge.enabledGameTestNamespaces", ModConfig.modId) } create("server") { workingDirectory(project.file("run-server")) - property("forge.enabledGameTestNamespaces", modId) + property("forge.enabledGameTestNamespaces", ModConfig.modId) args("--nogui") } create("gameTestServer") { workingDirectory(project.file("run-server")) - property("forge.enabledGameTestNamespaces", modId) + property("forge.enabledGameTestNamespaces", ModConfig.modId) } create("data") { workingDirectory(project.file("run-data")) - args("--mod", modId, "--all", "--output", file("src/generated/resources/"), "--existing", file("src/main/resources/")) + args("--mod", ModConfig.modId, "--all", "--output", file("src/generated/resources/"), "--existing", file("src/main/resources/")) } } } @@ -121,7 +123,7 @@ repositories { } dependencies { - minecraft("net.minecraftforge:forge:$minecraftVersion-$forgeVersion") + minecraft("net.minecraftforge:forge:${ModConfig.minecraftVersion}-${ModConfig.forgeVersion}") annotationProcessor("org.spongepowered:mixin:0.8.5:processor") // // Mixin Extras @@ -139,23 +141,23 @@ dependencies { } mixin { - add(sourceSets.main.get(), "$modId.refmap.json") - config("$modId.mixins.json") + add(sourceSets.main.get(), "${ModConfig.modId}.refmap.json") + config("${ModConfig.modId}.mixins.json") } tasks.named("processResources") { val replaceProperties = mapOf( - "minecraft_version" to minecraftVersion, - "minecraft_version_range" to minecraftVersionRange, - "forge_version" to forgeVersion, - "forge_version_range" to forgeVersionRange, - "loader_version_range" to loaderVersionRange, - "mod_id" to modId, - "mod_name" to modName, - "mod_license" to modLicense, - "mod_version" to modVersion, - "mod_authors" to modAuthors, - "mod_description" to modDescription, + "minecraft_version" to ModConfig.minecraftVersion, + "minecraft_version_range" to ModConfig.minecraftVersionRange, + "forge_version" to ModConfig.forgeVersion, + "forge_version_range" to ModConfig.forgeVersionRange, + "loader_version_range" to ModConfig.loaderVersionRange, + "mod_id" to ModConfig.modId, + "mod_name" to ModConfig.modName, + "mod_license" to ModConfig.modLicense, + "mod_version" to ModConfig.modVersion, + "mod_authors" to ModConfig.modAuthors, + "mod_description" to ModConfig.modDescription, ) inputs.properties(replaceProperties) @@ -167,12 +169,12 @@ tasks.named("processResources") { tasks.named("jar") { manifest.attributes( - "Specification-Title" to modId, - "Specification-Vendor" to modAuthors, + "Specification-Title" to ModConfig.modId, + "Specification-Vendor" to ModConfig.modAuthors, "Specification-Version" to "1", "Implementation-Title" to project.name, "Implementation-Version" to archiveVersion, - "Implementation-Vendor" to modAuthors, + "Implementation-Vendor" to ModConfig.modAuthors, "Implementation-Timestamp" to ZonedDateTime.now() .format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ")) ) From 7fa6bc57794e29142980217d48ef61b68370497d Mon Sep 17 00:00:00 2001 From: Meatwo310 <72017364+Meatwo310@users.noreply.github.com> Date: Thu, 25 Sep 2025 18:29:56 +0900 Subject: [PATCH 4/6] =?UTF-8?q?1=E3=81=A4=E3=81=A0=E3=81=91=E3=82=B3?= =?UTF-8?q?=E3=83=A1=E3=83=B3=E3=83=88=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 889eaa1..9ced0f2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,7 +12,6 @@ plugins { id("org.spongepowered.mixin") version "0.7.+" } -// Mod configuration - directly defined for IDE completion support object ModConfig { // Environment Properties const val minecraftVersion = "1.20.1" From ecf3f1a6363680ef3293ee9f17bd0370a1b3965c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 25 Sep 2025 09:34:36 +0000 Subject: [PATCH 5/6] Clean up gradle.properties to only contain essential Gradle settings Co-authored-by: Meatwo310 <72017364+Meatwo310@users.noreply.github.com> --- gradle.properties | 19 ------------------ test_cleaned.gradle.kts | 43 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 19 deletions(-) create mode 100644 test_cleaned.gradle.kts diff --git a/gradle.properties b/gradle.properties index 4bdab87..29b2ac4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,21 +1,2 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false - -## Environment Properties -minecraft_version=1.20.1 -minecraft_version_range=[1.20.1,1.21) -forge_version=47.4.0 -forge_version_range=[47.4,) -loader_version_range=[47,) -mapping_channel=parchment -mapping_version=2023.09.03-1.20.1 - -## Mod Properties -# [a-z][a-z0-9_]{1,63} -mod_id=examplemod -mod_name=Example Mod -mod_license=MIT -mod_version=0.1.0 -mod_group_id=io.github.meatwo310.examplemod -mod_authors=Meatwo310 -mod_description= diff --git a/test_cleaned.gradle.kts b/test_cleaned.gradle.kts new file mode 100644 index 0000000..affe3e1 --- /dev/null +++ b/test_cleaned.gradle.kts @@ -0,0 +1,43 @@ +// Test script to verify cleaned gradle.properties still works +plugins { + base +} + +// Copy the ModConfig object from our build.gradle.kts to test it works independently +object ModConfig { + // Environment Properties + const val minecraftVersion = "1.20.1" + const val minecraftVersionRange = "[1.20.1,1.21)" + const val forgeVersion = "47.4.0" + const val forgeVersionRange = "[47.4,)" + const val loaderVersionRange = "[47,)" + const val mappingChannel = "parchment" + const val mappingVersion = "2023.09.03-1.20.1" + + // Mod Properties + const val modId = "examplemod" + const val modName = "Example Mod" + const val modLicense = "MIT" + const val modVersion = "0.1.0" + const val modGroupId = "io.github.meatwo310.examplemod" + const val modAuthors = "Meatwo310" + const val modDescription = "" +} + +tasks.register("testCleanedGradleProperties") { + doLast { + println("Testing with cleaned gradle.properties (only JVM settings):") + println("ModConfig.modVersion: ${ModConfig.modVersion}") + println("ModConfig.modId: ${ModConfig.modId}") + println("ModConfig.minecraftVersion: ${ModConfig.minecraftVersion}") + println() + println("gradle.properties only contains:") + file("gradle.properties").readLines().forEach { line -> + if (line.trim().isNotEmpty()) { + println(" $line") + } + } + println() + println("Cleaned gradle.properties test: SUCCESS") + } +} \ No newline at end of file From 445988017dab24eb4a46c4c0e6d108921f1d6662 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 25 Sep 2025 09:34:54 +0000 Subject: [PATCH 6/6] Remove temporary test file Co-authored-by: Meatwo310 <72017364+Meatwo310@users.noreply.github.com> --- test_cleaned.gradle.kts | 43 ----------------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 test_cleaned.gradle.kts diff --git a/test_cleaned.gradle.kts b/test_cleaned.gradle.kts deleted file mode 100644 index affe3e1..0000000 --- a/test_cleaned.gradle.kts +++ /dev/null @@ -1,43 +0,0 @@ -// Test script to verify cleaned gradle.properties still works -plugins { - base -} - -// Copy the ModConfig object from our build.gradle.kts to test it works independently -object ModConfig { - // Environment Properties - const val minecraftVersion = "1.20.1" - const val minecraftVersionRange = "[1.20.1,1.21)" - const val forgeVersion = "47.4.0" - const val forgeVersionRange = "[47.4,)" - const val loaderVersionRange = "[47,)" - const val mappingChannel = "parchment" - const val mappingVersion = "2023.09.03-1.20.1" - - // Mod Properties - const val modId = "examplemod" - const val modName = "Example Mod" - const val modLicense = "MIT" - const val modVersion = "0.1.0" - const val modGroupId = "io.github.meatwo310.examplemod" - const val modAuthors = "Meatwo310" - const val modDescription = "" -} - -tasks.register("testCleanedGradleProperties") { - doLast { - println("Testing with cleaned gradle.properties (only JVM settings):") - println("ModConfig.modVersion: ${ModConfig.modVersion}") - println("ModConfig.modId: ${ModConfig.modId}") - println("ModConfig.minecraftVersion: ${ModConfig.minecraftVersion}") - println() - println("gradle.properties only contains:") - file("gradle.properties").readLines().forEach { line -> - if (line.trim().isNotEmpty()) { - println(" $line") - } - } - println() - println("Cleaned gradle.properties test: SUCCESS") - } -} \ No newline at end of file