161 lines
4.9 KiB
Groovy
161 lines
4.9 KiB
Groovy
import groovy.json.JsonSlurper
|
|
|
|
plugins {
|
|
id 'java'
|
|
id 'com.gradleup.shadow' version '9.6.0'
|
|
}
|
|
|
|
group = 'de.maxhenkel.voicechat'
|
|
version = findProperty('buildVersion') ?: '1.0.0'
|
|
|
|
java {
|
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
targetCompatibility = JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven { url = 'https://hub.spigotmc.org/nexus/content/groups/public/' }
|
|
maven { url = 'https://libraries.minecraft.net/' }
|
|
maven { url = 'https://repo.extendedclip.com/content/repositories/placeholderapi/' }
|
|
maven { url = 'https://maven.maxhenkel.de/repository/public' }
|
|
maven { url = 'https://repo.viaversion.com/' }
|
|
}
|
|
|
|
configurations {
|
|
shadow
|
|
}
|
|
|
|
dependencies {
|
|
compileOnly 'org.bukkit:bukkit:1.8.8-R0.1-SNAPSHOT'
|
|
compileOnly 'com.google.code.findbugs:jsr305:3.0.2'
|
|
compileOnly 'me.clip:placeholderapi:2.12.2'
|
|
compileOnly 'com.viaversion:viaversion-bukkit:5.7.2'
|
|
compileOnly 'com.viaversion:viaversion-common:5.7.2'
|
|
|
|
implementation 'io.netty:netty-all:4.1.132.Final'
|
|
|
|
implementation 'org.json:json:20251224'
|
|
shadow 'org.json:json:20251224'
|
|
implementation 'me.lucko:commodore:2.2'
|
|
shadow 'me.lucko:commodore:2.2'
|
|
implementation 'org.concentus:Concentus:1.0.1'
|
|
shadow 'org.concentus:Concentus:1.0.1'
|
|
implementation 'de.maxhenkel.configbuilder:configbuilder:2.1.0'
|
|
shadow 'de.maxhenkel.configbuilder:configbuilder:2.1.0'
|
|
}
|
|
|
|
sourceSets {
|
|
main {
|
|
java {
|
|
srcDirs = [
|
|
'source/api/src/main/java',
|
|
'source/bukkit/src/main/java',
|
|
layout.buildDirectory.dir('generated/sources/java').get().asFile
|
|
]
|
|
}
|
|
resources {
|
|
srcDirs = ['source/bukkit/src/main/resources']
|
|
exclude 'plugin.yml'
|
|
}
|
|
}
|
|
test {
|
|
java {
|
|
srcDirs = ['tests']
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.withType(JavaCompile).configureEach {
|
|
options.encoding = 'UTF-8'
|
|
options.release = 8
|
|
}
|
|
|
|
tasks.register('generateBuildConstants', Copy) {
|
|
from 'source/bukkit/src/template/java'
|
|
into layout.buildDirectory.dir('generated/sources/java')
|
|
expand compatibility_version: '20',
|
|
mod_compatible_version: '2.6.x',
|
|
target_bukkit_version: '1.8.8-R0.1-SNAPSHOT',
|
|
plugin_name: 'Simple Voice Chat'
|
|
}
|
|
compileJava.dependsOn tasks.named('generateBuildConstants')
|
|
|
|
tasks.register('generateFallbackTranslations') {
|
|
def inputFile = file('source/common/src/main/resources/assets/voicechat/lang/en_us.json')
|
|
def outputFile = layout.buildDirectory.file('generated/sources/java/de/maxhenkel/voicechat/FallbackTranslations.java')
|
|
inputs.file inputFile
|
|
outputs.file outputFile
|
|
|
|
doLast {
|
|
def translations = new JsonSlurper().parse(inputFile)
|
|
def output = new StringBuilder('''package de.maxhenkel.voicechat;
|
|
|
|
import java.util.Collections;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
public class FallbackTranslations {
|
|
public static final Map<String, String> FALLBACK_TRANSLATIONS;
|
|
static {
|
|
Map<String, String> translations = new HashMap<>();
|
|
''')
|
|
translations.each { key, value ->
|
|
def k = key.toString().replace('\\', '\\\\').replace('\n', '\\n').replace('"', '\\"')
|
|
def v = value.toString().replace('\\', '\\\\').replace('\n', '\\n').replace('"', '\\"')
|
|
output.append(" translations.put(\"${k}\", \"${v}\");\n")
|
|
}
|
|
output.append(''' FALLBACK_TRANSLATIONS = Collections.unmodifiableMap(translations);
|
|
}
|
|
}
|
|
''')
|
|
outputFile.get().asFile.parentFile.mkdirs()
|
|
outputFile.get().asFile.text = output.toString()
|
|
}
|
|
}
|
|
compileJava.dependsOn tasks.named('generateFallbackTranslations')
|
|
|
|
processResources {
|
|
from('plugin.yml') {
|
|
filter { String line ->
|
|
line.startsWith('version:') ? "version: '${project.version}'" : line
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.named('jar') {
|
|
archiveClassifier = 'dev'
|
|
}
|
|
|
|
shadowJar {
|
|
configurations = [project.configurations.shadow]
|
|
archiveClassifier = ''
|
|
archiveFileName = "AsminVoiceChat-${project.version}.jar"
|
|
from('LICENSE-upstream.txt') {
|
|
rename { 'LICENSE_SimpleVoiceChat' }
|
|
}
|
|
relocate 'org.json', 'de.maxhenkel.voicechat.org.json'
|
|
relocate 'me.lucko.commodore', 'de.maxhenkel.voicechat.commodore'
|
|
relocate 'org.concentus', 'de.maxhenkel.voicechat.concentus'
|
|
relocate 'de.maxhenkel.configbuilder', 'de.maxhenkel.voicechat.configbuilder'
|
|
dependencies {
|
|
exclude(dependency('com.mojang:brigadier:.*'))
|
|
exclude(dependency('com.google.code.findbugs:jsr305:.*'))
|
|
}
|
|
}
|
|
|
|
tasks.named('build') {
|
|
dependsOn 'shadowJar'
|
|
dependsOn 'cryptoTest'
|
|
}
|
|
|
|
tasks.register('cryptoTest', JavaExec) {
|
|
dependsOn tasks.named('testClasses')
|
|
classpath = sourceSets.test.runtimeClasspath + files(shadowJar.archiveFile)
|
|
mainClass = 'ProtocolCryptoSelfTest'
|
|
}
|
|
|
|
tasks.withType(Test).configureEach {
|
|
failOnNoDiscoveredTests = false
|
|
}
|