mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-09 16:14:49 +00:00
214 lines
6.6 KiB
Plaintext
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 }} |