141 lines
3.8 KiB
Groovy
141 lines
3.8 KiB
Groovy
import groovy.json.JsonSlurper
|
|
import java.nio.file.Files
|
|
|
|
plugins {
|
|
id 'java'
|
|
id 'io.papermc.paperweight.userdev' version '1.5.5'
|
|
id 'maven-publish'
|
|
}
|
|
|
|
group = 'me.unurled.sacredrealms'
|
|
version = '0.1.1'
|
|
def minecraft_version = '1.20.1'
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven {
|
|
name = "papermc-repo"
|
|
url = "https://repo.papermc.io/repository/maven-public/"
|
|
}
|
|
maven {
|
|
name = "sonatype"
|
|
url = "https://oss.sonatype.org/content/groups/public/"
|
|
}
|
|
maven {
|
|
name = "citizens"
|
|
url = "https://maven.citizensnpcs.co/repo"
|
|
}
|
|
maven {
|
|
name = "SacredRealms"
|
|
url = "https://git.unurled.me/api/packages/SacredRealms/maven"
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
// PaperMc
|
|
compileOnly "io.papermc.paper:paper-api:${minecraft_version}-R0.1-SNAPSHOT"
|
|
|
|
// NMS
|
|
paperweightDevelopmentBundle("io.papermc.paper:dev-bundle:${minecraft_version}-R0.1-SNAPSHOT")
|
|
|
|
// Citizens
|
|
compileOnly ("net.citizensnpcs:citizens-main:2.0.32-SNAPSHOT") {
|
|
exclude group: '*', module: '*'
|
|
}
|
|
}
|
|
|
|
def targetJavaVersion = 17
|
|
java {
|
|
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
|
|
sourceCompatibility = javaVersion
|
|
targetCompatibility = javaVersion
|
|
if (JavaVersion.current() < javaVersion) {
|
|
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
|
|
}
|
|
}
|
|
|
|
tasks.withType(JavaCompile).configureEach {
|
|
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
|
|
options.release = targetJavaVersion
|
|
}
|
|
}
|
|
|
|
processResources {
|
|
def props = [version: version]
|
|
inputs.properties props
|
|
filteringCharset 'UTF-8'
|
|
filesMatching('plugin.yml') {
|
|
expand props
|
|
}
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
maven(MavenPublication) {
|
|
artifactId = project.name
|
|
from components.java
|
|
}
|
|
}
|
|
repositories {
|
|
maven {
|
|
name = 'SacredRealms'
|
|
url = uri('https://git.unurled.me/api/packages/SacredRealms/maven')
|
|
|
|
credentials(HttpHeaderCredentials) {
|
|
name = "Authorization"
|
|
value = "token ${System.getenv('TOKEN')}"
|
|
}
|
|
|
|
authentication {
|
|
header(HttpHeaderAuthentication)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
def serverDir = file("${project.buildDir}/server")
|
|
def serverJar = file("${serverDir}/paper-${minecraft_version}.jar")
|
|
def pluginsDir = file("${serverDir}/plugins")
|
|
def pluginJar = file("${pluginsDir}/${archivesBaseName}.jar")
|
|
def buildJar = file("${project.buildDir}/libs/${archivesBaseName}-${version}-dev.jar")
|
|
def semver = minecraft_version.tokenize('.')
|
|
|
|
tasks.register('prepare') {
|
|
group 'server'
|
|
onlyIf {
|
|
!serverJar.exists()
|
|
}
|
|
doFirst {
|
|
serverDir.mkdirs()
|
|
def baseUrl = 'https://papermc.io/api/v2/projects/paper'
|
|
def builds = new URL("${baseUrl}/version_group/${semver[0]}.${semver[1]}/builds")
|
|
def latest = new JsonSlurper()
|
|
.parseText(builds.text)
|
|
.builds
|
|
.reverse()
|
|
.find { it.version == minecraft_version }
|
|
|
|
def fileName = latest.downloads.application.name
|
|
def jarUrl = new URL("${baseUrl}/versions/${latest.version}/builds/${latest.build}/downloads/${fileName}")
|
|
serverJar << jarUrl.openStream()
|
|
}
|
|
}
|
|
|
|
tasks.register('start', JavaExec) {
|
|
group 'server'
|
|
dependsOn 'prepare', 'build'
|
|
|
|
doFirst {
|
|
pluginsDir.mkdirs()
|
|
pluginJar.delete()
|
|
Files.createSymbolicLink(pluginJar.toPath(), buildJar.toPath())
|
|
}
|
|
|
|
classpath = files(serverJar)
|
|
workingDir = serverDir
|
|
main = 'io.papermc.paperclip.Main'
|
|
jvmArgs = [ '-Ddisable.watchdog=true', '-Dcom.mojang.eula.agree=true' ]
|
|
args = [ '--nogui' ]
|
|
standardInput = System.in
|
|
}
|
|
|