plugins { id 'java' id 'io.github.goooler.shadow' version '8.1.7' id 'maven-publish' } group 'WildLoaders' version = "2024.3" project.ext { archiveFolder = file("archive/") targetFolder = file("target/") buildVersion = System.getenv("BUILD_NUMBER") == null || Boolean.parseBoolean(System.getenv("STABLE_BUILD")) ? version : version + "-b" + System.getenv("BUILD_NUMBER") } allprojects { apply plugin: 'java' apply plugin: 'io.github.goooler.shadow' java { toolchain { languageVersion.set(JavaLanguageVersion.of(8)) } } repositories { maven { url 'https://repo.bg-software.com/repository/nms/' } maven { url 'https://repo.bg-software.com/repository/api/' } maven { url 'https://repo.bg-software.com/repository/common/' } maven { url 'https://repo.bg-software.com/repository/dependencies/' } } dependencies { compileOnly "com.bgsoftware.common.reflection:ReflectionUtils:b5" } task checkDebug() { Set filesWithDebug = fileTree('src/main/java').filter { file -> file.text.contains('Bukkit.broadcastMessage') }.getFiles() if(!filesWithDebug.isEmpty()) throw new GradleException("Found debug messages: " + filesWithDebug) } build { dependsOn checkDebug dependsOn shadowJar } } subprojects { shadowJar { archiveFileName = "${project.name}.jar" destinationDirectory = rootProject.archiveFolder } } repositories { mavenCentral() } dependencies { implementation fileTree(rootProject.archiveFolder.getAbsolutePath()) implementation project(":API") implementation 'com.bgsoftware.common.reflection:ReflectionUtils:b5' implementation 'com.bgsoftware.common.updater:Updater:b1' implementation 'com.bgsoftware.common.config:CommentedConfiguration:b1' implementation 'com.bgsoftware.common.dependencies:DependenciesManager:b2' implementation 'com.bgsoftware.common.nmsloader:NMSLoader:b8' implementation 'org.bstats:bstats-bukkit:3.0.0' // Spigot jars compileOnly "org.spigotmc:v1_8_R3:latest" compileOnly 'org.spigotmc:v1_16_R3-Tuinity:latest' } jar { from { for (File file : rootProject.archiveFolder.listFiles()) { zipTree(file) } } } processResources { outputs.upToDateWhen { false } eachFile { details -> if (details.name.contentEquals('plugin.yml')) { filter { String line -> line.replace('${project.version}', rootProject.buildVersion) } } } } shadowJar { dependsOn(jar) relocate 'org.bstats', 'com.bgsoftware.wildloaders.libs.org.bstats' relocate 'com.bgsoftware.common', 'com.bgsoftware.wildloaders.libs.com.bgsoftware.common' archiveFileName = rootProject.name + "-" + rootProject.buildVersion + ".jar" delete fileTree(rootProject.targetFolder.getAbsolutePath()) exclude '*exclude.jar' destinationDirectory = rootProject.targetFolder from sourceSets.getByName("main").output configurations = [project.configurations.getByName("runtimeClasspath")] } task copyAPI(type: Copy, dependsOn: ':API:build') { from rootProject.archiveFolder.getAbsolutePath() + '/API.jar' into rootProject.targetFolder.getAbsolutePath() rename('API.jar', rootProject.name + 'API.jar') } clean { delete rootProject.archiveFolder } build { dependsOn shadowJar dependsOn copyAPI dependsOn clean } publish.shouldRunAfter shadowJar shadowJar.shouldRunAfter build build.shouldRunAfter subprojects.build clean.shouldRunAfter copyAPI shadowJar.dependsOn subprojects.build compileJava.dependsOn childProjects.values().shadowJar