From b6555dcac24ea896d554076c31e3c5d9f925f44e Mon Sep 17 00:00:00 2001 From: Egor Taranov Date: Sat, 13 Jun 2026 20:15:49 +0200 Subject: [PATCH 1/4] update Gradle wrapper to 9.5.1 and migrate shadow plugin --- build.gradle | 17 ++--------------- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/build.gradle b/build.gradle index 662a53493..400e2e79e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,21 +1,8 @@ -// Workaround for Shadow not supporting Java 19 classes. -// Remove this once Shadow updates. -// See: https://github.com/johnrengelman/shadow/pull/770 -// See: https://discord.com/channels/722722769950998560/793019909055578113/978939925061857315 -buildscript { - configurations.all { - resolutionStrategy { - force("org.ow2.asm:asm:9.5") - force("org.ow2.asm:asm-commons:9.5") - } - } -} - plugins { - //id "com.github.johnrengelman.shadow" version "7.1.0" - id "io.github.goooler.shadow" version "8.1.7" + id "com.gradleup.shadow" version "9.4.2" id 'java' id 'maven-publish' + id 'io.papermc.paperweight.userdev' version '2.0.0-beta.21' apply false } apply plugin: 'eclipse' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ca025c83a..5dd3c0121 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 36c35215b9cc5f1653a46513ec692d5dc83daa4a Mon Sep 17 00:00:00 2001 From: Egor Taranov Date: Sat, 13 Jun 2026 20:17:26 +0200 Subject: [PATCH 2/4] migrate deprecated Gradle API usage across all modules --- DynmapCore/build.gradle | 19 +++++++++---- DynmapCoreAPI/build.gradle | 5 +++- build.gradle | 12 ++++++--- bukkit-helper-113-2/build.gradle | 5 +++- bukkit-helper-114-1/build.gradle | 5 +++- bukkit-helper-115/build.gradle | 5 +++- bukkit-helper-116-2/build.gradle | 5 +++- bukkit-helper-116-3/build.gradle | 5 +++- bukkit-helper-116-4/build.gradle | 5 +++- bukkit-helper-116/build.gradle | 5 +++- bukkit-helper-117/build.gradle | 5 +++- bukkit-helper-118-2/build.gradle | 5 +++- bukkit-helper-118/build.gradle | 5 +++- bukkit-helper-119-3/build.gradle | 5 +++- bukkit-helper-119-4/build.gradle | 5 +++- bukkit-helper-119/build.gradle | 5 +++- bukkit-helper-120-2/build.gradle | 5 +++- bukkit-helper-120-4/build.gradle | 5 +++- bukkit-helper-120-5/build.gradle | 5 +++- bukkit-helper-120/build.gradle | 5 +++- bukkit-helper-121-10/build.gradle | 5 +++- bukkit-helper-121-11/build.gradle | 5 +++- bukkit-helper-121-3/build.gradle | 5 +++- bukkit-helper-121-4/build.gradle | 5 +++- bukkit-helper-121-5/build.gradle | 5 +++- bukkit-helper-121-6/build.gradle | 5 +++- bukkit-helper-121/build.gradle | 5 +++- bukkit-helper/build.gradle | 5 +++- dynmap-api/build.gradle | 5 +++- fabric-1.14.4/build.gradle | 19 +++++++------ fabric-1.15.2/build.gradle | 19 +++++++------ fabric-1.16.4/build.gradle | 19 +++++++------ fabric-1.17.1/build.gradle | 19 +++++++------ fabric-1.18.2/build.gradle | 24 ++++++++++------- fabric-1.19.4/build.gradle | 24 ++++++++++------- fabric-1.20.6/build.gradle | 24 ++++++++++------- fabric-1.21.11/build.gradle | 24 ++++++++++------- fabric-1.21.6/build.gradle | 24 ++++++++++------- fabric-1.21.9-10/build.gradle | 24 ++++++++++------- forge-1.12.2/build.gradle | 2 +- forge-1.14.4/build.gradle | 10 +++---- forge-1.15.2/build.gradle | 10 +++---- forge-1.16.5/build.gradle | 10 +++---- forge-1.17.1/build.gradle | 10 +++---- forge-1.18.2/build.gradle | 10 +++---- forge-1.19.3/build.gradle | 10 +++---- forge-1.20.6/build.gradle | 10 +++---- forge-1.21.10/build.gradle | 10 +++---- forge-1.21.11/build.gradle | 10 +++---- forge-1.21.6/build.gradle | 10 +++---- settings.gradle | 45 +++++++++++++++++-------------- spigot/build.gradle | 1 - 52 files changed, 340 insertions(+), 194 deletions(-) diff --git a/DynmapCore/build.gradle b/DynmapCore/build.gradle index d5955eebf..7cfad6fe5 100644 --- a/DynmapCore/build.gradle +++ b/DynmapCore/build.gradle @@ -8,7 +8,10 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} // Need this here so eclipse task generates correctly. dependencies { implementation project(':DynmapCoreAPI') @@ -64,12 +67,18 @@ jar { } shadowJar { + configurations = [project.configurations.runtimeClasspath] dependencies { include(dependency('com.googlecode.json-simple:json-simple:')) include(dependency('org.yaml:snakeyaml:')) include(dependency('com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:')) - include(dependency('javax.servlet::')) - include(dependency('org.eclipse.jetty::')) + include(dependency('javax.servlet:javax.servlet-api:')) + include(dependency('org.eclipse.jetty:jetty-server:')) + include(dependency('org.eclipse.jetty:jetty-servlet:')) + include(dependency('org.eclipse.jetty:jetty-util:')) + include(dependency('org.eclipse.jetty:jetty-http:')) + include(dependency('org.eclipse.jetty:jetty-io:')) + include(dependency('org.eclipse.jetty:jetty-security:')) include(dependency('org.eclipse.jetty.orbit:javax.servlet:')) include(dependency('org.postgresql:postgresql:')) include(dependency('io.github.linktosriram.s3lite:core:')) @@ -77,8 +86,8 @@ shadowJar { include(dependency('io.github.linktosriram.s3lite:http-client-url-connection:')) include(dependency('io.github.linktosriram.s3lite:http-client-spi:')) include(dependency('io.github.linktosriram.s3lite:util:')) - include(dependency('jakarta.xml.bind::')) - include(dependency('com.sun.xml.bind::')) + include(dependency('jakarta.xml.bind:jakarta.xml.bind-api:')) + include(dependency('com.sun.xml.bind:jaxb-impl:')) include(dependency(':DynmapCoreAPI')) exclude("META-INF/maven/**") exclude("META-INF/services/**") diff --git a/DynmapCoreAPI/build.gradle b/DynmapCoreAPI/build.gradle index 93f716856..836c1c175 100644 --- a/DynmapCoreAPI/build.gradle +++ b/DynmapCoreAPI/build.gradle @@ -6,7 +6,10 @@ eclipse { name = "Dynmap(DynmapCoreAPI)" } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} // Need this here so eclipse task generates correctly. description = "DynmapCoreAPI" diff --git a/build.gradle b/build.gradle index 400e2e79e..8c3bb6b63 100644 --- a/build.gradle +++ b/build.gradle @@ -39,13 +39,17 @@ ext { globals = new Globals() } -subprojects { - apply plugin: "io.github.goooler.shadow" +subprojects { + if (!it.name.startsWith('fabric-') && !it.name.startsWith('forge-')) { + apply plugin: "com.gradleup.shadow" + } apply plugin: 'java' apply plugin: 'maven-publish' - sourceCompatibility = 1.8 - targetCompatibility = 1.8 + java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } diff --git a/bukkit-helper-113-2/build.gradle b/bukkit-helper-113-2/build.gradle index c15ea7a28..2c50ca8bc 100644 --- a/bukkit-helper-113-2/build.gradle +++ b/bukkit-helper-113-2/build.gradle @@ -8,7 +8,10 @@ eclipse { description = 'bukkit-helper-1.13.2' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-114-1/build.gradle b/bukkit-helper-114-1/build.gradle index 2b3f7f249..ed98cdd3d 100644 --- a/bukkit-helper-114-1/build.gradle +++ b/bukkit-helper-114-1/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.14.1' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-115/build.gradle b/bukkit-helper-115/build.gradle index 1cafc4a33..9a90137f0 100644 --- a/bukkit-helper-115/build.gradle +++ b/bukkit-helper-115/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.15' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-116-2/build.gradle b/bukkit-helper-116-2/build.gradle index 8f6102507..4de5d9dcc 100644 --- a/bukkit-helper-116-2/build.gradle +++ b/bukkit-helper-116-2/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.16.2' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-116-3/build.gradle b/bukkit-helper-116-3/build.gradle index 9a7dcf191..56d635102 100644 --- a/bukkit-helper-116-3/build.gradle +++ b/bukkit-helper-116-3/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.16.3' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-116-4/build.gradle b/bukkit-helper-116-4/build.gradle index 6a0df89ba..d8b8291ff 100644 --- a/bukkit-helper-116-4/build.gradle +++ b/bukkit-helper-116-4/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.16.4' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-116/build.gradle b/bukkit-helper-116/build.gradle index c3e81f899..59dea8bdd 100644 --- a/bukkit-helper-116/build.gradle +++ b/bukkit-helper-116/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.16' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-117/build.gradle b/bukkit-helper-117/build.gradle index fc862dffb..fcc1654bf 100644 --- a/bukkit-helper-117/build.gradle +++ b/bukkit-helper-117/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.17' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(16) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_16 + targetCompatibility = JavaVersion.VERSION_16 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-118-2/build.gradle b/bukkit-helper-118-2/build.gradle index cc86d1431..14a9e828c 100644 --- a/bukkit-helper-118-2/build.gradle +++ b/bukkit-helper-118-2/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.18.2' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-118/build.gradle b/bukkit-helper-118/build.gradle index f7093a23d..489031c31 100644 --- a/bukkit-helper-118/build.gradle +++ b/bukkit-helper-118/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.18' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-119-3/build.gradle b/bukkit-helper-119-3/build.gradle index 8a0525d12..f351661d2 100644 --- a/bukkit-helper-119-3/build.gradle +++ b/bukkit-helper-119-3/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.19.3' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-119-4/build.gradle b/bukkit-helper-119-4/build.gradle index 1f7a9179f..c0a4f33bf 100644 --- a/bukkit-helper-119-4/build.gradle +++ b/bukkit-helper-119-4/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.19.4' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-119/build.gradle b/bukkit-helper-119/build.gradle index 4061ec3db..44f58b22d 100644 --- a/bukkit-helper-119/build.gradle +++ b/bukkit-helper-119/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.19' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-120-2/build.gradle b/bukkit-helper-120-2/build.gradle index 6cca6f432..d4a3383af 100644 --- a/bukkit-helper-120-2/build.gradle +++ b/bukkit-helper-120-2/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.20.2' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-120-4/build.gradle b/bukkit-helper-120-4/build.gradle index 33dc9cf40..e719f0b77 100644 --- a/bukkit-helper-120-4/build.gradle +++ b/bukkit-helper-120-4/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.20.4' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-120-5/build.gradle b/bukkit-helper-120-5/build.gradle index 15448e084..f9c130c01 100644 --- a/bukkit-helper-120-5/build.gradle +++ b/bukkit-helper-120-5/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.20.5' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-120/build.gradle b/bukkit-helper-120/build.gradle index a32246715..72f012d01 100644 --- a/bukkit-helper-120/build.gradle +++ b/bukkit-helper-120/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.20' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-121-10/build.gradle b/bukkit-helper-121-10/build.gradle index 59fff7240..5ae59e842 100644 --- a/bukkit-helper-121-10/build.gradle +++ b/bukkit-helper-121-10/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.21.10' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-121-11/build.gradle b/bukkit-helper-121-11/build.gradle index 5a8ccc1f0..14be1b2df 100644 --- a/bukkit-helper-121-11/build.gradle +++ b/bukkit-helper-121-11/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.21.11' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-121-3/build.gradle b/bukkit-helper-121-3/build.gradle index 47b4464ac..962e7ffce 100644 --- a/bukkit-helper-121-3/build.gradle +++ b/bukkit-helper-121-3/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.21.3' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-121-4/build.gradle b/bukkit-helper-121-4/build.gradle index 863066193..921a2c69d 100644 --- a/bukkit-helper-121-4/build.gradle +++ b/bukkit-helper-121-4/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.21.4' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-121-5/build.gradle b/bukkit-helper-121-5/build.gradle index 0b5680747..f5b9e904c 100644 --- a/bukkit-helper-121-5/build.gradle +++ b/bukkit-helper-121-5/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.21.5' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-121-6/build.gradle b/bukkit-helper-121-6/build.gradle index e4aa9c39a..3005f209d 100644 --- a/bukkit-helper-121-6/build.gradle +++ b/bukkit-helper-121-6/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.21.7' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper-121/build.gradle b/bukkit-helper-121/build.gradle index 6d8ecf422..a2f4e786d 100644 --- a/bukkit-helper-121/build.gradle +++ b/bukkit-helper-121/build.gradle @@ -6,7 +6,10 @@ eclipse { description = 'bukkit-helper-1.21' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} dependencies { implementation project(':bukkit-helper') diff --git a/bukkit-helper/build.gradle b/bukkit-helper/build.gradle index 9263aef69..c3d196662 100644 --- a/bukkit-helper/build.gradle +++ b/bukkit-helper/build.gradle @@ -8,7 +8,10 @@ eclipse { description = 'bukkit-helper' -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} // Need this here so eclipse task generates correctly. dependencies { implementation project(':dynmap-api') diff --git a/dynmap-api/build.gradle b/dynmap-api/build.gradle index fe9231737..0c36b112f 100644 --- a/dynmap-api/build.gradle +++ b/dynmap-api/build.gradle @@ -8,7 +8,10 @@ eclipse { description = "dynmap-api" -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} // Need this here so eclipse task generates correctly. dependencies { compileOnly group: 'org.bukkit', name: 'bukkit', version:'1.7.10-R0.1-SNAPSHOT' diff --git a/fabric-1.14.4/build.gradle b/fabric-1.14.4/build.gradle index d2c9b13e9..6311e2abd 100644 --- a/fabric-1.14.4/build.gradle +++ b/fabric-1.14.4/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.13.6' + id 'fabric-loom' version '1.15.5' } apply plugin: 'eclipse' @@ -10,13 +10,15 @@ eclipse { } } -archivesBaseName = "Dynmap" +base { archivesName = "Dynmap" } version = parent.version group = parent.group configurations { - shadow - implementation.extendsFrom(shadow) + bundle { + canBeResolved = true + canBeConsumed = false + } } dependencies { @@ -27,7 +29,8 @@ dependencies { compileOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' - shadow project(path: ':DynmapCore', configuration: 'shadow') + implementation project(path: ':DynmapCore', configuration: 'shadow') + bundle project(path: ':DynmapCore', configuration: 'shadow') } processResources { @@ -46,16 +49,16 @@ java { jar { from "LICENSE" from { - configurations.shadow.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } + configurations.bundle.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } } } remapJar { - archiveFileName = "${archivesBaseName}-${project.version}-fabric-${project.minecraft_version}.jar" + archiveFileName = "${base.archivesName.get()}-${project.version}-fabric-${project.minecraft_version}.jar" destinationDirectory = file '../target' } remapJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } diff --git a/fabric-1.15.2/build.gradle b/fabric-1.15.2/build.gradle index c3b32a161..9823694bf 100644 --- a/fabric-1.15.2/build.gradle +++ b/fabric-1.15.2/build.gradle @@ -1,8 +1,8 @@ plugins { - id 'fabric-loom' version '1.13.6' + id 'fabric-loom' version '1.15.5' } -archivesBaseName = "Dynmap" +base { archivesName = "Dynmap" } version = parent.version group = parent.group @@ -13,8 +13,10 @@ eclipse { } configurations { - shadow - implementation.extendsFrom(shadow) + bundle { + canBeResolved = true + canBeConsumed = false + } } dependencies { @@ -25,7 +27,8 @@ dependencies { compileOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' - shadow project(path: ':DynmapCore', configuration: 'shadow') + implementation project(path: ':DynmapCore', configuration: 'shadow') + bundle project(path: ':DynmapCore', configuration: 'shadow') } processResources { @@ -44,16 +47,16 @@ java { jar { from "LICENSE" from { - configurations.shadow.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } + configurations.bundle.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } } } remapJar { - archiveFileName = "${archivesBaseName}-${project.version}-fabric-${project.minecraft_version}.jar" + archiveFileName = "${base.archivesName.get()}-${project.version}-fabric-${project.minecraft_version}.jar" destinationDirectory = file '../target' } remapJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } diff --git a/fabric-1.16.4/build.gradle b/fabric-1.16.4/build.gradle index e3a80ca46..12d688553 100644 --- a/fabric-1.16.4/build.gradle +++ b/fabric-1.16.4/build.gradle @@ -1,8 +1,8 @@ plugins { - id 'fabric-loom' version '1.13.6' + id 'fabric-loom' version '1.15.5' } -archivesBaseName = "Dynmap" +base { archivesName = "Dynmap" } version = parent.version group = parent.group @@ -13,8 +13,10 @@ eclipse { } configurations { - shadow - implementation.extendsFrom(shadow) + bundle { + canBeResolved = true + canBeConsumed = false + } } dependencies { @@ -25,7 +27,8 @@ dependencies { compileOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' - shadow project(path: ':DynmapCore', configuration: 'shadow') + implementation project(path: ':DynmapCore', configuration: 'shadow') + bundle project(path: ':DynmapCore', configuration: 'shadow') } processResources { @@ -44,16 +47,16 @@ java { jar { from "LICENSE" from { - configurations.shadow.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } + configurations.bundle.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } } } remapJar { - archiveFileName = "${archivesBaseName}-${project.version}-fabric-${project.minecraft_version}.jar" + archiveFileName = "${base.archivesName.get()}-${project.version}-fabric-${project.minecraft_version}.jar" destinationDirectory = file '../target' } remapJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } diff --git a/fabric-1.17.1/build.gradle b/fabric-1.17.1/build.gradle index db7e77641..6e655e451 100644 --- a/fabric-1.17.1/build.gradle +++ b/fabric-1.17.1/build.gradle @@ -1,8 +1,8 @@ plugins { - id 'fabric-loom' version '1.13.6' + id 'fabric-loom' version '1.15.5' } -archivesBaseName = "Dynmap" +base { archivesName = "Dynmap" } version = parent.version group = parent.group @@ -13,8 +13,10 @@ eclipse { } configurations { - shadow - implementation.extendsFrom(shadow) + bundle { + canBeResolved = true + canBeConsumed = false + } } dependencies { @@ -25,7 +27,8 @@ dependencies { compileOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' - shadow project(path: ':DynmapCore', configuration: 'shadow') + implementation project(path: ':DynmapCore', configuration: 'shadow') + bundle project(path: ':DynmapCore', configuration: 'shadow') } processResources { @@ -44,16 +47,16 @@ java { jar { from "LICENSE" from { - configurations.shadow.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } + configurations.bundle.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } } } remapJar { - archiveFileName = "${archivesBaseName}-${project.version}-fabric-${project.minecraft_version}.jar" + archiveFileName = "${base.archivesName.get()}-${project.version}-fabric-${project.minecraft_version}.jar" destinationDirectory = file '../target' } remapJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } diff --git a/fabric-1.18.2/build.gradle b/fabric-1.18.2/build.gradle index 48fada538..2687dd861 100644 --- a/fabric-1.18.2/build.gradle +++ b/fabric-1.18.2/build.gradle @@ -1,9 +1,9 @@ plugins { - id 'fabric-loom' version '1.13.6' + id 'fabric-loom' version '1.15.5' } -archivesBaseName = "Dynmap" +base { archivesName = "Dynmap" } version = parent.version group = parent.group @@ -13,11 +13,16 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} configurations { - shadow - implementation.extendsFrom(shadow) + bundle { + canBeResolved = true + canBeConsumed = false + } } repositories { @@ -33,7 +38,8 @@ dependencies { compileOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' - shadow project(path: ':DynmapCore', configuration: 'shadow') + implementation project(path: ':DynmapCore', configuration: 'shadow') + bundle project(path: ':DynmapCore', configuration: 'shadow') modCompileOnly "me.lucko:fabric-permissions-api:0.4.0" compileOnly 'net.luckperms:api:5.4' @@ -55,16 +61,16 @@ java { jar { from "LICENSE" from { - configurations.shadow.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } + configurations.bundle.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } } } remapJar { - archiveFileName = "${archivesBaseName}-${project.version}-fabric-${project.minecraft_version}.jar" + archiveFileName = "${base.archivesName.get()}-${project.version}-fabric-${project.minecraft_version}.jar" destinationDirectory = file '../target' } remapJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } diff --git a/fabric-1.19.4/build.gradle b/fabric-1.19.4/build.gradle index b3e71012a..7516f7bfa 100644 --- a/fabric-1.19.4/build.gradle +++ b/fabric-1.19.4/build.gradle @@ -1,8 +1,8 @@ plugins { - id 'fabric-loom' version '1.13.6' + id 'fabric-loom' version '1.15.5' } -archivesBaseName = "Dynmap" +base { archivesName = "Dynmap" } version = parent.version group = parent.group @@ -12,11 +12,16 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} configurations { - shadow - implementation.extendsFrom(shadow) + bundle { + canBeResolved = true + canBeConsumed = false + } } repositories { @@ -32,7 +37,8 @@ dependencies { compileOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' - shadow project(path: ':DynmapCore', configuration: 'shadow') + implementation project(path: ':DynmapCore', configuration: 'shadow') + bundle project(path: ':DynmapCore', configuration: 'shadow') modCompileOnly "me.lucko:fabric-permissions-api:0.4.0" compileOnly 'net.luckperms:api:5.4' @@ -58,16 +64,16 @@ java { jar { from "LICENSE" from { - configurations.shadow.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } + configurations.bundle.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } } } remapJar { - archiveFileName = "${archivesBaseName}-${project.version}-fabric-${project.minecraft_version}.jar" + archiveFileName = "${base.archivesName.get()}-${project.version}-fabric-${project.minecraft_version}.jar" destinationDirectory = file '../target' } remapJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } diff --git a/fabric-1.20.6/build.gradle b/fabric-1.20.6/build.gradle index da0a1d0e2..3364c20de 100644 --- a/fabric-1.20.6/build.gradle +++ b/fabric-1.20.6/build.gradle @@ -1,8 +1,8 @@ plugins { - id 'fabric-loom' version '1.13.6' + id 'fabric-loom' version '1.15.5' } -archivesBaseName = "Dynmap" +base { archivesName = "Dynmap" } version = parent.version group = parent.group @@ -12,11 +12,16 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(21) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 +} configurations { - shadow - implementation.extendsFrom(shadow) + bundle { + canBeResolved = true + canBeConsumed = false + } } repositories { @@ -32,7 +37,8 @@ dependencies { compileOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' - shadow project(path: ':DynmapCore', configuration: 'shadow') + implementation project(path: ':DynmapCore', configuration: 'shadow') + bundle project(path: ':DynmapCore', configuration: 'shadow') modCompileOnly "me.lucko:fabric-permissions-api:0.4.0" compileOnly 'net.luckperms:api:5.4' @@ -58,16 +64,16 @@ java { jar { from "LICENSE" from { - configurations.shadow.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } + configurations.bundle.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } } } remapJar { - archiveFileName = "${archivesBaseName}-${project.version}-fabric-${project.minecraft_version}.jar" + archiveFileName = "${base.archivesName.get()}-${project.version}-fabric-${project.minecraft_version}.jar" destinationDirectory = file '../target' } remapJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } diff --git a/fabric-1.21.11/build.gradle b/fabric-1.21.11/build.gradle index 06e02c7a0..b36bfaf75 100644 --- a/fabric-1.21.11/build.gradle +++ b/fabric-1.21.11/build.gradle @@ -1,8 +1,8 @@ plugins { - id 'fabric-loom' version '1.13.6' + id 'fabric-loom' version '1.15.5' } -archivesBaseName = "Dynmap" +base { archivesName = "Dynmap" } version = parent.version group = parent.group @@ -12,11 +12,16 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(21) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 +} configurations { - shadow - implementation.extendsFrom(shadow) + bundle { + canBeResolved = true + canBeConsumed = false + } } repositories { @@ -32,7 +37,8 @@ dependencies { compileOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' - shadow project(path: ':DynmapCore', configuration: 'shadow') + implementation project(path: ':DynmapCore', configuration: 'shadow') + bundle project(path: ':DynmapCore', configuration: 'shadow') modCompileOnly "me.lucko:fabric-permissions-api:0.5.0" compileOnly 'net.luckperms:api:5.4' @@ -58,16 +64,16 @@ java { jar { from "LICENSE" from { - configurations.shadow.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } + configurations.bundle.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } } } remapJar { - archiveFileName = "${archivesBaseName}-${project.version}-fabric-${project.minecraft_version}.jar" + archiveFileName = "${base.archivesName.get()}-${project.version}-fabric-${project.minecraft_version}.jar" destinationDirectory = file '../target' } remapJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } diff --git a/fabric-1.21.6/build.gradle b/fabric-1.21.6/build.gradle index bce1c28d2..9d60c5b53 100644 --- a/fabric-1.21.6/build.gradle +++ b/fabric-1.21.6/build.gradle @@ -1,8 +1,8 @@ plugins { - id 'fabric-loom' version '1.13.6' + id 'fabric-loom' version '1.15.5' } -archivesBaseName = "Dynmap" +base { archivesName = "Dynmap" } version = parent.version group = parent.group @@ -12,11 +12,16 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(21) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 +} configurations { - shadow - implementation.extendsFrom(shadow) + bundle { + canBeResolved = true + canBeConsumed = false + } } repositories { @@ -32,7 +37,8 @@ dependencies { compileOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' - shadow project(path: ':DynmapCore', configuration: 'shadow') + implementation project(path: ':DynmapCore', configuration: 'shadow') + bundle project(path: ':DynmapCore', configuration: 'shadow') modCompileOnly "me.lucko:fabric-permissions-api:0.4.0" compileOnly 'net.luckperms:api:5.4' @@ -58,16 +64,16 @@ java { jar { from "LICENSE" from { - configurations.shadow.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } + configurations.bundle.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } } } remapJar { - archiveFileName = "${archivesBaseName}-${project.version}-fabric-${project.minecraft_version}.jar" + archiveFileName = "${base.archivesName.get()}-${project.version}-fabric-${project.minecraft_version}.jar" destinationDirectory = file '../target' } remapJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } diff --git a/fabric-1.21.9-10/build.gradle b/fabric-1.21.9-10/build.gradle index 8a8de3289..f614efe5c 100644 --- a/fabric-1.21.9-10/build.gradle +++ b/fabric-1.21.9-10/build.gradle @@ -1,8 +1,8 @@ plugins { - id 'fabric-loom' version '1.13.6' + id 'fabric-loom' version '1.15.5' } -archivesBaseName = "Dynmap" +base { archivesName = "Dynmap" } version = parent.version group = parent.group @@ -12,11 +12,16 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(21) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 +} configurations { - shadow - implementation.extendsFrom(shadow) + bundle { + canBeResolved = true + canBeConsumed = false + } } repositories { @@ -32,7 +37,8 @@ dependencies { compileOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' - shadow project(path: ':DynmapCore', configuration: 'shadow') + implementation project(path: ':DynmapCore', configuration: 'shadow') + bundle project(path: ':DynmapCore', configuration: 'shadow') modCompileOnly "me.lucko:fabric-permissions-api:0.5.0" compileOnly 'net.luckperms:api:5.4' @@ -58,16 +64,16 @@ java { jar { from "LICENSE" from { - configurations.shadow.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } + configurations.bundle.collect { it.toString().contains("guava") ? null : it.isDirectory() ? it : zipTree(it) } } } remapJar { - archiveFileName = "${archivesBaseName}-${project.version}-fabric-${project.minecraft_version}-10.jar" // TODO: Remove -10 when updating after 1.21.10 release + archiveFileName = "${base.archivesName.get()}-${project.version}-fabric-${project.minecraft_version}-10.jar" // TODO: Remove -10 when updating after 1.21.10 release destinationDirectory = file '../target' } remapJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } diff --git a/forge-1.12.2/build.gradle b/forge-1.12.2/build.gradle index 786601949..b879d2571 100644 --- a/forge-1.12.2/build.gradle +++ b/forge-1.12.2/build.gradle @@ -120,7 +120,7 @@ shadowJar { shadowJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } diff --git a/forge-1.14.4/build.gradle b/forge-1.14.4/build.gradle index 628cd762c..a8ea0fc35 100644 --- a/forge-1.14.4/build.gradle +++ b/forge-1.14.4/build.gradle @@ -1,7 +1,6 @@ buildscript { repositories { maven { url = 'https://files.minecraftforge.net/maven' } - jcenter() mavenCentral() } dependencies { @@ -18,7 +17,10 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} ext.buildNumber = System.getenv().BUILD_NUMBER ?: "Dev" @@ -32,8 +34,6 @@ minecraft { } } -project.archivesBaseName = "${project.archivesBaseName}-forge-1.14.4" - dependencies { implementation project(path: ":DynmapCore", configuration: "shadow") minecraft 'net.minecraftforge:forge:1.14.4-28.2.10' @@ -61,7 +61,7 @@ shadowJar { shadowJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } afterEvaluate { diff --git a/forge-1.15.2/build.gradle b/forge-1.15.2/build.gradle index a5ec88f19..cde126904 100644 --- a/forge-1.15.2/build.gradle +++ b/forge-1.15.2/build.gradle @@ -1,7 +1,6 @@ buildscript { repositories { maven { url = 'https://files.minecraftforge.net/maven' } - jcenter() mavenCentral() } dependencies { @@ -18,7 +17,10 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} ext.buildNumber = System.getenv().BUILD_NUMBER ?: "Dev" @@ -32,8 +34,6 @@ minecraft { } } -project.archivesBaseName = "${project.archivesBaseName}-forge-1.15.2" - dependencies { implementation project(path: ":DynmapCore", configuration: "shadow") minecraft 'net.minecraftforge:forge:1.15.2-31.2.3' @@ -61,7 +61,7 @@ shadowJar { shadowJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } afterEvaluate { diff --git a/forge-1.16.5/build.gradle b/forge-1.16.5/build.gradle index 866951553..f85789b7a 100644 --- a/forge-1.16.5/build.gradle +++ b/forge-1.16.5/build.gradle @@ -1,7 +1,6 @@ buildscript { repositories { maven { url = 'https://files.minecraftforge.net/maven' } - jcenter() mavenCentral() } dependencies { @@ -18,7 +17,10 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} ext.buildNumber = System.getenv().BUILD_NUMBER ?: "Dev" @@ -32,8 +34,6 @@ minecraft { } } -project.archivesBaseName = "${project.archivesBaseName}-forge-1.16.5" - dependencies { implementation project(path: ":DynmapCore", configuration: "shadow") minecraft 'net.minecraftforge:forge:1.16.5-36.0.15' @@ -63,7 +63,7 @@ shadowJar { shadowJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } afterEvaluate { diff --git a/forge-1.17.1/build.gradle b/forge-1.17.1/build.gradle index c17fbc592..ea86b86b8 100644 --- a/forge-1.17.1/build.gradle +++ b/forge-1.17.1/build.gradle @@ -1,7 +1,6 @@ buildscript { repositories { maven { url = 'https://files.minecraftforge.net/maven' } - jcenter() mavenCentral() } dependencies { @@ -18,7 +17,10 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(16) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_16 + targetCompatibility = JavaVersion.VERSION_16 +} println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) @@ -34,8 +36,6 @@ minecraft { } } -project.archivesBaseName = "${project.archivesBaseName}-forge-1.17.1" - dependencies { implementation project(path: ":DynmapCore", configuration: "shadow") implementation project(path: ':DynmapCoreAPI') @@ -67,7 +67,7 @@ shadowJar { shadowJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } afterEvaluate { diff --git a/forge-1.18.2/build.gradle b/forge-1.18.2/build.gradle index 6ef40fd9c..e7b26f15c 100644 --- a/forge-1.18.2/build.gradle +++ b/forge-1.18.2/build.gradle @@ -1,7 +1,6 @@ buildscript { repositories { maven { url = 'https://files.minecraftforge.net/maven' } - jcenter() mavenCentral() } dependencies { @@ -18,7 +17,10 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) @@ -34,8 +36,6 @@ minecraft { } } -project.archivesBaseName = "${project.archivesBaseName}-forge-1.18.2" - dependencies { implementation project(path: ":DynmapCore", configuration: "shadow") implementation project(path: ':DynmapCoreAPI') @@ -70,7 +70,7 @@ shadowJar { shadowJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } afterEvaluate { diff --git a/forge-1.19.3/build.gradle b/forge-1.19.3/build.gradle index fd1a89f10..be3857d8e 100644 --- a/forge-1.19.3/build.gradle +++ b/forge-1.19.3/build.gradle @@ -1,7 +1,6 @@ buildscript { repositories { maven { url = 'https://files.minecraftforge.net/maven' } - jcenter() mavenCentral() } dependencies { @@ -18,7 +17,10 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(17) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) @@ -34,8 +36,6 @@ minecraft { } } -project.archivesBaseName = "${project.archivesBaseName}-forge-1.19.3" - dependencies { implementation project(path: ":DynmapCore", configuration: "shadow") implementation project(path: ':DynmapCoreAPI') @@ -70,7 +70,7 @@ shadowJar { shadowJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } afterEvaluate { diff --git a/forge-1.20.6/build.gradle b/forge-1.20.6/build.gradle index 58413c933..df3ca67f7 100644 --- a/forge-1.20.6/build.gradle +++ b/forge-1.20.6/build.gradle @@ -1,7 +1,6 @@ buildscript { repositories { maven { url = 'https://files.minecraftforge.net/maven' } - jcenter() mavenCentral() } dependencies { @@ -18,7 +17,10 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(21) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 +} println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) @@ -36,8 +38,6 @@ minecraft { } } -project.archivesBaseName = "${project.archivesBaseName}-forge-1.20.6" - dependencies { implementation project(path: ":DynmapCore", configuration: "shadow") implementation project(path: ':DynmapCoreAPI') @@ -72,7 +72,7 @@ shadowJar { shadowJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } build.dependsOn(shadowJar) diff --git a/forge-1.21.10/build.gradle b/forge-1.21.10/build.gradle index 262083a7e..9bbb0381d 100644 --- a/forge-1.21.10/build.gradle +++ b/forge-1.21.10/build.gradle @@ -1,7 +1,6 @@ buildscript { repositories { maven { url = 'https://files.minecraftforge.net/maven' } - jcenter() mavenCentral() } dependencies { @@ -18,7 +17,10 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(21) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 +} println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) @@ -37,8 +39,6 @@ minecraft { } } -project.archivesBaseName = "${project.archivesBaseName}-forge-1.21.10" - dependencies { implementation project(path: ":DynmapCore", configuration: "shadow") implementation project(path: ':DynmapCoreAPI') @@ -74,7 +74,7 @@ shadowJar { shadowJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } build.dependsOn(shadowJar) diff --git a/forge-1.21.11/build.gradle b/forge-1.21.11/build.gradle index 854ab09c8..1b695c6da 100644 --- a/forge-1.21.11/build.gradle +++ b/forge-1.21.11/build.gradle @@ -1,7 +1,6 @@ buildscript { repositories { maven { url = 'https://files.minecraftforge.net/maven' } - jcenter() mavenCentral() } dependencies { @@ -18,7 +17,10 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(21) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 +} println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) @@ -37,8 +39,6 @@ minecraft { } } -project.archivesBaseName = "${project.archivesBaseName}-forge-1.21.11" - dependencies { implementation project(path: ":DynmapCore", configuration: "shadow") implementation project(path: ':DynmapCoreAPI') @@ -74,7 +74,7 @@ shadowJar { shadowJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } build.dependsOn(shadowJar) diff --git a/forge-1.21.6/build.gradle b/forge-1.21.6/build.gradle index 0e002414a..c2f5846ca 100644 --- a/forge-1.21.6/build.gradle +++ b/forge-1.21.6/build.gradle @@ -1,7 +1,6 @@ buildscript { repositories { maven { url = 'https://files.minecraftforge.net/maven' } - jcenter() mavenCentral() } dependencies { @@ -18,7 +17,10 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(21) // Need this here so eclipse task generates correctly. +java { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 +} println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) @@ -36,8 +38,6 @@ minecraft { } } -project.archivesBaseName = "${project.archivesBaseName}-forge-1.21.6" - dependencies { implementation project(path: ":DynmapCore", configuration: "shadow") implementation project(path: ':DynmapCoreAPI') @@ -72,7 +72,7 @@ shadowJar { shadowJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } build.dependsOn(shadowJar) diff --git a/settings.gradle b/settings.gradle index 3429534f0..b3453f0b3 100644 --- a/settings.gradle +++ b/settings.gradle @@ -47,16 +47,19 @@ include ':fabric-1.17.1' include ':fabric-1.16.4' include ':fabric-1.15.2' include ':fabric-1.14.4' -include ':forge-1.21.11' -include ':forge-1.21.10' -include ':forge-1.21.6' -include ':forge-1.20.6' -include ':forge-1.19.3' -include ':forge-1.18.2' -include ':forge-1.17.1' -include ':forge-1.16.5' -include ':forge-1.15.2' -include ':forge-1.14.4' +// ForgeGradle 6.x does not support Gradle 9+; forge modules must be built with Gradle 8 +if (gradle.gradleVersion.startsWith('8.')) { + include ':forge-1.21.11' + include ':forge-1.21.10' + include ':forge-1.21.6' + include ':forge-1.20.6' + include ':forge-1.19.3' + include ':forge-1.18.2' + include ':forge-1.17.1' + include ':forge-1.16.5' + include ':forge-1.15.2' + include ':forge-1.14.4' +} project(':spigot').projectDir = "$rootDir/spigot" as File project(':bukkit-helper-113-2').projectDir = "$rootDir/bukkit-helper-113-2" as File @@ -97,14 +100,16 @@ project(':fabric-1.17.1').projectDir = "$rootDir/fabric-1.17.1" as File project(':fabric-1.16.4').projectDir = "$rootDir/fabric-1.16.4" as File project(':fabric-1.15.2').projectDir = "$rootDir/fabric-1.15.2" as File project(':fabric-1.14.4').projectDir = "$rootDir/fabric-1.14.4" as File -project(':forge-1.21.11').projectDir = "$rootDir/forge-1.21.11" as File -project(':forge-1.21.10').projectDir = "$rootDir/forge-1.21.10" as File -project(':forge-1.21.6').projectDir = "$rootDir/forge-1.21.6" as File -project(':forge-1.20.6').projectDir = "$rootDir/forge-1.20.6" as File -project(':forge-1.19.3').projectDir = "$rootDir/forge-1.19.3" as File -project(':forge-1.18.2').projectDir = "$rootDir/forge-1.18.2" as File -project(':forge-1.17.1').projectDir = "$rootDir/forge-1.17.1" as File -project(':forge-1.16.5').projectDir = "$rootDir/forge-1.16.5" as File -project(':forge-1.15.2').projectDir = "$rootDir/forge-1.15.2" as File -project(':forge-1.14.4').projectDir = "$rootDir/forge-1.14.4" as File +if (gradle.gradleVersion.startsWith('8.')) { + project(':forge-1.21.11').projectDir = "$rootDir/forge-1.21.11" as File + project(':forge-1.21.10').projectDir = "$rootDir/forge-1.21.10" as File + project(':forge-1.21.6').projectDir = "$rootDir/forge-1.21.6" as File + project(':forge-1.20.6').projectDir = "$rootDir/forge-1.20.6" as File + project(':forge-1.19.3').projectDir = "$rootDir/forge-1.19.3" as File + project(':forge-1.18.2').projectDir = "$rootDir/forge-1.18.2" as File + project(':forge-1.17.1').projectDir = "$rootDir/forge-1.17.1" as File + project(':forge-1.16.5').projectDir = "$rootDir/forge-1.16.5" as File + project(':forge-1.15.2').projectDir = "$rootDir/forge-1.15.2" as File + project(':forge-1.14.4').projectDir = "$rootDir/forge-1.14.4" as File +} diff --git a/spigot/build.gradle b/spigot/build.gradle index 9fa548e1d..ebd10d6ee 100644 --- a/spigot/build.gradle +++ b/spigot/build.gradle @@ -1,4 +1,3 @@ - description = 'dynmap' eclipse { From 08c835c69a7c0771c14da79c12f7344dc75c7498 Mon Sep 17 00:00:00 2001 From: Egor Taranov Date: Sat, 13 Jun 2026 20:18:42 +0200 Subject: [PATCH 3/4] restructure spigot build configuration for Gradle 9 and Paper 26 support --- spigot/build.gradle | 74 ++++++++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 27 deletions(-) diff --git a/spigot/build.gradle b/spigot/build.gradle index ebd10d6ee..2e7f6e05d 100644 --- a/spigot/build.gradle +++ b/spigot/build.gradle @@ -15,13 +15,27 @@ repositories { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +compileJava { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +afterEvaluate { + configurations.matching { it.name in ['runtimeClasspath', 'testRuntimeClasspath'] }.configureEach { + attributes { + attribute(Attribute.of("org.gradle.jvm.version", Integer.class), 21) + } + } +} + dependencies { implementation('org.bukkit:bukkit:1.10.2-R0.1-SNAPSHOT') { transitive = false } compileOnly('com.nijikokun.bukkit:Permissions:3.1.6') { transitive = false } compileOnly('me.lucko.luckperms:luckperms-api:4.3') { transitive = false } compileOnly('net.luckperms:api:5.0') { transitive = false } + compileOnly('org.checkerframework:checker-qual:3.42.0') + compileOnly('com.google.guava:guava:33.3.1-jre') compileOnly('com.github.MilkBowl:VaultAPI:1.7') { transitive = false } compileOnly('net.skinsrestorer:skinsrestorer-api:14.2.+') { transitive = false } implementation(project(":dynmap-api")) { transitive = false } @@ -36,76 +50,79 @@ dependencies { implementation(project(':bukkit-helper')) { transitive = false } - implementation(project(':bukkit-helper-113-2')) { + runtimeOnly(project(':bukkit-helper-113-2')) { transitive = false } - implementation(project(':bukkit-helper-114-1')) { + runtimeOnly(project(':bukkit-helper-114-1')) { transitive = false } - implementation(project(':bukkit-helper-115')) { + runtimeOnly(project(':bukkit-helper-115')) { transitive = false } - implementation(project(':bukkit-helper-116')) { + runtimeOnly(project(':bukkit-helper-116')) { transitive = false } - implementation(project(':bukkit-helper-116-2')) { + runtimeOnly(project(':bukkit-helper-116-2')) { transitive = false } - implementation(project(':bukkit-helper-116-3')) { + runtimeOnly(project(':bukkit-helper-116-3')) { transitive = false } - implementation(project(':bukkit-helper-116-4')) { + runtimeOnly(project(':bukkit-helper-116-4')) { transitive = false } - implementation(project(':bukkit-helper-117')) { + runtimeOnly(project(':bukkit-helper-117')) { transitive = false } - implementation(project(':bukkit-helper-118')) { + runtimeOnly(project(':bukkit-helper-118')) { transitive = false } - implementation(project(':bukkit-helper-118-2')) { + runtimeOnly(project(':bukkit-helper-118-2')) { transitive = false } - implementation(project(':bukkit-helper-119')) { + runtimeOnly(project(':bukkit-helper-119')) { transitive = false } - implementation(project(':bukkit-helper-119-3')) { + runtimeOnly(project(':bukkit-helper-119-3')) { transitive = false } - implementation(project(':bukkit-helper-119-4')) { + runtimeOnly(project(':bukkit-helper-119-4')) { transitive = false } - implementation(project(':bukkit-helper-120')) { + runtimeOnly(project(':bukkit-helper-120')) { transitive = false } - implementation(project(':bukkit-helper-120-2')) { + runtimeOnly(project(':bukkit-helper-120-2')) { transitive = false } - implementation(project(':bukkit-helper-120-4')) { + runtimeOnly(project(':bukkit-helper-120-4')) { transitive = false } - implementation(project(':bukkit-helper-120-5')) { + runtimeOnly(project(':bukkit-helper-120-5')) { transitive = false } - implementation(project(':bukkit-helper-121')) { + runtimeOnly(project(':bukkit-helper-121')) { + transitive = false + } + runtimeOnly(project(':bukkit-helper-121-3')) { transitive = false } - implementation(project(':bukkit-helper-121-3')) { + runtimeOnly(project(':bukkit-helper-121-4')) { transitive = false } - implementation(project(':bukkit-helper-121-4')) { + runtimeOnly(project(':bukkit-helper-121-5')) { transitive = false } - implementation(project(':bukkit-helper-121-5')) { + runtimeOnly(project(':bukkit-helper-121-6')) { transitive = false } - implementation(project(':bukkit-helper-121-6')) { + runtimeOnly(project(':bukkit-helper-121-10')) { transitive = false } - implementation(project(':bukkit-helper-121-10')) { + runtimeOnly(project(':bukkit-helper-121-11')) { transitive = false } - implementation(project(':bukkit-helper-121-11')) { + runtimeOnly(project(path: ':paper-helper-261-2', configuration: 'paperHelper')) { transitive = false } } @@ -126,8 +143,10 @@ jar { } shadowJar { + configurations = [project.configurations.runtimeClasspath] dependencies { - include(dependency('org.bstats::')) + include(dependency('org.bstats:bstats-bukkit:')) + include(dependency('org.bstats:bstats-base:')) include(dependency(':dynmap-api')) include(dependency(":DynmapCore")) include(dependency(':bukkit-helper')) @@ -155,6 +174,7 @@ shadowJar { include(dependency(':bukkit-helper-121-6')) include(dependency(':bukkit-helper-121-10')) include(dependency(':bukkit-helper-121-11')) + include(dependency(':paper-helper-261-2')) } relocate('org.bstats', 'org.dynmap.bstats') destinationDirectory = file '../target' @@ -163,7 +183,7 @@ shadowJar { } shadowJar.doLast { task -> - ant.checksum file: task.archivePath + ant.checksum file: task.archiveFile.get().asFile } artifacts { From e88170881466dfbafc79dc0789a5cc8c91642f96 Mon Sep 17 00:00:00 2001 From: Egor Taranov Date: Sat, 13 Jun 2026 20:19:05 +0200 Subject: [PATCH 4/4] add Paper 26.1.2 helper module with Mojang mapping support --- build.gradle | 1 + paper-helper-261-2/.gitignore | 32 ++ paper-helper-261-2/build.gradle | 38 ++ .../BukkitVersionHelperSpigot261_2.java | 382 ++++++++++++++++++ .../helper/v261_2/MapChunkCache261_2.java | 118 ++++++ .../org/dynmap/bukkit/helper/v261_2/NBT.java | 143 +++++++ settings.gradle | 2 + .../main/java/org/dynmap/bukkit/Helper.java | 3 + 8 files changed, 719 insertions(+) create mode 100644 paper-helper-261-2/.gitignore create mode 100644 paper-helper-261-2/build.gradle create mode 100644 paper-helper-261-2/src/main/java/org/dynmap/bukkit/helper/v261_2/BukkitVersionHelperSpigot261_2.java create mode 100644 paper-helper-261-2/src/main/java/org/dynmap/bukkit/helper/v261_2/MapChunkCache261_2.java create mode 100644 paper-helper-261-2/src/main/java/org/dynmap/bukkit/helper/v261_2/NBT.java diff --git a/build.gradle b/build.gradle index 8c3bb6b63..7dd9fb25d 100644 --- a/build.gradle +++ b/build.gradle @@ -22,6 +22,7 @@ allprojects { maven { url "https://repo.mikeprimm.com" } maven { url "https://repo.maven.apache.org/maven2" } maven { url "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" } + maven { url "https://repo.papermc.io/repository/maven-public/" } maven { url "https://repo.codemc.org/repository/maven-public/" } } diff --git a/paper-helper-261-2/.gitignore b/paper-helper-261-2/.gitignore new file mode 100644 index 000000000..8b87af68e --- /dev/null +++ b/paper-helper-261-2/.gitignore @@ -0,0 +1,32 @@ +# gradle + +.gradle/ +build/ +out/ +classes/ + +# eclipse + +*.launch + +# idea + +.idea/ +*.iml +*.ipr +*.iws + +# vscode + +.settings/ +.vscode/ +bin/ +.classpath +.project + +# fabric + +run/ + +# other +*.log diff --git a/paper-helper-261-2/build.gradle b/paper-helper-261-2/build.gradle new file mode 100644 index 000000000..76362222b --- /dev/null +++ b/paper-helper-261-2/build.gradle @@ -0,0 +1,38 @@ +apply plugin: 'java' +apply plugin: 'io.papermc.paperweight.userdev' + +configurations { + paperHelper +} + +artifacts { + paperHelper(tasks.shadowJar.archiveFile) { builtBy(tasks.shadowJar) } +} + +tasks.named("reobfJar") { + enabled = false +} + +eclipse { + project { + name = "Dynmap(Paper-26.1.2)" + } +} + +description = 'paper-helper-26.1.2' + +java { + sourceCompatibility = JavaVersion.VERSION_25 + targetCompatibility = JavaVersion.VERSION_25 +} + +repositories { + maven { url "https://repo.papermc.io/repository/maven-public/" } +} + +dependencies { + implementation project(':bukkit-helper') + implementation project(':dynmap-api') + implementation project(path: ':DynmapCore', configuration: 'shadow') + paperweight.paperDevBundle("26.1.2.build.69-stable") +} diff --git a/paper-helper-261-2/src/main/java/org/dynmap/bukkit/helper/v261_2/BukkitVersionHelperSpigot261_2.java b/paper-helper-261-2/src/main/java/org/dynmap/bukkit/helper/v261_2/BukkitVersionHelperSpigot261_2.java new file mode 100644 index 000000000..bdcf3797a --- /dev/null +++ b/paper-helper-261-2/src/main/java/org/dynmap/bukkit/helper/v261_2/BukkitVersionHelperSpigot261_2.java @@ -0,0 +1,382 @@ +package org.dynmap.bukkit.helper.v261_2; + +import org.bukkit.*; +import org.bukkit.craftbukkit.CraftChunk; +import org.bukkit.craftbukkit.CraftWorld; +import org.bukkit.craftbukkit.entity.CraftPlayer; +import org.bukkit.entity.Player; +import org.dynmap.DynmapChunk; +import org.dynmap.Log; +import org.dynmap.bukkit.helper.BukkitMaterial; +import org.dynmap.bukkit.helper.BukkitVersionHelper; +import org.dynmap.bukkit.helper.BukkitWorld; +import org.dynmap.bukkit.helper.BukkitVersionHelperGeneric.TexturesPayload; +import org.dynmap.renderer.DynmapBlockState; +import org.dynmap.utils.MapChunkCache; +import org.dynmap.utils.Polygon; + +import com.google.common.collect.Iterables; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonParseException; +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.Property; +import com.mojang.authlib.properties.PropertyMap; + +import net.minecraft.core.IdMapper; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.ByteArrayTag; +import net.minecraft.nbt.ByteTag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.DoubleTag; +import net.minecraft.nbt.FloatTag; +import net.minecraft.nbt.IntArrayTag; +import net.minecraft.nbt.IntTag; +import net.minecraft.nbt.LongTag; +import net.minecraft.nbt.ShortTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.resources.Identifier; +import net.minecraft.server.MinecraftServer; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.status.ChunkStatus; + +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Base64; +import java.util.Collection; +import java.util.HashMap; +import java.util.IdentityHashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + + +/** + * Helper for isolation of bukkit version specific issues - Paper 26.1.x (Mojang mappings) + */ +public class BukkitVersionHelperSpigot261_2 extends BukkitVersionHelper { + + @Override + public boolean isUnsafeAsync() { + return false; + } + + @Override + public String[] getBlockNames() { + IdMapper bsids = Block.BLOCK_STATE_REGISTRY; + Block baseb = null; + Iterator iter = bsids.iterator(); + ArrayList names = new ArrayList(); + while (iter.hasNext()) { + BlockState bs = iter.next(); + Block b = bs.getBlock(); + if (b == baseb) continue; + baseb = b; + Identifier id = BuiltInRegistries.BLOCK.getKey(b); + if (id == null) continue; + names.add(id.toString()); + } + return names.toArray(new String[0]); + } + + private Registry reg = null; + + private Registry getBiomeReg() { + if (reg == null) { + reg = MinecraftServer.getServer().registryAccess().lookupOrThrow(Registries.BIOME); + } + return reg; + } + + private Object[] biomelist; + + @Override + public Object[] getBiomeBaseList() { + if (biomelist == null) { + biomelist = new Biome[256]; + Iterator iter = getBiomeReg().iterator(); + while (iter.hasNext()) { + Biome b = iter.next(); + int bidx = getBiomeReg().getId(b); + if (bidx >= biomelist.length) { + biomelist = Arrays.copyOf(biomelist, bidx + biomelist.length); + } + biomelist[bidx] = b; + } + } + return biomelist; + } + + @Override + public int getBiomeBaseID(Object bb) { + return getBiomeReg().getId((Biome) bb); + } + + public static IdentityHashMap dataToState; + + @Override + public void initializeBlockStates() { + dataToState = new IdentityHashMap(); + HashMap lastBlockState = new HashMap(); + IdMapper bsids = Block.BLOCK_STATE_REGISTRY; + Iterator iter = bsids.iterator(); + + DynmapBlockState.Builder bld = new DynmapBlockState.Builder(); + while (iter.hasNext()) { + BlockState bd = iter.next(); + Block b = bd.getBlock(); + Identifier id = BuiltInRegistries.BLOCK.getKey(b); + if (id == null) continue; + String bname = id.toString(); + DynmapBlockState lastbs = lastBlockState.get(bname); + int idx = 0; + if (lastbs != null) { + idx = lastbs.getStateCount(); + } + String sb = ""; + String fname = bd.toString(); + int off1 = fname.indexOf('['); + if (off1 >= 0) { + int off2 = fname.indexOf(']'); + sb = fname.substring(off1 + 1, off2); + } + int lightAtten = bd.getLightDampening(); + bld.setBaseState(lastbs).setStateIndex(idx).setBlockName(bname).setStateName(sb).setAttenuatesLight(lightAtten); + if (bd.isSolid()) { bld.setSolid(); } + if (bd.isAir()) { bld.setAir(); } + if (bd.is(BlockTags.OVERWORLD_NATURAL_LOGS)) { bld.setLog(); } + if (bd.is(BlockTags.LEAVES)) { bld.setLeaves(); } + if (!bd.getFluidState().isEmpty() && !(bd.getBlock() instanceof LiquidBlock)) { + bld.setWaterlogged(); + } + DynmapBlockState dbs = bld.build(); + + dataToState.put(bd, dbs); + lastBlockState.put(bname, (lastbs == null) ? dbs : lastbs); + Log.verboseinfo("blk=" + bname + ", idx=" + idx + ", state=" + sb + ", waterlogged=" + dbs.isWaterlogged()); + } + } + + @Override + public MapChunkCache getChunkCache(BukkitWorld dw, List chunks) { + MapChunkCache261_2 c = new MapChunkCache261_2(gencache); + c.setChunks(dw, chunks); + return c; + } + + @Override + public int getBiomeBaseWaterMult(Object bb) { + return ((Biome) bb).getWaterColor(); + } + + @Override + public float getBiomeBaseTemperature(Object bb) { + return ((Biome) bb).getBaseTemperature(); + } + + @Override + public float getBiomeBaseHumidity(Object bb) { + return ((Biome) bb).climateSettings.downfall(); + } + + @Override + public Polygon getWorldBorder(World world) { + Polygon p = null; + WorldBorder wb = world.getWorldBorder(); + if (wb != null) { + Location c = wb.getCenter(); + double size = wb.getSize(); + if ((size > 1) && (size < 1E7)) { + size = size / 2; + p = new Polygon(); + p.addVertex(c.getX() - size, c.getZ() - size); + p.addVertex(c.getX() + size, c.getZ() - size); + p.addVertex(c.getX() + size, c.getZ() + size); + p.addVertex(c.getX() - size, c.getZ() + size); + } + } + return p; + } + + @Override + public void sendTitleText(Player p, String title, String subtitle, int fadeInTicks, int stayTicks, int fadeOutTIcks) { + if (p != null) { + p.sendTitle(title, subtitle, fadeInTicks, stayTicks, fadeOutTIcks); + } + } + + @Override + public BukkitMaterial[] getMaterialList() { + return new BukkitMaterial[4096]; + } + + @Override + public void unloadChunkNoSave(World w, Chunk c, int cx, int cz) { + Log.severe("unloadChunkNoSave not implemented"); + } + + private String[] biomenames; + + @Override + public String[] getBiomeNames() { + if (biomenames == null) { + biomenames = new String[256]; + Iterator iter = getBiomeReg().iterator(); + while (iter.hasNext()) { + Biome b = iter.next(); + int bidx = getBiomeReg().getId(b); + if (bidx >= biomenames.length) { + biomenames = Arrays.copyOf(biomenames, bidx + biomenames.length); + } + biomenames[bidx] = b.toString(); + } + } + return biomenames; + } + + @Override + public String getStateStringByCombinedId(int blkid, int meta) { + Log.severe("getStateStringByCombinedId not implemented"); + return null; + } + + @Override + public String getBiomeBaseIDString(Object bb) { + return getBiomeReg().getKey((Biome) bb).getPath(); + } + + @Override + public String getBiomeBaseResourceLocsation(Object bb) { + return getBiomeReg().getKey((Biome) bb).toString(); + } + + @Override + public Object getUnloadQueue(World world) { + Log.warning("getUnloadQueue not implemented yet"); + return null; + } + + @Override + public boolean isInUnloadQueue(Object unloadqueue, int x, int z) { + Log.warning("isInUnloadQueue not implemented yet"); + return false; + } + + @Override + public Object[] getBiomeBaseFromSnapshot(ChunkSnapshot css) { + Log.warning("getBiomeBaseFromSnapshot not implemented yet"); + return new Object[256]; + } + + @Override + public long getInhabitedTicks(Chunk c) { + return ((CraftChunk) c).getHandle(ChunkStatus.FULL).getInhabitedTime(); + } + + @Override + public Map getTileEntitiesForChunk(Chunk c) { + return ((CraftChunk) c).getHandle(ChunkStatus.FULL).blockEntities; + } + + @Override + public int getTileEntityX(Object te) { + return ((BlockEntity) te).getBlockPos().getX(); + } + + @Override + public int getTileEntityY(Object te) { + return ((BlockEntity) te).getBlockPos().getY(); + } + + @Override + public int getTileEntityZ(Object te) { + return ((BlockEntity) te).getBlockPos().getZ(); + } + + @Override + public Object readTileEntityNBT(Object te, World w) { + BlockEntity tileent = (BlockEntity) te; + CraftWorld cw = (CraftWorld) w; + return tileent.saveCustomOnly(cw.getHandle().registryAccess()); + } + + @Override + public Object getFieldValue(Object nbt, String field) { + CompoundTag rec = (CompoundTag) nbt; + Tag val = rec.get(field); + if (val == null) return null; + if (val instanceof ByteTag bt) return bt.value(); + else if (val instanceof ShortTag st) return st.value(); + else if (val instanceof IntTag it) return it.value(); + else if (val instanceof LongTag lt) return lt.value(); + else if (val instanceof FloatTag ft) return ft.value(); + else if (val instanceof DoubleTag dt) return dt.value(); + else if (val instanceof ByteArrayTag bat) return bat.getAsByteArray(); + else if (val instanceof StringTag st) return st.value(); + else if (val instanceof IntArrayTag iat) return iat.getAsIntArray(); + return null; + } + + @Override + public Player[] getOnlinePlayers() { + Collection p = Bukkit.getServer().getOnlinePlayers(); + return p.toArray(new Player[0]); + } + + @Override + public double getHealth(Player p) { + return p.getHealth(); + } + + private static final Gson gson = new GsonBuilder().create(); + + @Override + public String getSkinURL(Player player) { + String url = null; + CraftPlayer cp = (CraftPlayer) player; + GameProfile profile = cp.getProfile(); + if (profile != null) { + PropertyMap pm = profile.properties(); + if (pm != null) { + Property textureProperty = Iterables.getFirst(pm.get("textures"), null); + if (textureProperty != null) { + String val = textureProperty.value(); + if (val != null) { + TexturesPayload result = null; + try { + String json = new String(Base64.getDecoder().decode(val), StandardCharsets.UTF_8); + result = gson.fromJson(json, TexturesPayload.class); + } catch (JsonParseException e) { + } catch (IllegalArgumentException x) { + Log.warning("Malformed response from skin URL check: " + val); + } + if ((result != null) && (result.textures != null) && (result.textures.containsKey("SKIN"))) { + url = result.textures.get("SKIN").url; + } + } + } + } + } + return url; + } + + @Override + public int getWorldMinY(World w) { + CraftWorld cw = (CraftWorld) w; + return cw.getMinHeight(); + } + + @Override + public boolean useGenericCache() { + return true; + } +} diff --git a/paper-helper-261-2/src/main/java/org/dynmap/bukkit/helper/v261_2/MapChunkCache261_2.java b/paper-helper-261-2/src/main/java/org/dynmap/bukkit/helper/v261_2/MapChunkCache261_2.java new file mode 100644 index 000000000..19dbf243b --- /dev/null +++ b/paper-helper-261-2/src/main/java/org/dynmap/bukkit/helper/v261_2/MapChunkCache261_2.java @@ -0,0 +1,118 @@ +package org.dynmap.bukkit.helper.v261_2; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSpecialEffects; +import net.minecraft.world.level.chunk.LevelChunk; +import net.minecraft.world.level.chunk.storage.SerializableChunkData; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.CraftWorld; +import org.dynmap.DynmapChunk; +import org.dynmap.bukkit.helper.BukkitWorld; +import org.dynmap.common.BiomeMap; +import org.dynmap.common.chunk.GenericChunk; +import org.dynmap.common.chunk.GenericChunkCache; +import org.dynmap.common.chunk.GenericMapChunkCache; + +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; +import java.util.concurrent.CancellationException; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; +import java.util.function.Supplier; + +public class MapChunkCache261_2 extends GenericMapChunkCache { + private World w; + + public MapChunkCache261_2(GenericChunkCache cc) { + super(cc); + } + + @Override + protected Supplier getLoadedChunkAsync(DynmapChunk chunk) { + CompletableFuture> chunkData = CompletableFuture.supplyAsync(() -> { + CraftWorld cw = (CraftWorld) w; + LevelChunk c = cw.getHandle().getChunkIfLoaded(chunk.x, chunk.z); + if (c == null || !c.loaded) { + return Optional.empty(); + } + return Optional.of(SerializableChunkData.copyOf(cw.getHandle(), c)); + }, ((CraftServer) Bukkit.getServer()).getServer()); + return () -> { + try { + return chunkData.join().map(SerializableChunkData::write).map(NBT.NBTCompound::new).map(this::parseChunkFromNBT).orElse(null); + } catch (CompletionException e) { + return null; + } + }; + } + + @Override + protected GenericChunk getLoadedChunk(DynmapChunk chunk) { + CraftWorld cw = (CraftWorld) w; + if (!cw.isChunkLoaded(chunk.x, chunk.z)) return null; + LevelChunk c = cw.getHandle().getChunkIfLoaded(chunk.x, chunk.z); + if (c == null || !c.loaded) return null; + SerializableChunkData chunkData = SerializableChunkData.copyOf(cw.getHandle(), c); + CompoundTag nbt = chunkData.write(); + return nbt != null ? parseChunkFromNBT(new NBT.NBTCompound(nbt)) : null; + } + + @Override + protected Supplier loadChunkAsync(DynmapChunk chunk) { + CraftWorld cw = (CraftWorld) w; + CompletableFuture> genericChunk = cw.getHandle().getChunkSource().chunkMap.read(new ChunkPos(chunk.x, chunk.z)); + return () -> { + try { + return genericChunk.join().map(NBT.NBTCompound::new).map(this::parseChunkFromNBT).orElse(null); + } catch (CompletionException e) { + return null; + } + }; + } + + @Override + protected GenericChunk loadChunk(DynmapChunk chunk) { + CraftWorld cw = (CraftWorld) w; + CompoundTag nbt = null; + ChunkPos cc = new ChunkPos(chunk.x, chunk.z); + GenericChunk gc = null; + try { + nbt = cw.getHandle() + .getChunkSource() + .chunkMap + .read(cc) + .join().get(); + } catch (CancellationException | CompletionException cx) { + } catch (NoSuchElementException snex) { + } + if (nbt != null) { + gc = parseChunkFromNBT(new NBT.NBTCompound(nbt)); + } + return gc; + } + + public void setChunks(BukkitWorld dw, List chunks) { + this.w = dw.getWorld(); + super.setChunks(dw, chunks); + } + + @Override + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + return bm.getBiomeObject() + .map(Biome::getSpecialEffects) + .flatMap(BiomeSpecialEffects::foliageColorOverride) + .orElse(colormap[bm.biomeLookup()]); + } + + @Override + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + BiomeSpecialEffects fog = bm.getBiomeObject().map(Biome::getSpecialEffects).orElse(null); + if (fog == null) return colormap[bm.biomeLookup()]; + return fog.grassColorModifier().modifyColor((double) x, (double) z, fog.grassColorOverride().orElse(colormap[bm.biomeLookup()])); + } +} diff --git a/paper-helper-261-2/src/main/java/org/dynmap/bukkit/helper/v261_2/NBT.java b/paper-helper-261-2/src/main/java/org/dynmap/bukkit/helper/v261_2/NBT.java new file mode 100644 index 000000000..6fde3a94b --- /dev/null +++ b/paper-helper-261-2/src/main/java/org/dynmap/bukkit/helper/v261_2/NBT.java @@ -0,0 +1,143 @@ +package org.dynmap.bukkit.helper.v261_2; + +import org.dynmap.common.chunk.GenericBitStorage; +import org.dynmap.common.chunk.GenericNBTCompound; +import org.dynmap.common.chunk.GenericNBTList; + +import java.util.Optional; +import java.util.Set; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.util.SimpleBitStorage; + +public class NBT { + + public static class NBTCompound implements GenericNBTCompound { + private final CompoundTag obj; + public NBTCompound(CompoundTag t) { + this.obj = t; + } + @Override + public Set getAllKeys() { + return obj.keySet(); + } + @Override + public boolean contains(String s) { + return obj.contains(s); + } + @Override + public boolean contains(String s, int i) { + Tag base = obj.get(s); + if (base == null) + return false; + byte type = base.getId(); + if (type == i) + return true; + else if (i != TAG_ANY_NUMERIC) + return false; + return type == TAG_BYTE || type == TAG_SHORT || type == TAG_INT || type == TAG_LONG || type == TAG_FLOAT + || type == TAG_DOUBLE; + } + @Override + public byte getByte(String s) { + return obj.getByteOr(s, (byte) 0); + } + @Override + public short getShort(String s) { + return obj.getShortOr(s, (short) 0); + } + @Override + public int getInt(String s) { + return obj.getIntOr(s, 0); + } + @Override + public long getLong(String s) { + return obj.getLongOr(s, 0L); + } + @Override + public float getFloat(String s) { + return obj.getFloatOr(s, 0.0f); + } + @Override + public double getDouble(String s) { + return obj.getDoubleOr(s, 0.0); + } + @Override + public String getString(String s) { + return obj.getStringOr(s, ""); + } + @Override + public byte[] getByteArray(String s) { + Optional byteArr = obj.getByteArray(s); + return byteArr.orElseGet(() -> new byte[0]); + } + @Override + public int[] getIntArray(String s) { + Optional intArr = obj.getIntArray(s); + return intArr.orElseGet(() -> new int[0]); + } + @Override + public long[] getLongArray(String s) { + Optional longArr = obj.getLongArray(s); + return longArr.orElseGet(() -> new long[0]); + } + @Override + public GenericNBTCompound getCompound(String s) { + return new NBTCompound(obj.getCompoundOrEmpty(s)); + } + @Override + public GenericNBTList getList(String s, int i) { + return new NBTList(obj.getListOrEmpty(s)); + } + @Override + public boolean getBoolean(String s) { + return getByte(s) != 0; + } + @Override + public String getAsString(String s) { + Tag t = obj.get(s); + return t != null ? t.asString().orElse("") : ""; + } + @Override + public GenericBitStorage makeBitStorage(int bits, int count, long[] data) { + return new OurBitStorage(bits, count, data); + } + public String toString() { + return obj.toString(); + } + } + + public static class NBTList implements GenericNBTList { + private final ListTag obj; + public NBTList(ListTag t) { + obj = t; + } + @Override + public int size() { + return obj.size(); + } + @Override + public String getString(int idx) { + return obj.getStringOr(idx, ""); + } + @Override + public GenericNBTCompound getCompound(int idx) { + return new NBTCompound(obj.getCompoundOrEmpty(idx)); + } + public String toString() { + return obj.toString(); + } + } + + public static class OurBitStorage implements GenericBitStorage { + private final SimpleBitStorage bs; + public OurBitStorage(int bits, int count, long[] data) { + bs = new SimpleBitStorage(bits, count, data); + } + @Override + public int get(int idx) { + return bs.get(idx); + } + } +} diff --git a/settings.gradle b/settings.gradle index b3453f0b3..55f38c5a0 100644 --- a/settings.gradle +++ b/settings.gradle @@ -33,6 +33,7 @@ include ':bukkit-helper-121-5' include ':bukkit-helper-121-6' include ':bukkit-helper-121-10' include ':bukkit-helper-121-11' +include ':paper-helper-261-2' include ':bukkit-helper' include ':dynmap-api' include ':DynmapCore' @@ -86,6 +87,7 @@ project(':bukkit-helper-121-5').projectDir = "$rootDir/bukkit-helper-121-5" as F project(':bukkit-helper-121-6').projectDir = "$rootDir/bukkit-helper-121-6" as File project(':bukkit-helper-121-10').projectDir = "$rootDir/bukkit-helper-121-10" as File project(':bukkit-helper-121-11').projectDir = "$rootDir/bukkit-helper-121-11" as File +project(':paper-helper-261-2').projectDir = "$rootDir/paper-helper-261-2" as File project(':bukkit-helper').projectDir = "$rootDir/bukkit-helper" as File project(':dynmap-api').projectDir = "$rootDir/dynmap-api" as File project(':DynmapCore').projectDir = "$rootDir/DynmapCore" as File diff --git a/spigot/src/main/java/org/dynmap/bukkit/Helper.java b/spigot/src/main/java/org/dynmap/bukkit/Helper.java index 26cc72e7f..82031454a 100644 --- a/spigot/src/main/java/org/dynmap/bukkit/Helper.java +++ b/spigot/src/main/java/org/dynmap/bukkit/Helper.java @@ -40,6 +40,9 @@ else if(Bukkit.getServer().getClass().getName().contains("GlowServer")) { Log.info("Loading Glowstone support"); BukkitVersionHelper.helper = loadVersionHelper("org.dynmap.bukkit.helper.BukkitVersionHelperGlowstone"); } + else if (v.contains("(MC: 26.1")) { + BukkitVersionHelper.helper = loadVersionHelper("org.dynmap.bukkit.helper.v261_2.BukkitVersionHelperSpigot261_2"); + } else if (v.contains("(MC: 1.21)") || v.contains("(MC: 1.21.1)")) { BukkitVersionHelper.helper = loadVersionHelper("org.dynmap.bukkit.helper.v121.BukkitVersionHelperSpigot121"); }