You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

165 lines
4.8 KiB
Groovy

buildscript {
repositories {
mavenCentral()
maven {
name = "forge"
url = "https://maven.minecraftforge.net/"
}
}
dependencies {
classpath ('com.anatawa12.forge:ForgeGradle:1.2-1.1.+') {
changing = true
}
}
}
plugins {
id 'java-library'
id 'maven-publish'
// id 'com.github.johnrengelman.shadow' version '6.1.0' // Use the latest version
}
apply plugin: 'forge'
// These settings allow you to choose what version of Java you want to be compatible with. Forge 1.7.10 runs on Java 6 to 8.
sourceCompatibility = 1.8
targetCompatibility = 1.8
version = project.version
group = project.group
def yourMixinConfig = 'mixins.cindercore_modlist.json'
def refMapForYourConfig = 'mixins.cindercore_modlist.refmap.json'
def relativePathToMixinAP = 'libs/mixin-0.8-SNAPSHOT.jar'
def refMap = 'src/main/resources/' + refMapForYourConfig
def mixinSrg = "${tasks.reobf.temporaryDir}" + File.separator + "mixins.srg"
repositories {
flatDir {
dirs 'libs'
}
maven {
name = 'sponge'
url = 'https://repo.spongepowered.org/repository/maven-public'
}
}
dependencies {
// implementation 'com.google.code.gson:gson:2.8.6'
implementation('org.spongepowered:mixin:0.7.11-SNAPSHOT') {
// Mixin includes a lot of dependencies that are too up-to-date
exclude module: 'launchwrapper'
exclude module: 'guava'
exclude module: 'gson'
exclude module: 'commons-io'
exclude module: 'log4j-core'
}
// implementation name: 'mixin-0.8-SNAPSHOT', ext: 'jar'
// implementation name: 'SpongeMixins-1.5.0', ext: 'jar'
implementation name: 'cindercore', ext: 'jar'
}
minecraft {
version = project.minecraft_version + "-" + project.forge_version
runDir = "run"
}
processResources {
// This will ensure that this task is redone when the versions change.
inputs.property "version", project.version
inputs.property "mcversion", project.minecraft.version
// Replace values in only mcmod.info.
filesMatching('mcmod.info') {
// Replace version and mcversion.
expand 'version':project.version, 'mcversion':project.minecraft.version
}
}
// Ensures that the encoding of source files is set to UTF-8, see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
// This task creates a .jar file containing the source code of this mod.
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = "sources"
from sourceSets.main.allSource
}
// This task creates a .jar file containing a deobfuscated version of this mod, for other developers to use in a development environment.
task devJar(type: Jar) {
classifier = "dev"
from sourceSets.main.output
}
// Creates the listed artifacts on building the mod.
artifacts {
archives sourcesJar
archives devJar
}
// This block configures any maven publications you want to make.
publishing {
publications {
mavenJava(MavenPublication) {
// Add any other artifacts here that you would like to publish!
artifact(jar) {
builtBy build
}
artifact(sourcesJar) {
builtBy sourcesJar
}
artifact(devJar) {
builtBy devJar
}
}
}
// This block selects the repositories you want to publish to.
}
jar {
duplicatesStrategy = DuplicatesStrategy.INCLUDE
from sourceSets.main.output.resourcesDir
from refMap
manifest {
attributes([
"Manifest-Version": "1.0",
"TweakClass": "org.spongepowered.asm.launch.MixinTweaker",
'MixinConfigs': yourMixinConfig,
"FMLCorePlugin": "com.zivilon.cindercore_modlist.coremod.ModListCore",
'FMLCorePluginContainsFMLMod': 'true',
"ForceLoadAsMod": true
])
}
}
reobf {
addExtraSrgFile mixinSrg
}
afterEvaluate {
def fixedRelPathToAP = relativePathToMixinAP
if(fixedRelPathToAP.startsWith('./') || fixedRelPathToAP.startsWith('.\\')){
fixedRelPathToAP = fixedRelPathToAP.substring(2)
} else if(fixedRelPathToAP.startsWith('/') || fixedRelPathToAP.startsWith('\\')){
fixedRelPathToAP = fixedRelPathToAP.substring(1)
}
tasks.withType(JavaCompile) {
options.annotationProcessorPath = files(projectDir.absolutePath + '/' + fixedRelPathToAP)
println "Refmap path: ${refMap}"
options.compilerArgs += [
"-ArefMapFile=${refMap}",
"-AoutRefMapFile=${refMap}",
"-AdefaultObfuscationEnv=searge"
]
}
}
sourceSets {
main {
output.resourcesDir = output.classesDirs.asPath
ext.refMap = refMapForYourConfig
}
}