summaryrefslogtreecommitdiff
path: root/build.gradle
diff options
context:
space:
mode:
authorSizableShrimp <sizableshrimp@sizableshrimp.me>2023-04-01 20:45:29 -0500
committerSizableShrimp <sizableshrimp@sizableshrimp.me>2023-06-07 20:55:09 -0500
commit773c579dab4a64bc30053cb84c9d1d943b337e19 (patch)
treeeb3646e9cf8afad431938e50d10504b57718f78b /build.gradle
parent821c23e9ba437e821813759d301beeecb7d24eaf (diff)
Forge 1.20
- Creative mode tabs are now a registry; the `BuildContents` event was renamed to `BuildCreativeModeTabContentsEvent` and moved it to its own class - The pack format is now 15 for both resource packs and data packs - `ScreenUtils` was deprecated in favor of a `GuiGraphics` extension - Forge and the MDK were updated to Gradle 8 and FG6 - The Forge common config file was removed (it only contained the deprecated old fields for resource caching, which was removed in 1.19.3) - Registry dummy entries were removed - `RemappingVertexPipeline` was fixed to forward the `endVertex()` call - Forge tool tags were removed in favor of vanilla ones Co-authored-by: ChampionAsh5357 <ash@ashwork.net> Co-authored-by: coehlrich <coehlrich@users.noreply.github.com> Co-authored-by: Dennis C <11262040+XFactHD@users.noreply.github.com> Co-authored-by: Matyrobbrt <matyrobbrt@gmail.com>
Diffstat (limited to 'build.gradle')
-rw-r--r--build.gradle115
1 files changed, 86 insertions, 29 deletions
diff --git a/build.gradle b/build.gradle
index 6a75535..6da6a06 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,12 +1,16 @@
plugins {
id 'eclipse'
+ id 'idea'
id 'maven-publish'
- id 'net.minecraftforge.gradle' version '5.1.+'
+ id 'net.minecraftforge.gradle' version '[6.0,6.2)'
}
-version = '1.0'
-group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
-archivesBaseName = 'modid'
+version = mod_version
+group = mod_group_id
+
+base {
+ archivesName = mod_id
+}
// Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17.
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
@@ -26,9 +30,33 @@ minecraft {
//
// Use non-default mappings at your own risk. They may not always work.
// Simply re-run your setup task after changing the mappings to update your workspace.
- mappings channel: '@MAPPING_CHANNEL@', version: '@MAPPING_VERSION@'
-
- // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') // Currently, this location cannot be changed from the default.
+ mappings channel: mapping_channel, version: mapping_version
+
+ // When true, this property will have all Eclipse run configurations run the "prepareX" task for the given run configuration before launching the game.
+ // In most cases, it is not necessary to enable.
+ // enableEclipsePrepareRuns = true
+
+ // When true, this property will have all IntelliJ IDEA run configurations run the "prepareX" task for the given run configuration before launching the game.
+ // In most cases, it is not necessary to enable.
+ // enableIdeaPrepareRuns = true
+
+ // This property allows configuring Gradle's ProcessResources task(s) to run on IDE output locations before launching the game.
+ // It is REQUIRED to be set to true for this template to function.
+ // See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html
+ copyIdeResources = true
+
+ // When true, this property will add the folder name of all declared run configurations to generated IDE run configurations.
+ // The folder name can be set on a run configuration using the "folderName" property.
+ // By default, the folder name of a run configuration is the name of the Gradle project containing it.
+ // generateRunFolders = true
+
+ // This property enables access transformers for use in development.
+ // They will be applied to the Minecraft artifact.
+ // The access transformer file can be anywhere in the project.
+ // However, it must be at "META-INF/accesstransformer.cfg" in the final mod jar to be loaded by Forge.
+ // This default location is a best practice to automatically put the file in the right place in the final jar.
+ // See https://docs.minecraftforge.net/en/latest/advanced/accesstransformers/ for more information.
+ // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
// Default run configurations.
// These can be tweaked, removed, or duplicated as needed.
@@ -49,10 +77,10 @@ minecraft {
property 'forge.logging.console.level', 'debug'
// Comma-separated list of namespaces to load gametests from. Empty = all namespaces.
- property 'forge.enabledGameTestNamespaces', 'examplemod'
+ property 'forge.enabledGameTestNamespaces', mod_id
mods {
- examplemod {
+ "${mod_id}" {
source sourceSets.main
}
}
@@ -65,10 +93,10 @@ minecraft {
property 'forge.logging.console.level', 'debug'
- property 'forge.enabledGameTestNamespaces', 'examplemod'
+ property 'forge.enabledGameTestNamespaces', mod_id
mods {
- examplemod {
+ "${mod_id}" {
source sourceSets.main
}
}
@@ -84,10 +112,10 @@ minecraft {
property 'forge.logging.console.level', 'debug'
- property 'forge.enabledGameTestNamespaces', 'examplemod'
+ property 'forge.enabledGameTestNamespaces', mod_id
mods {
- examplemod {
+ "${mod_id}" {
source sourceSets.main
}
}
@@ -101,10 +129,10 @@ minecraft {
property 'forge.logging.console.level', 'debug'
// Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources.
- args '--mod', 'examplemod', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
+ args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
mods {
- examplemod {
+ "${mod_id}" {
source sourceSets.main
}
}
@@ -119,39 +147,68 @@ repositories {
// Put repositories for dependencies here
// ForgeGradle automatically adds the Forge maven and Maven Central for you
- // If you have mod jar dependencies in ./libs, you can declare them as a repository like so:
+ // If you have mod jar dependencies in ./libs, you can declare them as a repository like so.
+ // See https://docs.gradle.org/current/userguide/declaring_repositories.html#sub:flat_dir_resolver
// flatDir {
// dir 'libs'
// }
}
dependencies {
- // Specify the version of Minecraft to use. If this is any group other than 'net.minecraft', it is assumed
- // that the dep is a ForgeGradle 'patcher' dependency, and its patches will be applied.
- // The userdev artifact is a special name and will get all sorts of transformations applied to it.
- minecraft '@FORGE_GROUP@:@FORGE_NAME@:@FORGE_VERSION@'
-
- // Real mod deobf dependency examples - these get remapped to your current mappings
- // implementation fg.deobf("com.tterrag.registrate:Registrate:MC${mc_version}-${registrate_version}") // Adds registrate as a dependency
-
- // Examples using mod jars from ./libs
+ // Specify the version of Minecraft to use.
+ // Any artifact can be supplied so long as it has a "userdev" classifier artifact and is a compatible patcher artifact.
+ // The "userdev" classifier will be requested and setup by ForgeGradle.
+ // If the group id is "net.minecraft" and the artifact id is one of ["client", "server", "joined"],
+ // then special handling is done to allow a setup of a vanilla dependency without the use of an external repository.
+ minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
+
+ // Example mod dependency with JEI - using fg.deobf() ensures the dependency is remapped to your development mappings
+ // The JEI API is declared for compile time use, while the full JEI artifact is used at runtime
+ // compileOnly fg.deobf("mezz.jei:jei-${mc_version}-common-api:${jei_version}")
+ // compileOnly fg.deobf("mezz.jei:jei-${mc_version}-forge-api:${jei_version}")
+ // runtimeOnly fg.deobf("mezz.jei:jei-${mc_version}-forge:${jei_version}")
+
+ // Example mod dependency using a mod jar from ./libs with a flat dir repository
+ // This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar
+ // The group id is ignored when searching -- in this case, it is "blank"
// implementation fg.deobf("blank:coolmod-${mc_version}:${coolmod_version}")
- // For more info...
+ // For more info:
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
// http://www.gradle.org/docs/current/userguide/dependency_management.html
}
+// This block of code expands all declared replace properties in the specified resource targets.
+// A missing property will result in an error. Properties are expanded using ${} Groovy notation.
+// When "copyIdeResources" is enabled, this will also run before the game launches in IDE environments.
+// See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html
+def resourceTargets = ['META-INF/mods.toml', 'pack.mcmeta']
+def replaceProperties = [
+ minecraft_version: minecraft_version, minecraft_version_range: minecraft_version_range,
+ forge_version: forge_version, forge_version_range: forge_version_range,
+ loader_version_range: loader_version_range,
+ mod_id: mod_id, mod_name: mod_name, mod_license: mod_license, mod_version: mod_version,
+ mod_authors: mod_authors, mod_description: mod_description
+]
+processResources {
+ inputs.properties replaceProperties
+ replaceProperties.put 'project', project
+
+ filesMatching(resourceTargets) {
+ expand replaceProperties
+ }
+}
+
// Example for how to get properties into the manifest for reading at runtime.
jar {
manifest {
attributes([
- "Specification-Title" : "examplemod",
- "Specification-Vendor" : "examplemodsareus",
+ "Specification-Title" : mod_id,
+ "Specification-Vendor" : mod_authors,
"Specification-Version" : "1", // We are version 1 of ourselves
"Implementation-Title" : project.name,
"Implementation-Version" : project.jar.archiveVersion,
- "Implementation-Vendor" : "examplemodsareus",
+ "Implementation-Vendor" : mod_authors,
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
])
}