diff --git a/.gitignore b/.gitignore index 2f5d04d..533f42e 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ bin/ run/ run-data/ +/src/generated/resources/.cache/* diff --git a/build.gradle b/build.gradle index e78c535..c74c92f 100644 --- a/build.gradle +++ b/build.gradle @@ -10,18 +10,15 @@ buildscript { plugins { id "idea" + id "eclipse" id "maven-publish" - id 'net.minecraftforge.gradle' version '[6.0,6.2)' - id 'org.parchmentmc.librarian.forgegradle' version '1.+' + id 'net.neoforged.moddev.legacyforge' version '2.0.91' id 'com.diffplug.spotless' version '7.0.2' - id 'org.spongepowered.mixin' version '0.7+' } -def generatedResources = file("src/generated") - sourceSets { - main { - resources.srcDir generatedResources + main.resources { + srcDir 'src/generated/resources' } } @@ -76,54 +73,85 @@ version = mod_version group = maven_group base { archivesName = archives_base_name } java { sourceCompatibility = targetCompatibility = JavaVersion.VERSION_17 } -sourceSets.main.resources { srcDir 'src/generated/resources' } -minecraft { - mappings channel: mapping_channel, version: mapping_version - copyIdeResources = true +legacyForge { + version = project.minecraft_version + '-' + project.forge_version + + parchment { + mappingsVersion = project.mapping_version + minecraftVersion = project.minecraft_version + } + runs { configureEach { - workingDirectory project.file('run') - property 'forge.logging.markers', 'REGISTRIES' - property 'forge.logging.console.level', 'debug' - mods { "${mod_id}" { source sourceSets.main } } - property 'mixin.env.remapRefMap', 'true' - property 'mixin.env.refMapRemappingFile', "${buildDir}/createSrgToMcp/output.srg" + // Recommended logging data for a userdev environment + // The markers can be added/remove as needed separated by commas. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + systemProperty 'forge.logging.markers', 'REGISTRIES' + + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels + logLevel = org.slf4j.event.Level.DEBUG + sourceSet = sourceSets.main + } + client { + client() + programArguments.addAll('--refresh-dependencies') + systemProperty('forge.enabledGameTestNamespaces', project.mod_id) + } + server { + server() + systemProperty('forge.enabledGameTestNamespaces', project.mod_id) + programArguments.addAll('--nogui', '--world', 'world-extra') } - client { property 'forge.enabledGameTestNamespaces', mod_id } - server { property 'forge.enabledGameTestNamespaces', mod_id; args '--nogui' } data { - // example of overriding the workingDirectory set in configureEach above - workingDirectory project.file('run-data') + data() // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. - args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') + programArguments.addAll('--mod', project.mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()) + programArguments.addAll('--existing-mod', 'gtceu') } } -} + mods { + // define mod <-> source bindings + // these are used to tell the game which sources are for which mod + // mostly optional in a single mod project + // but multi mod projects should define one per mod + "${mod_id}" { + sourceSet(sourceSets.main) + } + } +} +jar { + manifest.attributes([ + "MixinConfigs": "examplemod.mixins.json" + ]) +} -apply plugin: 'org.spongepowered.mixin' apply from: "$rootDir/gradle/scripts/spotless.gradle" dependencies { - minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" + compileOnly("org.jetbrains:annotations:26.0.1") // Mixin - annotationProcessor "org.spongepowered:mixin:0.8.7:processor" + annotationProcessor('org.spongepowered:mixin:0.8.5:processor') // JEI, EMI, Jade - compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}-forge-api:${jei_version}") - compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}-common-api:${jei_version}") - runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}-forge:${jei_version}") - runtimeOnly fg.deobf("dev.emi:emi-forge:${emi_version}+${minecraft_version}") - runtimeOnly fg.deobf("curse.maven:jade-324717:5390389") + modCompileOnly("mezz.jei:jei-${minecraft_version}-forge-api:${jei_version}") + modCompileOnly("mezz.jei:jei-${minecraft_version}-common-api:${jei_version}") + modRuntimeOnly("mezz.jei:jei-${minecraft_version}-forge:${jei_version}") + modRuntimeOnly("dev.emi:emi-forge:${emi_version}+${minecraft_version}") + modRuntimeOnly("curse.maven:jade-324717:5390389") // GregTech and dependencies - implementation fg.deobf("com.gregtechceu.gtceu:gtceu-${minecraft_version}:${gtceu_version}:slim") { transitive = false } - implementation fg.deobf("com.lowdragmc.ldlib:ldlib-forge-${minecraft_version}:${ldlib_version}") { transitive = false } - implementation fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}") - runtimeOnly fg.deobf("dev.toma.configuration:configuration-forge-${minecraft_version}:${configuration_version}") + modImplementation("com.gregtechceu.gtceu:gtceu-${minecraft_version}:${gtceu_version}:slim") { transitive = false } + modImplementation("com.lowdragmc.ldlib:ldlib-forge-${minecraft_version}:${ldlib_version}") { transitive = false } + modImplementation("com.tterrag.registrate:Registrate:${registrate_version}") + modRuntimeOnly("dev.toma.configuration:configuration-forge-${minecraft_version}:${configuration_version}") // lombok compileOnly 'org.projectlombok:lombok:1.18.24' diff --git a/gradle.properties b/gradle.properties index cc422fb..3dfd1cd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G # forge version, latest version can be found on https://files.minecraftforge.net/ forge_version=47.4.0 mapping_channel=parchment - mapping_version=2023.09.03-1.20.1 + mapping_version=2023.09.03 # Mod Properties mod_version=0.1.0 diff --git a/settings.gradle b/settings.gradle index c8d784c..662c1a9 100644 --- a/settings.gradle +++ b/settings.gradle @@ -7,3 +7,6 @@ pluginManagement { maven { url = 'https://maven.parchmentmc.org' } } } +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0' +} \ No newline at end of file