forked from MinecraftModDevelopmentMods/Tesla-Core-Lib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
149 lines (127 loc) · 4.82 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
buildscript {
ext.kotlin_version = project.kotlin_version
repositories {
mavenCentral()
maven { url = "http://files.minecraftforge.net/maven" }
maven { url = "http://repo.maven.apache.org/maven2" }
maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" }
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${project.kotlin_version}"
}
}
apply plugin: "net.minecraftforge.gradle.forge"
apply plugin: 'kotlin'
apply plugin: "maven-publish"
apply plugin: "maven"
archivesBaseName = project.mod_name.replace(' ', '-').toLowerCase()
group = "net.ndrei"
version = "${project.minecraft_version}-${project.mod_version}"
if (project.hasProperty('mod_suffix')) {
version += "-${project.mod_suffix}"
}
compileJava { sourceCompatibility = targetCompatibility = "1.8" }
compileKotlin { kotlinOptions { jvmTarget = "1.8" } }
minecraft {
version = "${project.minecraft_version}-${project.forge_version}"
mappings = "${project.mcp_version}"
runDir = "run"
// "stolen" from: UpcraftLP
def username = "${mod_name}"
if (project.hasProperty('dev_mail')) {
username = "${project.dev_mail}"
}
clientRunArgs += "--username=${username}"
// if (project.hasProperty('dev_password')) {
// clientRunArgs += " --password=${project.dev_password}"
// }
// serverRunArgs += "nogui"
// end of "stolen" part :)
replace '@MOD-ID@', project.mod_id
replace '@MOD-NAME@', project.mod_name
replace '@MOD-VERSION@', project.mod_version
replace '@MOD-MC-VERSION@', project.minecraft_version
replace '@FORGELIN-VERSION@', project.forgelin_version
replace '@FORGE-VERSION@', project.forge_version
replaceIn 'constants.kt'
}
// Mad hacks to make source replacements work for Kotlin
// "stolen" from: https://github.com/PaleoCrafter/VanillaImmersion/blob/ee82ecafb76659cf7d7822a722c8f63f43f41d01/build.gradle#L119-L136
import net.minecraftforge.gradle.user.TaskSourceCopy
for (set in sourceSets) {
def taskName = "source${set.name.capitalize()}Kotlin"
def dir = new File(project.getBuildDir(), "sources/${set.name}/kotlin")
task(taskName, type: TaskSourceCopy) {
source = set.getKotlin()
output = dir
}
def compileTask = tasks[set.getCompileTaskName("kotlin")]
compileTask.source = dir
compileTask.dependsOn taskName
def dirPath = dir.toPath()
compileKotlin.include {
return it.file.toPath().startsWith(dirPath)
}
}
// end of "stolen" part :)
configurations {
compile.extendsFrom exportedCompile
deployerJars
}
repositories {
mavenCentral()
jcenter()
maven { name='forgelin'; url='http://maven.shadowfacts.net' }
maven { name='tesla'; url='http://maven.epoxide.xyz' }
maven { name='redstone flux'; url='http://maven.covers1624.net' }
maven { name='build craft'; url='https://www.mod-buildcraft.com/maven' }
mavenLocal()
}
dependencies {
deployerJars 'org.apache.maven.wagon:wagon-ftp:2.2'
compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jre8:${project.kotlin_version}"
compile "net.shadowfacts:Forgelin:${project.forgelin_version}"
compileOnly "net.darkhax.tesla:Tesla-${project.minecraft_version}:${project.tesla_version}:deobf"
compileOnly "com.mod-buildcraft:buildcraft-api:${project.bc_version}"
compile "cofh:RedstoneFlux:${project.minecraft_version}-${project.redstoneflux_version}:universal"
}
processResources {
inputs.property "version", project.version
inputs.property "mcversion", project.minecraft.version
inputs.property "modid", project.mod_id
inputs.property "modname", project.mod_name
from(sourceSets.main.resources.srcDirs) {
include '**/*.info'
include '**/*.properties'
// replace version and mcversion
expand 'version':project.version, 'mcversion':project.minecraft.version, 'modid': project.mod_id, 'modname': project.mod_name
}
from(sourceSets.main.resources.srcDirs) {
exclude '**/*.info'
exclude '**/*.properties'
}
}
task sourcesJar(type: Jar) {
from sourceSets.main.allSource
classifier = 'sources'
}
task deobfJar(type: Jar) {
from sourceSets.main.output
classifier = 'deobf'
}
artifacts {
archives sourceJar, deobfJar
}
if (project.hasProperty('mavenFTPServer') && project.hasProperty('mavenFTPUser') && project.hasProperty('mavenFTPPassword')) {
uploadArchives {
repositories.mavenDeployer {
dependsOn build, deobfJar, sourcesJar
configuration = configurations.deployerJars
repository(url: project.mavenFTPServer) {
authentication(userName: project.mavenFTPUser, password: mavenFTPPassword)
}
}
}
uploadArchives.dependsOn build, sourcesJar, deobfJar
}