plugins { id 'java' id 'com.github.johnrengelman.shadow' version '7.1.2' id 'maven-publish' } group 'WildLoaders' version = "2023.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: 'com.github.johnrengelman.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:b2" } 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 } } dependencies { implementation fileTree(rootProject.archiveFolder.getAbsolutePath()) implementation project(":API") implementation 'com.bgsoftware.common.reflection:ReflectionUtils:b2' implementation 'com.bgsoftware.common.config:CommentedConfiguration:1.0.3' implementation 'com.bgsoftware.common.dependencies:DependenciesManager:b2' implementation 'com.bgsoftware.common.nmsloader:NMSLoader:b3' // 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) 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) { 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