summaryrefslogtreecommitdiff
path: root/build.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'build.gradle')
-rw-r--r--build.gradle179
1 files changed, 25 insertions, 154 deletions
diff --git a/build.gradle b/build.gradle
index 97ff178..f3e0e2f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,190 +1,61 @@
plugins {
id 'java-library'
- id 'maven-publish'
- id 'net.neoforged.moddev' version '2.0.143'
+ id 'eclipse'
id 'idea'
+ id 'net.neoforged.moddev' version '2.0.5-beta'
}
-tasks.named('wrapper', Wrapper).configure {
- // Define wrapper values here so as to not have to always do so when updating gradlew.properties.
- // Switching this to Wrapper.DistributionType.ALL will download the full gradle sources that comes with
- // documentation attached on cursor hover of gradle classes and methods. However, this comes with increased
- // file size for Gradle. If you do switch this to ALL, run the Gradle wrapper task twice afterwards.
- // (Verify by checking gradle/wrapper/gradle-wrapper.properties to see if distributionUrl now points to `-all`)
+tasks.named('wrapper', Wrapper) {
distributionType = Wrapper.DistributionType.BIN
}
-version = mod_version
-group = mod_group_id
+version = project.findProperty('mod_version') ?: '1.0.0'
+group = project.findProperty('mod_group_id') ?: 'com.coasteen'
+base.archivesName = project.findProperty('mod_id') ?: 'armcontainers'
-sourceSets.main.resources {
- // Include resources generated by data generators.
- srcDir('src/generated/resources')
-
- // Exclude common development only resources from finalized outputs
- exclude("**/*.bbmodel") // BlockBench project files
-
- exclude("src/generated/**/.cache") // datagen cache files
-}
-
-repositories {
- // Add here additional repositories if required by some of the dependencies below.
-}
-
-base {
- archivesName = mod_id
-}
-
-// Mojang ships Java 21 to end users in 1.21.1, so mods should target Java 21.
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
neoForge {
- // Specify the version of NeoForge to use.
- version = project.neo_version
+ version = project.findProperty('neo_version') ?: '21.1.248'
parchment {
- mappingsVersion = project.parchment_mappings_version
- minecraftVersion = project.parchment_minecraft_version
+ mappingsVersion = project.findProperty('parchment_mappings_version') ?: '2024.07.28'
+ minecraftVersion = project.findProperty('parchment_minecraft_version') ?: '1.21'
}
- // This line is optional. Access Transformers are automatically detected
- // accessTransformers = project.files('src/main/resources/META-INF/accesstransformer.cfg')
-
- // Default run configurations.
- // These can be tweaked, removed, or duplicated as needed.
runs {
client {
client()
- // Comma-separated list of namespaces to load gametests from. Empty = all namespaces.
- systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
- }
-
- server {
- server()
- programArgument '--nogui'
- systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
- }
- // This run config launches GameTestServer and runs all registered gametests, then exits.
- // By default, the server will crash when no gametests are provided.
- // The gametest system is also enabled by default for other run configs under the /test command.
- gameTestServer {
- type = "gameTestServer"
- systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
- }
-
- data {
- data()
- // example of overriding the workingDirectory set in configureEach above, uncomment if you want to use it
- // gameDirectory = project.file('run-data')
-
- // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources.
- programArguments.addAll '--mod', project.mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
- }
-
- // applies to all the run configs above
- configureEach {
- // 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
+ systemProperty 'neoforge.enabledGameTestNamespaces', (project.findProperty('mod_id') ?: 'armcontainers')
}
}
mods {
- // define mod <-> source bindings
- // these are used to tell the game which sources are for which mod
- // multi mod projects should define one per mod
- "${mod_id}" {
+ "${project.findProperty('mod_id') ?: 'armcontainers'}" {
sourceSet(sourceSets.main)
}
}
}
-// Sets up a dependency configuration called 'localRuntime'.
-// This configuration should be used instead of 'runtimeOnly' to declare
-// a dependency that will be present for runtime testing but that is
-// "optional", meaning it will not be pulled by dependents of this mod.
-configurations {
- runtimeClasspath.extendsFrom localRuntime
+repositories {
+ mavenCentral()
+ maven {
+ name = "CurseMaven"
+ url = "https://www.cursemaven.com"
+ content {
+ includeGroup "curse.maven"
+ }
+ }
}
dependencies {
- // Example optional mod dependency with JEI
- // The JEI API is declared for compile time use, while the full JEI artifact is used at runtime
- // compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}"
- // compileOnly "mezz.jei:jei-${mc_version}-neoforge-api:${jei_version}"
- // We add the full version to localRuntime, not runtimeOnly, so that we do not publish a dependency on it
- // localRuntime "mezz.jei:jei-${mc_version}-neoforge:${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 "blank:coolmod-${mc_version}:${coolmod_version}"
-
- // Example mod dependency using a file as dependency
- // implementation files("libs/coolmod-${mc_version}-${coolmod_version}.jar")
-
- // Example project dependency using a sister or child project:
- // implementation project(":myproject")
-
- // 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.
-var generateModMetadata = tasks.register("generateModMetadata", ProcessResources) {
- var replaceProperties = [
- minecraft_version : minecraft_version,
- minecraft_version_range: minecraft_version_range,
- neo_version : neo_version,
- loader_version_range : loader_version_range,
- mod_id : mod_id,
- mod_name : mod_name,
- mod_license : mod_license,
- mod_version : mod_version,
- ]
- inputs.properties replaceProperties
- expand replaceProperties
- from "src/main/templates"
- into "build/generated/sources/modMetadata"
-}
-// Include the output of "generateModMetadata" as an input directory for the build
-// this works with both building through Gradle and the IDE.
-sourceSets.main.resources.srcDir generateModMetadata
-// To avoid having to run "generateModMetadata" manually, make it run on every project reload
-neoForge.ideSyncTask generateModMetadata
-
-// Example configuration to allow publishing using the maven-publish plugin
-publishing {
- publications {
- register('mavenJava', MavenPublication) {
- from components.java
- }
- }
- repositories {
- maven {
- url "file://${project.projectDir}/repo"
- }
+ if (project.hasProperty('create_curseforge_file_id')) {
+ implementation "curse.maven:create-328085:${project.create_curseforge_file_id}"
+ } else {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
}
}
tasks.withType(JavaCompile).configureEach {
- options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
-}
-
-// IDEA no longer automatically downloads sources/javadoc jars for dependencies, so we need to explicitly enable the behavior.
-idea {
- module {
- downloadSources = true
- downloadJavadoc = true
- }
+ options.encoding = 'UTF-8'
}