forked from GStefanowich/MC-Server-Protection
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
142 lines (118 loc) · 3.99 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
plugins {
id 'java-library'
id 'idea'
id 'maven-publish'
id 'fabric-loom' version '1.3-SNAPSHOT'
id 'com.github.johnrengelman.shadow' version '8.1.1'
}
String bluemapVersion = 'v2.6.0'
String permsVersion = '0.2-SNAPSHOT'
gradle.startParameter.showStacktrace = ShowStacktrace.ALWAYS
version = project.version
logger.lifecycle("Building the project.")
allprojects {
group = "net.theelm.sewingmachine"
apply plugin: 'java-library'
apply plugin: 'fabric-loom'
apply plugin: 'com.github.johnrengelman.shadow'
tasks.withType(JavaCompile) {
options.release = 17
options.encoding = "UTF-8"
}
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this task, sources will not be generated.
task sourcesJar(type: Jar, dependsOn: classes) {
archiveClassifier.set('sources')
from sourceSets.main.allSource
}
java {
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this line, sources will not be generated.
withSourcesJar()
}
if (project.name == 'sewingmachine-base' || project.name == 'sewingmachine') {
repositories {
// Jitpack for Bluemap
maven { url 'https://jitpack.io' }
}
}
repositories {
// for Fabric Permissions API
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}
allprojects.each { p ->
loom.mods.register(p.name) {
sourceSet p.sourceSets.main
}
}
processResources {
afterEvaluate {
from(sourceSets.main.resources.srcDirs) {
include 'fabric.mod.json'
expand (
'version': "${project.mod_version}",
'minecraft': "${project.minecraft_version}",
'fabricloader': "${project.loader_version}",
'fabricapi': "${project.fabric_version}"
)
duplicatesStrategy DuplicatesStrategy.INCLUDE
}
}
}
dependencies {
//to change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
// Fabric API modImplementation (Without including)
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
// Permissions API modImplementation (include jar-in-jar)
include modImplementation(group: 'me.lucko', name: 'fabric-permissions-api', version: permsVersion)
// Include IntelliJ annotations
implementation 'com.intellij:annotations:+@jar'
// Include necessary dependencies in either BASE or the entire module
if (project.name == 'sewingmachine' || project.name == 'sewingmachine-base') {
// Bluemap API
include modImplementation(group: 'com.github.BlueMap-Minecraft', name: 'BlueMapAPI', version: bluemapVersion)
// Include MySQL
compileOnly(group: 'mysql', name: 'mysql-connector-java', version: '8.0.15')
} else {
// modimplementation will break this
implementation project(path: ':sewingmachine-base', configuration: 'namedElements')
}
}
tasks.withType(AbstractArchiveTask).configureEach {
preserveFileTimestamps = false
reproducibleFileOrder = true
}
}
// Run subproject tasks when running the main task
subprojects.each {
jar.dependsOn("${it.path}:jar")
remapJar.dependsOn("${it.path}:remapJar")
compileJava.dependsOn("${it.path}:compileJava")
}
// All subprojects should depend on the '-base' project
subprojects {
// Set the name for the subproject jar
remapJar {
archiveFileName = "${project.name} ${project.mod_version} mc-${project.minecraft_version}.jar"
}
}
// Main 'sewing-machine' should depend on all subprojects (package jars)
dependencies {
subprojects.each {
implementation project(path: it.path, configuration: 'namedElements')
}
}
remapJar {
afterEvaluate {
subprojects.each {
nestedJars.from project("${it.path}").tasks.getByName("remapJar")
}
}
addNestedDependencies = true
archiveFileName = "${project.name}-${project.mod_version}_mc-${project.minecraft_version}.jar"
}