Files
CustomNPC-Plus/build.gradleOLD
Kam 987bc26f14 Update Gradle to GTNH Gradle
- Mixin Embed still functioning
2024-02-13 01:27:30 -05:00

214 lines
6.6 KiB
Plaintext

buildscript {
repositories {
mavenCentral()
maven {
name = "forge"
url = "https://maven.minecraftforge.net/"
}
maven {
name = "sonatype"
url = "https://oss.sonatype.org/content/repositories/snapshots/"
}
maven {
name = "jitpack"
url = "https://jitpack.io"
}
maven {
name = "gt"
url = "https://gregtech.mechaenetia.com/"
}
}
dependencies {
classpath 'com.github.GTNewHorizons:ForgeGradle:1.2.11'
}
}
task submodulesUpdate(type:Exec) {
description 'Updates (and inits) git submodules'
commandLine 'git', 'submodule', 'update', '--init', '--recursive'
group 'Build Setup'
}
configurations {
embed
compile.extendsFrom(embed)
shade
compile.extendsFrom(shade)
}
apply plugin: 'forge'
version = "1.9-beta6"
group= "com.kamkeel.customnpc-plus" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "CustomNPC-Plus"
minecraft {
version = "1.7.10-10.13.4.1614-1.7.10"
runDir = "eclipse"
sourceSets {
api {
java {
srcDir 'src/api/java'
}
}
}
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
// you may put jars on which you depend on in ./libs
// or you may define them like so..
//compile "some.group:artifact:version:classifier"
//compile "some.group:artifact:version"
// real examples
//compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env
//compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env
// for more info...
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
// http://www.gradle.org/docs/current/userguide/dependency_management.html
}
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 stuff in mcmod.info, nothing else
from(sourceSets.main.resources.srcDirs) {
include 'mcmod.info'
// replace version and mcversion
expand 'version':project.version, 'mcversion':project.minecraft.version
}
// copy everything else, thats not the mcmod.info
from(sourceSets.main.resources.srcDirs) {
exclude 'mcmod.info'
}
}
jar {
from sourceSets.api.output
manifest {
attributes(
'FMLAT': "customnpcs_at.cfg",
)
}
}
//##########################################################################################################
//######################################## Mixin Part ################################################
//##########################################################################################################
//Add
//--tweakClass org.spongepowered.asm.launch.MixinTweaker --mixin customnpcs.mixins.json
//to your client and server program arguments if working in a dev environment.
def embedMixin = !project.hasProperty("nomixin");
def yourMixinConfig = 'customnpcs.mixins.json'
def refMapForYourConfig = 'customnpcs.refmap.json'
def relativePathToMixinAP = 'tools/mixin-0.8-SNAPSHOT.jar'
if(!embedMixin){
version += "-nomixin"
}
repositories {
maven {
name = "sponge"
url = "https://repo.spongepowered.org/maven/"
}
}
dependencies {
if(embedMixin){
embed('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'
}
} else {
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'
}
}
}
def refMap = "${tasks.compileJava.temporaryDir}" + File.separator + refMapForYourConfig
def mixinSrg = "${tasks.reobf.temporaryDir}" + File.separator + "mixins.srg"
jar {
configurations.shade.each { dep ->
from(project.zipTree(dep)){
exclude 'META-INF', 'META-INF/**'
}
}
from refMap
manifest {
attributes.put("TweakClass", "org.spongepowered.asm.launch.MixinTweaker")
attributes.put("FMLCorePluginContainsFMLMod", true)
attributes.put("ForceLoadAsMod", true)
attributes.put("MixinConfigs", yourMixinConfig)
}
// embed libraries in jar
from configurations.embed.collect {
exclude '**/LICENSE.txt'
it.isDirectory() ? it : zipTree(it)
}
}
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.compileJava {
println "Path: " + projectDir.absolutePath
options.compilerArgs += [
// There's a bug in the AnnotationProcessor for 0.7.11 that will generate the annotations pointing to the parent class instead of subclass
// resulting in the mixin not being applied. This is fixed in 0.8, however 0.8 needs guava > 21.0, and minecraft ships with 17.0.
// So as a hacky workaround... ship with 0.7.11, but use the AP from 0.8 for compiling
"-processorpath", projectDir.absolutePath + '/' + fixedRelPathToAP,
"-processor", "org.spongepowered.tools.obfuscation.MixinObfuscationProcessorInjection,org.spongepowered.tools.obfuscation.MixinObfuscationProcessorTargets",
"-Xlint:-sunapi", "-XDenableSunApiLintControl", "-XDignore.symbol.file",
"-AreobfSrgFile=${tasks.reobf.srg}", "-AoutSrgFile=${mixinSrg}", "-AoutRefMapFile=${refMap}"
]
}
}
task deobfJar(type: Jar) {
classifier = 'dev'
from sourceSets.main.output
}
sourceSets {
main {
ext.refMap = refMapForYourConfig
}
}
// Enable Temporarily if Assets not loading
sourceSets {main { output.resourcesDir = output.classesDir }}