Files
AsminVoicechat/build.gradle
T
asminme 71396a86a0
Build AsminVoicechat / build-and-release (push) Canceled after 12s
asminvoicechat second commit
2026-10-24 15:42:08 +02:00

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
}