173 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Groovy
		
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Groovy
		
	
	
	
plugins {
 | 
						||
    id 'java-library'
 | 
						||
    id 'maven-publish'
 | 
						||
    id 'idea'
 | 
						||
    id 'net.neoforged.moddev' version '2.0.115'
 | 
						||
}
 | 
						||
 | 
						||
version = mod_version
 | 
						||
group = mod_group_id
 | 
						||
 | 
						||
repositories {
 | 
						||
    mavenLocal()
 | 
						||
}
 | 
						||
 | 
						||
base {
 | 
						||
    archivesName = mod_id
 | 
						||
}
 | 
						||
 | 
						||
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
 | 
						||
 | 
						||
neoForge {
 | 
						||
    // Specify the version of NeoForge to use.
 | 
						||
    version = project.neo_version
 | 
						||
 | 
						||
    parchment {
 | 
						||
        mappingsVersion = project.parchment_mappings_version
 | 
						||
        minecraftVersion = project.parchment_minecraft_version
 | 
						||
    }
 | 
						||
 | 
						||
    // This line is optional. Access Transformers are automatically detected
 | 
						||
    // accessTransformers.add('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
 | 
						||
        }
 | 
						||
    }
 | 
						||
 | 
						||
    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)
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 | 
						||
 | 
						||
// Include resources generated by data generators.
 | 
						||
sourceSets.main.resources { srcDir 'src/generated/resources' }
 | 
						||
 | 
						||
 | 
						||
dependencies {
 | 
						||
    // Gson для работы с JSON
 | 
						||
    implementation 'com.google.code.gson:gson:2.10.1'
 | 
						||
    
 | 
						||
    // Example 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}-forge-api:${jei_version}"
 | 
						||
    // runtimeOnly "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 "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,
 | 
						||
            neo_version_range      : neo_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
 | 
						||
    ]
 | 
						||
    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"
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 | 
						||
 | 
						||
// IDEA no longer automatically downloads sources/javadoc jars for dependencies, so we need to explicitly enable the behavior.
 | 
						||
idea {
 | 
						||
    module {
 | 
						||
        downloadSources = true
 | 
						||
        downloadJavadoc = true
 | 
						||
    }
 | 
						||
}
 |