import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import org.gradle.language.jvm.tasks.ProcessResources plugins { id 'java' id 'io.papermc.paperweight.userdev' version '2.0.0-beta.21' id 'com.gradleup.shadow' version '8.3.6' } group = 'cn.infstar' version = '1.6.0' repositories { mavenCentral() maven { name = 'papermc' url = uri('https://repo.papermc.io/repository/maven-public/') } } dependencies { paperweight.paperDevBundle('1.21.11-R0.1-SNAPSHOT') implementation project(':compat-api') } java { toolchain.languageVersion.set(JavaLanguageVersion.of(21)) } paperweight.reobfArtifactConfiguration = io.papermc.paperweight.userdev.ReobfArtifactConfiguration.getMOJANG_PRODUCTION() tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' } tasks.withType(ProcessResources).configureEach { filteringCharset = 'UTF-8' } tasks.named('processResources', ProcessResources).configure { inputs.property('version', project.version) filesMatching('paper-plugin.yml') { expand('version': project.version) } } tasks.named('jar').configure { enabled = false } tasks.named('shadowJar', ShadowJar).configure { group = 'build' description = '构建包含全部运行期可开关模块的 EssentialsC 插件。' archiveFileName.set("EssentialsC-${project.version}.jar") configurations = [project.configurations.runtimeClasspath] [ project(':versions:v1_21_11'), project(':versions:v26_1_2'), project(':versions:v26_2') ].each { adapterProject -> def adapterJar = adapterProject.tasks.named('jar') dependsOn(adapterJar) from(adapterJar.flatMap { it.archiveFile }.map { archiveFile -> zipTree(archiveFile) }) } } tasks.named('assemble').configure { dependsOn(tasks.named('shadowJar')) } def registerTestServerDeployTask = { String taskName, String serverPath, String serverName -> tasks.register(taskName, Copy) { group = 'deployment' description = "构建并部署插件到本地 ${serverName} 测试服务器。" def artifact = tasks.named('shadowJar').flatMap { it.archiveFile } def pluginsDir = layout.projectDirectory.dir("${serverPath}/plugins") dependsOn(tasks.named('shadowJar')) from(artifact) into(pluginsDir) doFirst { delete(fileTree(pluginsDir) { include 'EssentialsC*.jar' }) delete(pluginsDir.file('EssentialsC').asFile) } } } registerTestServerDeployTask('deployToPaper12111', 'test-server/paper-1.21.11', 'Paper 1.21.11') registerTestServerDeployTask('deployToPaper2612', 'test-server/paper-26.1.2', 'Paper 26.1.2') registerTestServerDeployTask('deployToPaper262', 'test-server/paper-26.2', 'Paper 26.2')