diff --git a/.gitignore b/.gitignore index 0eeb19b49..fa5fb7048 100644 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,7 @@ # we use maven! /build.xml -# maven +# gradle out dir /target # vim @@ -22,6 +22,7 @@ # various other potential build files /build +**/build/ /bin /dist /manifest.mf @@ -33,6 +34,7 @@ *.log /.gradle +**/.gradle /fabric-1.16.1_client.launch /fabric-1.16.1_server.launch /fabric-1.16.2_client.launch diff --git a/DynmapCore/build.gradle b/DynmapCore/build.gradle deleted file mode 100644 index 9fa007713..000000000 --- a/DynmapCore/build.gradle +++ /dev/null @@ -1,88 +0,0 @@ -description = "DynmapCore" - -apply plugin: 'eclipse' - -eclipse { - project { - name = "Dynmap(DynmapCore)" - } -} - -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. - -dependencies { - implementation project(':DynmapCoreAPI') - implementation 'javax.servlet:javax.servlet-api:3.1' - implementation'org.eclipse.jetty:jetty-server:9.4.26.v20200117' - implementation 'org.eclipse.jetty:jetty-servlet:9.4.26.v20200117' - implementation 'com.googlecode.json-simple:json-simple:1.1.1' - implementation 'org.yaml:snakeyaml:1.23' // DON'T UPDATE - NEWER ONE TRIPS ON WINDOWS ENCODED FILES - implementation 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20180219.1' - implementation 'org.postgresql:postgresql:42.2.18' - implementation 'io.github.linktosriram.s3lite:core:0.0.2-SNAPSHOT' - implementation 'io.github.linktosriram.s3lite:api:0.0.2-SNAPSHOT' - implementation 'io.github.linktosriram.s3lite:http-client-url-connection:0.0.2-SNAPSHOT' - implementation 'io.github.linktosriram.s3lite:http-client-spi:0.0.2-SNAPSHOT' - implementation 'io.github.linktosriram.s3lite:util:0.0.2-SNAPSHOT' - implementation 'jakarta.xml.bind:jakarta.xml.bind-api:3.0.1' - implementation 'com.sun.xml.bind:jaxb-impl:3.0.0' -} - -processResources { - // replace stuff in mcmod.info, nothing else - filesMatching([ - 'core.yml', - 'lightings.txt', - 'perspectives.txt', - 'shaders.txt', - 'extracted/web/version.js', - 'extracted/web/index.html', - 'extracted/web/login.html', - ]) { - // replace version and mcversion - expand( - buildnumber: project.parent.ext.globals.buildNumber, - version: project.version - ) - } -} - -jar { - archiveClassifier = 'unshaded' -} - -shadowJar { - 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('org.eclipse.jetty.orbit:javax.servlet:')) - include(dependency('org.postgresql:postgresql:')) - include(dependency('io.github.linktosriram.s3lite:core:')) - include(dependency('io.github.linktosriram.s3lite:api:')) - 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(':DynmapCoreAPI')) - exclude("META-INF/maven/**") - exclude("META-INF/services/**") - } - relocate('org.json.simple', 'org.dynmap.json.simple') - relocate('org.yaml.snakeyaml', 'org.dynmap.snakeyaml') - relocate('org.eclipse.jetty', 'org.dynmap.jetty') - relocate('org.owasp.html', 'org.dynmap.org.owasp.html') - relocate('javax.servlet', 'org.dynmap.javax.servlet' ) - relocate('org.postgresql', 'org.dynmap.org.postgresql') - relocate('io.github.linktosriram.s3lite', 'org.dynmap.s3lite') - - destinationDirectory = file '../target' - archiveClassifier = '' -} - -artifacts { - archives shadowJar -} diff --git a/DynmapCore/build.gradle.kts b/DynmapCore/build.gradle.kts new file mode 100644 index 000000000..76d902466 --- /dev/null +++ b/DynmapCore/build.gradle.kts @@ -0,0 +1,85 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + +plugins { + eclipse +} + +eclipse { + project { + name = "Dynmap(DynmapCore)" + } +} + +description = "DynmapCore" + +tasks.named("compileJava") { + sourceCompatibility = "1.8" + targetCompatibility = "1.8" +} + +dependencies { + implementation(project(":DynmapCoreAPI")) + implementation("javax.servlet:javax.servlet-api:3.1") + implementation("org.eclipse.jetty:jetty-server:9.4.26.v20200117") + implementation("org.eclipse.jetty:jetty-servlet:9.4.26.v20200117") + implementation("com.googlecode.json-simple:json-simple:1.1.1") + implementation("org.yaml:snakeyaml:1.23") // DON'T UPDATE - NEWER ONE TRIPS ON WINDOWS ENCODED FILES + implementation("com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20180219.1") + implementation("org.postgresql:postgresql:42.2.18") + implementation("io.github.linktosriram.s3lite:core:0.0.2-SNAPSHOT") + implementation("io.github.linktosriram.s3lite:api:0.0.2-SNAPSHOT") + implementation("io.github.linktosriram.s3lite:http-client-url-connection:0.0.2-SNAPSHOT") + implementation("io.github.linktosriram.s3lite:http-client-spi:0.0.2-SNAPSHOT") + implementation("io.github.linktosriram.s3lite:util:0.0.2-SNAPSHOT") + implementation("jakarta.xml.bind:jakarta.xml.bind-api:3.0.1") + implementation("com.sun.xml.bind:jaxb-impl:3.0.0") +} + +tasks.named("processResources") { + filesMatching(listOf("core.yml", + "lightings.txt", + "perspectives.txt", + "shaders.txt", + "extracted/web/version.js", + "extracted/web/index.html", + "extracted/web/login.html")) { + expand("buildNumber" to project.parent!!.ext["buildNumber"]) + expand("version" to project.version) + } +} + +tasks.named("shadowJar") { + 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("org.eclipse.jetty.orbit:javax.servlet:")) + include(dependency("org.postgresql:postgresql:")) + include(dependency("io.github.linktosriram.s3lite:core:")) + include(dependency("io.github.linktosriram.s3lite:api:")) + 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(":DynmapCoreAPI")) + exclude("META-INF/maven/**") + exclude("META-INF/services/**") + } + relocate("org.json.simple", "org.dynmap.json.simple") + relocate("org.yaml.snakeyaml", "org.dynmap.snakeyaml") + relocate("org.eclipse.jetty", "org.dynmap.jetty") + relocate("org.owasp.html", "org.dynmap.org.owasp.html") + relocate("javax.servlet", "org.dynmap.javax.servlet" ) + relocate("org.postgresql", "org.dynmap.org.postgresql") + relocate("io.github.linktosriram.s3lite", "org.dynmap.s3lite") + + destinationDirectory.set(File("../target")) + archiveClassifier.set("") +} + +tasks.named("assemble").configure { + dependsOn("shadowJar") +} diff --git a/DynmapCoreAPI/build.gradle b/DynmapCoreAPI/build.gradle deleted file mode 100644 index 93f716856..000000000 --- a/DynmapCoreAPI/build.gradle +++ /dev/null @@ -1,27 +0,0 @@ - -apply plugin: 'eclipse' - -eclipse { - project { - name = "Dynmap(DynmapCoreAPI)" - } -} -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. - -description = "DynmapCoreAPI" - -jar { - destinationDirectory = file '../target' -} - -artifacts { - archives jar -} - -publishing { - publications { - mavenJava(MavenPublication) { - from components.java - } - } -} diff --git a/DynmapCoreAPI/build.gradle.kts b/DynmapCoreAPI/build.gradle.kts new file mode 100644 index 000000000..52c17c277 --- /dev/null +++ b/DynmapCoreAPI/build.gradle.kts @@ -0,0 +1,26 @@ +plugins { + eclipse +} + +eclipse { + project { + name = "Dynmap(DynmapCoreAPI)" + } +} + +tasks.named("compileJava") { + sourceCompatibility = "1.8" + targetCompatibility = "1.8" +} + +description = "DynmapCoreAPI" + +tasks.withType() { + destinationDirectory.set(File("../target")) +} + +configure { + publications.withType() { + from(components["java"]) + } +} diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 99876bf05..000000000 --- a/build.gradle +++ /dev/null @@ -1,72 +0,0 @@ -// 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 'java' - id 'maven-publish' -} - -apply plugin: 'eclipse' - -eclipse { - project { - name = "Dynmap" - } -} - -allprojects { - repositories { - mavenLocal() - maven { url 'https://libraries.minecraft.net/' } - maven { url "https://oss.sonatype.org/content/repositories/releases" } - maven { url "https://oss.sonatype.org/content/repositories/snapshots" } - 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.codemc.org/repository/maven-public/" } - } - - apply plugin: 'java' - - group = 'us.dynmap' - version = '3.7-beta-7' - -} - -class Globals { - String buildNumber = System.getenv().BUILD_NUMBER ?: "Dev" -} -ext { - globals = new Globals() -} - -subprojects { - apply plugin: "io.github.goooler.shadow" - apply plugin: 'java' - apply plugin: 'maven-publish' - - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - tasks.withType(JavaCompile) { - options.encoding = 'UTF-8' - } -} - -clean { - delete "target" -} - -task setupCIWorkspace { -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 000000000..a1c492496 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,55 @@ +plugins { + id("com.gradleup.shadow") version "8.3.5" + id("java") + id("maven-publish") + id("io.papermc.paperweight.userdev") version "1.7.5" apply false + eclipse +} + +eclipse { + project { + name = "Dynmap" + } +} + +allprojects { + repositories { + mavenLocal() + mavenCentral() + maven { url = uri("https://libraries.minecraft.net/") } + maven { url = uri("https://oss.sonatype.org/content/repositories/releases") } + maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots") } + maven { url = uri("https://repo.mikeprimm.com") } + maven { url = uri("https://repo.maven.apache.org/maven2") } + maven { url = uri("https://papermc.io/repo/repository/maven-public/") } + maven { url = uri("https://repo.codemc.org/repository/maven-public/") } + } + + apply(plugin = "java") + + group = "us.dynmap" + version = "3.8-beta-1" +} + +ext["buildNumber"] = System.getenv("BUILD_NUMBER") ?: "Dev" + +subprojects { + apply(plugin = "com.gradleup.shadow") + apply(plugin = "java") + apply(plugin = "maven-publish") + + java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + tasks.withType { + options.encoding = "UTF-8" + } +} + +tasks.named("clean") { + delete("target") +} + +tasks.register("setupCIWorkspace") \ No newline at end of file diff --git a/bukkit-helper-121/.gitignore b/bukkit-helper-121/.gitignore deleted file mode 100644 index 84c048a73..000000000 --- a/bukkit-helper-121/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build/ diff --git a/bukkit-helper-113-2/.gitignore b/bukkit-helper/adapters/bukkit-helper-113-2/.gitignore similarity index 100% rename from bukkit-helper-113-2/.gitignore rename to bukkit-helper/adapters/bukkit-helper-113-2/.gitignore diff --git a/bukkit-helper-113-2/build.gradle b/bukkit-helper/adapters/bukkit-helper-113-2/build.gradle similarity index 100% rename from bukkit-helper-113-2/build.gradle rename to bukkit-helper/adapters/bukkit-helper-113-2/build.gradle diff --git a/bukkit-helper-113-2/src/main/java/org/dynmap/bukkit/helper/v113_2/BukkitVersionHelperSpigot113_2.java b/bukkit-helper/adapters/bukkit-helper-113-2/src/main/java/org/dynmap/bukkit/helper/v113_2/BukkitVersionHelperSpigot113_2.java similarity index 100% rename from bukkit-helper-113-2/src/main/java/org/dynmap/bukkit/helper/v113_2/BukkitVersionHelperSpigot113_2.java rename to bukkit-helper/adapters/bukkit-helper-113-2/src/main/java/org/dynmap/bukkit/helper/v113_2/BukkitVersionHelperSpigot113_2.java diff --git a/bukkit-helper-113-2/src/main/java/org/dynmap/bukkit/helper/v113_2/MapChunkCache113_2.java b/bukkit-helper/adapters/bukkit-helper-113-2/src/main/java/org/dynmap/bukkit/helper/v113_2/MapChunkCache113_2.java similarity index 100% rename from bukkit-helper-113-2/src/main/java/org/dynmap/bukkit/helper/v113_2/MapChunkCache113_2.java rename to bukkit-helper/adapters/bukkit-helper-113-2/src/main/java/org/dynmap/bukkit/helper/v113_2/MapChunkCache113_2.java diff --git a/bukkit-helper-114-1/.gitignore b/bukkit-helper/adapters/bukkit-helper-114-1/.gitignore similarity index 100% rename from bukkit-helper-114-1/.gitignore rename to bukkit-helper/adapters/bukkit-helper-114-1/.gitignore diff --git a/bukkit-helper-114-1/build.gradle b/bukkit-helper/adapters/bukkit-helper-114-1/build.gradle similarity index 100% rename from bukkit-helper-114-1/build.gradle rename to bukkit-helper/adapters/bukkit-helper-114-1/build.gradle diff --git a/bukkit-helper-114-1/src/main/java/org/dynmap/bukkit/helper/v114_1/BukkitVersionHelperSpigot114_1.java b/bukkit-helper/adapters/bukkit-helper-114-1/src/main/java/org/dynmap/bukkit/helper/v114_1/BukkitVersionHelperSpigot114_1.java similarity index 100% rename from bukkit-helper-114-1/src/main/java/org/dynmap/bukkit/helper/v114_1/BukkitVersionHelperSpigot114_1.java rename to bukkit-helper/adapters/bukkit-helper-114-1/src/main/java/org/dynmap/bukkit/helper/v114_1/BukkitVersionHelperSpigot114_1.java diff --git a/bukkit-helper-114-1/src/main/java/org/dynmap/bukkit/helper/v114_1/MapChunkCache114_1.java b/bukkit-helper/adapters/bukkit-helper-114-1/src/main/java/org/dynmap/bukkit/helper/v114_1/MapChunkCache114_1.java similarity index 100% rename from bukkit-helper-114-1/src/main/java/org/dynmap/bukkit/helper/v114_1/MapChunkCache114_1.java rename to bukkit-helper/adapters/bukkit-helper-114-1/src/main/java/org/dynmap/bukkit/helper/v114_1/MapChunkCache114_1.java diff --git a/bukkit-helper-114-1/src/main/java/org/dynmap/bukkit/helper/v114_1/NBT.java b/bukkit-helper/adapters/bukkit-helper-114-1/src/main/java/org/dynmap/bukkit/helper/v114_1/NBT.java similarity index 100% rename from bukkit-helper-114-1/src/main/java/org/dynmap/bukkit/helper/v114_1/NBT.java rename to bukkit-helper/adapters/bukkit-helper-114-1/src/main/java/org/dynmap/bukkit/helper/v114_1/NBT.java diff --git a/bukkit-helper-115/.gitignore b/bukkit-helper/adapters/bukkit-helper-115/.gitignore similarity index 100% rename from bukkit-helper-115/.gitignore rename to bukkit-helper/adapters/bukkit-helper-115/.gitignore diff --git a/bukkit-helper-115/build.gradle b/bukkit-helper/adapters/bukkit-helper-115/build.gradle similarity index 100% rename from bukkit-helper-115/build.gradle rename to bukkit-helper/adapters/bukkit-helper-115/build.gradle diff --git a/bukkit-helper-115/src/main/java/org/dynmap/bukkit/helper/v115/BukkitVersionHelperSpigot115.java b/bukkit-helper/adapters/bukkit-helper-115/src/main/java/org/dynmap/bukkit/helper/v115/BukkitVersionHelperSpigot115.java similarity index 100% rename from bukkit-helper-115/src/main/java/org/dynmap/bukkit/helper/v115/BukkitVersionHelperSpigot115.java rename to bukkit-helper/adapters/bukkit-helper-115/src/main/java/org/dynmap/bukkit/helper/v115/BukkitVersionHelperSpigot115.java diff --git a/bukkit-helper-115/src/main/java/org/dynmap/bukkit/helper/v115/MapChunkCache115.java b/bukkit-helper/adapters/bukkit-helper-115/src/main/java/org/dynmap/bukkit/helper/v115/MapChunkCache115.java similarity index 100% rename from bukkit-helper-115/src/main/java/org/dynmap/bukkit/helper/v115/MapChunkCache115.java rename to bukkit-helper/adapters/bukkit-helper-115/src/main/java/org/dynmap/bukkit/helper/v115/MapChunkCache115.java diff --git a/bukkit-helper-115/src/main/java/org/dynmap/bukkit/helper/v115/NBT.java b/bukkit-helper/adapters/bukkit-helper-115/src/main/java/org/dynmap/bukkit/helper/v115/NBT.java similarity index 100% rename from bukkit-helper-115/src/main/java/org/dynmap/bukkit/helper/v115/NBT.java rename to bukkit-helper/adapters/bukkit-helper-115/src/main/java/org/dynmap/bukkit/helper/v115/NBT.java diff --git a/bukkit-helper-116-2/.gitignore b/bukkit-helper/adapters/bukkit-helper-116-2/.gitignore similarity index 100% rename from bukkit-helper-116-2/.gitignore rename to bukkit-helper/adapters/bukkit-helper-116-2/.gitignore diff --git a/bukkit-helper-116-2/build.gradle b/bukkit-helper/adapters/bukkit-helper-116-2/build.gradle similarity index 100% rename from bukkit-helper-116-2/build.gradle rename to bukkit-helper/adapters/bukkit-helper-116-2/build.gradle diff --git a/bukkit-helper-116-2/src/main/java/org/dynmap/bukkit/helper/v116_2/BukkitVersionHelperSpigot116_2.java b/bukkit-helper/adapters/bukkit-helper-116-2/src/main/java/org/dynmap/bukkit/helper/v116_2/BukkitVersionHelperSpigot116_2.java similarity index 100% rename from bukkit-helper-116-2/src/main/java/org/dynmap/bukkit/helper/v116_2/BukkitVersionHelperSpigot116_2.java rename to bukkit-helper/adapters/bukkit-helper-116-2/src/main/java/org/dynmap/bukkit/helper/v116_2/BukkitVersionHelperSpigot116_2.java diff --git a/bukkit-helper-116-2/src/main/java/org/dynmap/bukkit/helper/v116_2/MapChunkCache116_2.java b/bukkit-helper/adapters/bukkit-helper-116-2/src/main/java/org/dynmap/bukkit/helper/v116_2/MapChunkCache116_2.java similarity index 100% rename from bukkit-helper-116-2/src/main/java/org/dynmap/bukkit/helper/v116_2/MapChunkCache116_2.java rename to bukkit-helper/adapters/bukkit-helper-116-2/src/main/java/org/dynmap/bukkit/helper/v116_2/MapChunkCache116_2.java diff --git a/bukkit-helper-116-2/src/main/java/org/dynmap/bukkit/helper/v116_2/NBT.java b/bukkit-helper/adapters/bukkit-helper-116-2/src/main/java/org/dynmap/bukkit/helper/v116_2/NBT.java similarity index 100% rename from bukkit-helper-116-2/src/main/java/org/dynmap/bukkit/helper/v116_2/NBT.java rename to bukkit-helper/adapters/bukkit-helper-116-2/src/main/java/org/dynmap/bukkit/helper/v116_2/NBT.java diff --git a/bukkit-helper-116-3/.gitignore b/bukkit-helper/adapters/bukkit-helper-116-3/.gitignore similarity index 100% rename from bukkit-helper-116-3/.gitignore rename to bukkit-helper/adapters/bukkit-helper-116-3/.gitignore diff --git a/bukkit-helper-116-3/build.gradle b/bukkit-helper/adapters/bukkit-helper-116-3/build.gradle similarity index 100% rename from bukkit-helper-116-3/build.gradle rename to bukkit-helper/adapters/bukkit-helper-116-3/build.gradle diff --git a/bukkit-helper-116-3/src/main/java/org/dynmap/bukkit/helper/v116_3/BukkitVersionHelperSpigot116_3.java b/bukkit-helper/adapters/bukkit-helper-116-3/src/main/java/org/dynmap/bukkit/helper/v116_3/BukkitVersionHelperSpigot116_3.java similarity index 100% rename from bukkit-helper-116-3/src/main/java/org/dynmap/bukkit/helper/v116_3/BukkitVersionHelperSpigot116_3.java rename to bukkit-helper/adapters/bukkit-helper-116-3/src/main/java/org/dynmap/bukkit/helper/v116_3/BukkitVersionHelperSpigot116_3.java diff --git a/bukkit-helper-116-3/src/main/java/org/dynmap/bukkit/helper/v116_3/MapChunkCache116_3.java b/bukkit-helper/adapters/bukkit-helper-116-3/src/main/java/org/dynmap/bukkit/helper/v116_3/MapChunkCache116_3.java similarity index 100% rename from bukkit-helper-116-3/src/main/java/org/dynmap/bukkit/helper/v116_3/MapChunkCache116_3.java rename to bukkit-helper/adapters/bukkit-helper-116-3/src/main/java/org/dynmap/bukkit/helper/v116_3/MapChunkCache116_3.java diff --git a/bukkit-helper-116-3/src/main/java/org/dynmap/bukkit/helper/v116_3/NBT.java b/bukkit-helper/adapters/bukkit-helper-116-3/src/main/java/org/dynmap/bukkit/helper/v116_3/NBT.java similarity index 100% rename from bukkit-helper-116-3/src/main/java/org/dynmap/bukkit/helper/v116_3/NBT.java rename to bukkit-helper/adapters/bukkit-helper-116-3/src/main/java/org/dynmap/bukkit/helper/v116_3/NBT.java diff --git a/bukkit-helper-116-4/.gitignore b/bukkit-helper/adapters/bukkit-helper-116-4/.gitignore similarity index 100% rename from bukkit-helper-116-4/.gitignore rename to bukkit-helper/adapters/bukkit-helper-116-4/.gitignore diff --git a/bukkit-helper-116-4/build.gradle b/bukkit-helper/adapters/bukkit-helper-116-4/build.gradle similarity index 100% rename from bukkit-helper-116-4/build.gradle rename to bukkit-helper/adapters/bukkit-helper-116-4/build.gradle diff --git a/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/BukkitVersionHelperSpigot116_4.java b/bukkit-helper/adapters/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/BukkitVersionHelperSpigot116_4.java similarity index 100% rename from bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/BukkitVersionHelperSpigot116_4.java rename to bukkit-helper/adapters/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/BukkitVersionHelperSpigot116_4.java diff --git a/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/MapChunkCache116_4.java b/bukkit-helper/adapters/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/MapChunkCache116_4.java similarity index 100% rename from bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/MapChunkCache116_4.java rename to bukkit-helper/adapters/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/MapChunkCache116_4.java diff --git a/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/NBT.java b/bukkit-helper/adapters/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/NBT.java similarity index 100% rename from bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/NBT.java rename to bukkit-helper/adapters/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/NBT.java diff --git a/bukkit-helper-116/.gitignore b/bukkit-helper/adapters/bukkit-helper-116/.gitignore similarity index 100% rename from bukkit-helper-116/.gitignore rename to bukkit-helper/adapters/bukkit-helper-116/.gitignore diff --git a/bukkit-helper-116/build.gradle b/bukkit-helper/adapters/bukkit-helper-116/build.gradle similarity index 100% rename from bukkit-helper-116/build.gradle rename to bukkit-helper/adapters/bukkit-helper-116/build.gradle diff --git a/bukkit-helper-116/src/main/java/org/dynmap/bukkit/helper/v116/BukkitVersionHelperSpigot116.java b/bukkit-helper/adapters/bukkit-helper-116/src/main/java/org/dynmap/bukkit/helper/v116/BukkitVersionHelperSpigot116.java similarity index 100% rename from bukkit-helper-116/src/main/java/org/dynmap/bukkit/helper/v116/BukkitVersionHelperSpigot116.java rename to bukkit-helper/adapters/bukkit-helper-116/src/main/java/org/dynmap/bukkit/helper/v116/BukkitVersionHelperSpigot116.java diff --git a/bukkit-helper-116/src/main/java/org/dynmap/bukkit/helper/v116/MapChunkCache116.java b/bukkit-helper/adapters/bukkit-helper-116/src/main/java/org/dynmap/bukkit/helper/v116/MapChunkCache116.java similarity index 100% rename from bukkit-helper-116/src/main/java/org/dynmap/bukkit/helper/v116/MapChunkCache116.java rename to bukkit-helper/adapters/bukkit-helper-116/src/main/java/org/dynmap/bukkit/helper/v116/MapChunkCache116.java diff --git a/bukkit-helper-116/src/main/java/org/dynmap/bukkit/helper/v116/NBT.java b/bukkit-helper/adapters/bukkit-helper-116/src/main/java/org/dynmap/bukkit/helper/v116/NBT.java similarity index 100% rename from bukkit-helper-116/src/main/java/org/dynmap/bukkit/helper/v116/NBT.java rename to bukkit-helper/adapters/bukkit-helper-116/src/main/java/org/dynmap/bukkit/helper/v116/NBT.java diff --git a/bukkit-helper-117/.gitignore b/bukkit-helper/adapters/bukkit-helper-117/.gitignore similarity index 100% rename from bukkit-helper-117/.gitignore rename to bukkit-helper/adapters/bukkit-helper-117/.gitignore diff --git a/bukkit-helper-117/build.gradle b/bukkit-helper/adapters/bukkit-helper-117/build.gradle similarity index 100% rename from bukkit-helper-117/build.gradle rename to bukkit-helper/adapters/bukkit-helper-117/build.gradle diff --git a/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/BukkitVersionHelperSpigot117.java b/bukkit-helper/adapters/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/BukkitVersionHelperSpigot117.java similarity index 100% rename from bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/BukkitVersionHelperSpigot117.java rename to bukkit-helper/adapters/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/BukkitVersionHelperSpigot117.java diff --git a/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/MapChunkCache117.java b/bukkit-helper/adapters/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/MapChunkCache117.java similarity index 100% rename from bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/MapChunkCache117.java rename to bukkit-helper/adapters/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/MapChunkCache117.java diff --git a/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/NBT.java b/bukkit-helper/adapters/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/NBT.java similarity index 100% rename from bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/NBT.java rename to bukkit-helper/adapters/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/NBT.java diff --git a/bukkit-helper-118-2/.gitignore b/bukkit-helper/adapters/bukkit-helper-118-2/.gitignore similarity index 100% rename from bukkit-helper-118-2/.gitignore rename to bukkit-helper/adapters/bukkit-helper-118-2/.gitignore diff --git a/bukkit-helper-118-2/build.gradle b/bukkit-helper/adapters/bukkit-helper-118-2/build.gradle similarity index 100% rename from bukkit-helper-118-2/build.gradle rename to bukkit-helper/adapters/bukkit-helper-118-2/build.gradle diff --git a/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/AsyncChunkProvider118_2.java b/bukkit-helper/adapters/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/AsyncChunkProvider118_2.java similarity index 100% rename from bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/AsyncChunkProvider118_2.java rename to bukkit-helper/adapters/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/AsyncChunkProvider118_2.java diff --git a/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/BukkitVersionHelperSpigot118_2.java b/bukkit-helper/adapters/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/BukkitVersionHelperSpigot118_2.java similarity index 100% rename from bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/BukkitVersionHelperSpigot118_2.java rename to bukkit-helper/adapters/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/BukkitVersionHelperSpigot118_2.java diff --git a/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/MapChunkCache118_2.java b/bukkit-helper/adapters/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/MapChunkCache118_2.java similarity index 100% rename from bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/MapChunkCache118_2.java rename to bukkit-helper/adapters/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/MapChunkCache118_2.java diff --git a/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/NBT.java b/bukkit-helper/adapters/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/NBT.java similarity index 100% rename from bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/NBT.java rename to bukkit-helper/adapters/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/NBT.java diff --git a/bukkit-helper-118/.gitignore b/bukkit-helper/adapters/bukkit-helper-118/.gitignore similarity index 100% rename from bukkit-helper-118/.gitignore rename to bukkit-helper/adapters/bukkit-helper-118/.gitignore diff --git a/bukkit-helper-118/build.gradle b/bukkit-helper/adapters/bukkit-helper-118/build.gradle similarity index 100% rename from bukkit-helper-118/build.gradle rename to bukkit-helper/adapters/bukkit-helper-118/build.gradle diff --git a/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/BukkitVersionHelperSpigot118.java b/bukkit-helper/adapters/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/BukkitVersionHelperSpigot118.java similarity index 100% rename from bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/BukkitVersionHelperSpigot118.java rename to bukkit-helper/adapters/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/BukkitVersionHelperSpigot118.java diff --git a/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/MapChunkCache118.java b/bukkit-helper/adapters/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/MapChunkCache118.java similarity index 100% rename from bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/MapChunkCache118.java rename to bukkit-helper/adapters/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/MapChunkCache118.java diff --git a/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/NBT.java b/bukkit-helper/adapters/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/NBT.java similarity index 100% rename from bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/NBT.java rename to bukkit-helper/adapters/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/NBT.java diff --git a/bukkit-helper-119-3/.gitignore b/bukkit-helper/adapters/bukkit-helper-119-3/.gitignore similarity index 100% rename from bukkit-helper-119-3/.gitignore rename to bukkit-helper/adapters/bukkit-helper-119-3/.gitignore diff --git a/bukkit-helper-119-3/build.gradle b/bukkit-helper/adapters/bukkit-helper-119-3/build.gradle similarity index 100% rename from bukkit-helper-119-3/build.gradle rename to bukkit-helper/adapters/bukkit-helper-119-3/build.gradle diff --git a/bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/AsyncChunkProvider119_3.java b/bukkit-helper/adapters/bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/AsyncChunkProvider119_3.java similarity index 100% rename from bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/AsyncChunkProvider119_3.java rename to bukkit-helper/adapters/bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/AsyncChunkProvider119_3.java diff --git a/bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/BukkitVersionHelperSpigot119_3.java b/bukkit-helper/adapters/bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/BukkitVersionHelperSpigot119_3.java similarity index 100% rename from bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/BukkitVersionHelperSpigot119_3.java rename to bukkit-helper/adapters/bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/BukkitVersionHelperSpigot119_3.java diff --git a/bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/MapChunkCache119_3.java b/bukkit-helper/adapters/bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/MapChunkCache119_3.java similarity index 100% rename from bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/MapChunkCache119_3.java rename to bukkit-helper/adapters/bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/MapChunkCache119_3.java diff --git a/bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/NBT.java b/bukkit-helper/adapters/bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/NBT.java similarity index 100% rename from bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/NBT.java rename to bukkit-helper/adapters/bukkit-helper-119-3/src/main/java/org/dynmap/bukkit/helper/v119_3/NBT.java diff --git a/bukkit-helper-119-4/.gitignore b/bukkit-helper/adapters/bukkit-helper-119-4/.gitignore similarity index 100% rename from bukkit-helper-119-4/.gitignore rename to bukkit-helper/adapters/bukkit-helper-119-4/.gitignore diff --git a/bukkit-helper-119-4/build.gradle b/bukkit-helper/adapters/bukkit-helper-119-4/build.gradle similarity index 100% rename from bukkit-helper-119-4/build.gradle rename to bukkit-helper/adapters/bukkit-helper-119-4/build.gradle diff --git a/bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/AsyncChunkProvider119_4.java b/bukkit-helper/adapters/bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/AsyncChunkProvider119_4.java similarity index 100% rename from bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/AsyncChunkProvider119_4.java rename to bukkit-helper/adapters/bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/AsyncChunkProvider119_4.java diff --git a/bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/BukkitVersionHelperSpigot119_4.java b/bukkit-helper/adapters/bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/BukkitVersionHelperSpigot119_4.java similarity index 100% rename from bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/BukkitVersionHelperSpigot119_4.java rename to bukkit-helper/adapters/bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/BukkitVersionHelperSpigot119_4.java diff --git a/bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/MapChunkCache119_4.java b/bukkit-helper/adapters/bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/MapChunkCache119_4.java similarity index 100% rename from bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/MapChunkCache119_4.java rename to bukkit-helper/adapters/bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/MapChunkCache119_4.java diff --git a/bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/NBT.java b/bukkit-helper/adapters/bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/NBT.java similarity index 100% rename from bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/NBT.java rename to bukkit-helper/adapters/bukkit-helper-119-4/src/main/java/org/dynmap/bukkit/helper/v119_4/NBT.java diff --git a/bukkit-helper-119/.gitignore b/bukkit-helper/adapters/bukkit-helper-119/.gitignore similarity index 100% rename from bukkit-helper-119/.gitignore rename to bukkit-helper/adapters/bukkit-helper-119/.gitignore diff --git a/bukkit-helper-119/bin/.gitignore b/bukkit-helper/adapters/bukkit-helper-119/bin/.gitignore similarity index 100% rename from bukkit-helper-119/bin/.gitignore rename to bukkit-helper/adapters/bukkit-helper-119/bin/.gitignore diff --git a/bukkit-helper-119/build.gradle b/bukkit-helper/adapters/bukkit-helper-119/build.gradle similarity index 100% rename from bukkit-helper-119/build.gradle rename to bukkit-helper/adapters/bukkit-helper-119/build.gradle diff --git a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/AsyncChunkProvider119.java b/bukkit-helper/adapters/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/AsyncChunkProvider119.java similarity index 100% rename from bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/AsyncChunkProvider119.java rename to bukkit-helper/adapters/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/AsyncChunkProvider119.java diff --git a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/BukkitVersionHelperSpigot119.java b/bukkit-helper/adapters/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/BukkitVersionHelperSpigot119.java similarity index 100% rename from bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/BukkitVersionHelperSpigot119.java rename to bukkit-helper/adapters/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/BukkitVersionHelperSpigot119.java diff --git a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java b/bukkit-helper/adapters/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java similarity index 100% rename from bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java rename to bukkit-helper/adapters/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java diff --git a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/NBT.java b/bukkit-helper/adapters/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/NBT.java similarity index 100% rename from bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/NBT.java rename to bukkit-helper/adapters/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/NBT.java diff --git a/bukkit-helper-120-2/.gitignore b/bukkit-helper/adapters/bukkit-helper-120-2/.gitignore similarity index 100% rename from bukkit-helper-120-2/.gitignore rename to bukkit-helper/adapters/bukkit-helper-120-2/.gitignore diff --git a/bukkit-helper-120-2/bin/.gitignore b/bukkit-helper/adapters/bukkit-helper-120-2/bin/.gitignore similarity index 100% rename from bukkit-helper-120-2/bin/.gitignore rename to bukkit-helper/adapters/bukkit-helper-120-2/bin/.gitignore diff --git a/bukkit-helper-120-2/build.gradle b/bukkit-helper/adapters/bukkit-helper-120-2/build.gradle similarity index 100% rename from bukkit-helper-120-2/build.gradle rename to bukkit-helper/adapters/bukkit-helper-120-2/build.gradle diff --git a/bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/AsyncChunkProvider120_2.java b/bukkit-helper/adapters/bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/AsyncChunkProvider120_2.java similarity index 100% rename from bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/AsyncChunkProvider120_2.java rename to bukkit-helper/adapters/bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/AsyncChunkProvider120_2.java diff --git a/bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/BukkitVersionHelperSpigot120_2.java b/bukkit-helper/adapters/bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/BukkitVersionHelperSpigot120_2.java similarity index 100% rename from bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/BukkitVersionHelperSpigot120_2.java rename to bukkit-helper/adapters/bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/BukkitVersionHelperSpigot120_2.java diff --git a/bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/MapChunkCache120_2.java b/bukkit-helper/adapters/bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/MapChunkCache120_2.java similarity index 100% rename from bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/MapChunkCache120_2.java rename to bukkit-helper/adapters/bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/MapChunkCache120_2.java diff --git a/bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/NBT.java b/bukkit-helper/adapters/bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/NBT.java similarity index 100% rename from bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/NBT.java rename to bukkit-helper/adapters/bukkit-helper-120-2/src/main/java/org/dynmap/bukkit/helper/v120_2/NBT.java diff --git a/bukkit-helper-120-4/.gitignore b/bukkit-helper/adapters/bukkit-helper-120-4/.gitignore similarity index 100% rename from bukkit-helper-120-4/.gitignore rename to bukkit-helper/adapters/bukkit-helper-120-4/.gitignore diff --git a/bukkit-helper-120-4/build.gradle b/bukkit-helper/adapters/bukkit-helper-120-4/build.gradle similarity index 100% rename from bukkit-helper-120-4/build.gradle rename to bukkit-helper/adapters/bukkit-helper-120-4/build.gradle diff --git a/bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/AsyncChunkProvider120_4.java b/bukkit-helper/adapters/bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/AsyncChunkProvider120_4.java similarity index 100% rename from bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/AsyncChunkProvider120_4.java rename to bukkit-helper/adapters/bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/AsyncChunkProvider120_4.java diff --git a/bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/BukkitVersionHelperSpigot120_4.java b/bukkit-helper/adapters/bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/BukkitVersionHelperSpigot120_4.java similarity index 100% rename from bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/BukkitVersionHelperSpigot120_4.java rename to bukkit-helper/adapters/bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/BukkitVersionHelperSpigot120_4.java diff --git a/bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/MapChunkCache120_4.java b/bukkit-helper/adapters/bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/MapChunkCache120_4.java similarity index 100% rename from bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/MapChunkCache120_4.java rename to bukkit-helper/adapters/bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/MapChunkCache120_4.java diff --git a/bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/NBT.java b/bukkit-helper/adapters/bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/NBT.java similarity index 100% rename from bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/NBT.java rename to bukkit-helper/adapters/bukkit-helper-120-4/src/main/java/org/dynmap/bukkit/helper/v120_4/NBT.java diff --git a/bukkit-helper-120-5/.gitignore b/bukkit-helper/adapters/bukkit-helper-120-5/.gitignore similarity index 100% rename from bukkit-helper-120-5/.gitignore rename to bukkit-helper/adapters/bukkit-helper-120-5/.gitignore diff --git a/bukkit-helper-120-5/build.gradle b/bukkit-helper/adapters/bukkit-helper-120-5/build.gradle similarity index 100% rename from bukkit-helper-120-5/build.gradle rename to bukkit-helper/adapters/bukkit-helper-120-5/build.gradle diff --git a/bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/AsyncChunkProvider120_5.java b/bukkit-helper/adapters/bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/AsyncChunkProvider120_5.java similarity index 100% rename from bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/AsyncChunkProvider120_5.java rename to bukkit-helper/adapters/bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/AsyncChunkProvider120_5.java diff --git a/bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/BukkitVersionHelperSpigot120_5.java b/bukkit-helper/adapters/bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/BukkitVersionHelperSpigot120_5.java similarity index 100% rename from bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/BukkitVersionHelperSpigot120_5.java rename to bukkit-helper/adapters/bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/BukkitVersionHelperSpigot120_5.java diff --git a/bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/MapChunkCache120_5.java b/bukkit-helper/adapters/bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/MapChunkCache120_5.java similarity index 100% rename from bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/MapChunkCache120_5.java rename to bukkit-helper/adapters/bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/MapChunkCache120_5.java diff --git a/bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/NBT.java b/bukkit-helper/adapters/bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/NBT.java similarity index 100% rename from bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/NBT.java rename to bukkit-helper/adapters/bukkit-helper-120-5/src/main/java/org/dynmap/bukkit/helper/v120_5/NBT.java diff --git a/bukkit-helper-120/.gitignore b/bukkit-helper/adapters/bukkit-helper-120/.gitignore similarity index 100% rename from bukkit-helper-120/.gitignore rename to bukkit-helper/adapters/bukkit-helper-120/.gitignore diff --git a/bukkit-helper-120/build.gradle b/bukkit-helper/adapters/bukkit-helper-120/build.gradle similarity index 100% rename from bukkit-helper-120/build.gradle rename to bukkit-helper/adapters/bukkit-helper-120/build.gradle diff --git a/bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/AsyncChunkProvider120.java b/bukkit-helper/adapters/bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/AsyncChunkProvider120.java similarity index 100% rename from bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/AsyncChunkProvider120.java rename to bukkit-helper/adapters/bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/AsyncChunkProvider120.java diff --git a/bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/BukkitVersionHelperSpigot120.java b/bukkit-helper/adapters/bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/BukkitVersionHelperSpigot120.java similarity index 100% rename from bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/BukkitVersionHelperSpigot120.java rename to bukkit-helper/adapters/bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/BukkitVersionHelperSpigot120.java diff --git a/bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/MapChunkCache120.java b/bukkit-helper/adapters/bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/MapChunkCache120.java similarity index 100% rename from bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/MapChunkCache120.java rename to bukkit-helper/adapters/bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/MapChunkCache120.java diff --git a/bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/NBT.java b/bukkit-helper/adapters/bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/NBT.java similarity index 100% rename from bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/NBT.java rename to bukkit-helper/adapters/bukkit-helper-120/src/main/java/org/dynmap/bukkit/helper/v120/NBT.java diff --git a/bukkit-helper/adapters/bukkit-helper-121-3/build.gradle.kts b/bukkit-helper/adapters/bukkit-helper-121-3/build.gradle.kts new file mode 100644 index 000000000..edd6211be --- /dev/null +++ b/bukkit-helper/adapters/bukkit-helper-121-3/build.gradle.kts @@ -0,0 +1,39 @@ +plugins { + id("io.papermc.paperweight.userdev") + eclipse +} + +eclipse { + project { + name = "Dynmap(Spigot-1.21)" + } +} + +description = "bukkit-helper-1.21.3" + +repositories { + mavenCentral() + maven { url = uri("https://papermc.io/repo/repository/maven-public/") } +} + +paperweight.reobfArtifactConfiguration = io.papermc.paperweight.userdev.ReobfArtifactConfiguration.REOBF_PRODUCTION + +tasks.named("compileJava") { + sourceCompatibility = "21" + targetCompatibility = "21" + options.release.set(21) +} + +dependencies { + implementation(project(":bukkit-helper")) + implementation(project(":dynmap-api")) + implementation(project(":DynmapCore", configuration = "shadow")) + + paperweight { + paperDevBundle("1.21.3-R0.1-SNAPSHOT") + } +} + +tasks.assemble { + dependsOn(tasks.reobfJar) +} diff --git a/bukkit-helper/adapters/bukkit-helper-121-3/src/main/java/org/dynmap/bukkit/helper/v121_3/BukkitVersionHelperSpigot121_3.java b/bukkit-helper/adapters/bukkit-helper-121-3/src/main/java/org/dynmap/bukkit/helper/v121_3/BukkitVersionHelperSpigot121_3.java new file mode 100644 index 000000000..44764d190 --- /dev/null +++ b/bukkit-helper/adapters/bukkit-helper-121-3/src/main/java/org/dynmap/bukkit/helper/v121_3/BukkitVersionHelperSpigot121_3.java @@ -0,0 +1,463 @@ +package org.dynmap.bukkit.helper.v121_3; + +import net.minecraft.core.IdMapper; +import net.minecraft.core.Registry; +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.ResourceLocation; +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.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.status.ChunkStatus; +import net.minecraft.world.level.material.Fluid; +import org.bukkit.*; +import org.bukkit.block.data.BlockData; +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.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; + +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 + */ +public class BukkitVersionHelperSpigot121_3 extends BukkitVersionHelper { + + @Override + public boolean isUnsafeAsync() { + return true; + } + + /** + * Get block short name list + */ + @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 this is new block vs last, it's the base block state + if (b != baseb) { + baseb = b; + continue; + } + ResourceLocation id = BuiltInRegistries.BLOCK.getKey(b); + String bn = id.toString(); + if (bn != null) { + names.add(bn); + Log.info("block=" + bn); + } + } + return names.toArray(new String[0]); + } + + private static Registry reg = null; + + private static Registry getBiomeReg() { + if (reg == null) { + reg = MinecraftServer.getServer().registryAccess().lookupOrThrow(Registries.BIOME); + } + return reg; + } + + private Object[] biomelist; + + /** + * Get list of defined biomebase objects + */ + @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; + } + + /** + * Get ID from biomebase + */ + @Override + public int getBiomeBaseID(Object bb) { + return getBiomeReg().getId((Biome) bb); + } + + public static IdentityHashMap dataToState; + + /** + * Initialize block states (org.dynmap.blockstate.DynmapBlockState) + */ + @Override + public void initializeBlockStates() { + dataToState = new IdentityHashMap(); + HashMap lastBlockState = new HashMap(); + IdMapper bsids = Block.BLOCK_STATE_REGISTRY; + Block baseb = null; + Iterator iter = bsids.iterator(); + ArrayList names = new ArrayList(); + + // Loop through block data states + DynmapBlockState.Builder bld = new DynmapBlockState.Builder(); + while (iter.hasNext()) { + BlockState bd = iter.next(); + Block b = bd.getBlock(); + ResourceLocation id = BuiltInRegistries.BLOCK.getKey(b); + String bname = id.toString(); + DynmapBlockState lastbs = lastBlockState.get(bname); // See if we have seen this one + int idx = 0; + if (lastbs != null) { // Yes + idx = lastbs.getStateCount(); // Get number of states so far, since this is next + } + // Build state name + 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.getLightBlock(); + // Fill in base attributes + bld.setBaseState(lastbs).setStateIndex(idx).setBlockName(bname).setStateName(sb).setAttenuatesLight(lightAtten); + if (bd.getSoundType() != null) { + bld.setMaterial(bd.getSoundType().toString()); + } + 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())) { // Test if fluid type for block is not empty + bld.setWaterlogged(); + } + DynmapBlockState dbs = bld.build(); // Build state + + dataToState.put(bd, dbs); + lastBlockState.put(bname, (lastbs == null) ? dbs : lastbs); + Log.verboseinfo("blk=" + bname + ", idx=" + idx + ", state=" + sb + ", waterlogged=" + dbs.isWaterlogged()); + } + } + + /** + * Create chunk cache for given chunks of given world + * + * @param dw - world + * @param chunks - chunk list + * @return cache + */ + @Override + public MapChunkCache getChunkCache(BukkitWorld dw, List chunks) { + MapChunkCache121_3 c = new MapChunkCache121_3(gencache); + c.setChunks(dw, chunks); + return c; + } + + /** + * Get biome base water multiplier + */ + @Override + public int getBiomeBaseWaterMult(Object bb) { + Biome biome = (Biome) bb; + return biome.getWaterColor(); + } + + /** + * Get temperature from biomebase + */ + @Override + public float getBiomeBaseTemperature(Object bb) { + return ((Biome) bb).getBaseTemperature(); + } + + /** + * Get humidity from biomebase + */ + @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; + } + + // Send title/subtitle to user + 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); + } + } + + /** + * Get material map by block ID + */ + @Override + public BukkitMaterial[] getMaterialList() { + return new BukkitMaterial[4096]; // Not used + } + + @Override + public void unloadChunkNoSave(World w, org.bukkit.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 + /** Get ID string from biomebase */ + 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"); + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean isInUnloadQueue(Object unloadqueue, int x, int z) { + Log.warning("isInUnloadQueue not implemented yet"); + // TODO Auto-generated method stub + return false; + } + + @Override + public Object[] getBiomeBaseFromSnapshot(ChunkSnapshot css) { + Log.warning("getBiomeBaseFromSnapshot not implemented yet"); + // TODO Auto-generated method stub + 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) { + BlockEntity tileent = (BlockEntity) te; + return tileent.getBlockPos().getX(); + } + + @Override + public int getTileEntityY(Object te) { + BlockEntity tileent = (BlockEntity) te; + return tileent.getBlockPos().getY(); + } + + @Override + public int getTileEntityZ(Object te) { + BlockEntity tileent = (BlockEntity) te; + return tileent.getBlockPos().getZ(); + } + + @Override + public Object readTileEntityNBT(Object te, World world) { + BlockEntity tileent = (BlockEntity) te; + if (tileent.getLevel() == null) { + return null; + } + return tileent.saveWithFullMetadata(((CraftWorld) world).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 tag) { + return tag.getAsByte(); + } else if (val instanceof ShortTag tag) { + return tag.getAsShort(); + } else if (val instanceof IntTag tag) { + return tag.getAsInt(); + } else if (val instanceof LongTag tag) { + return tag.getAsLong(); + } else if (val instanceof FloatTag tag) { + return tag.getAsFloat(); + } else if (val instanceof DoubleTag tag) { + return tag.getAsDouble(); + } else if (val instanceof ByteArrayTag tag) { + return tag.getAsByteArray(); + } else if (val instanceof StringTag tag) { + return tag.getAsString(); + } else if (val instanceof IntArrayTag tag) { + return tag.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(); + + /** + * Get skin URL for player + * + * @param player + */ + @Override + public String getSkinURL(Player player) { + String url = null; + CraftPlayer cp = (CraftPlayer) player; + GameProfile profile = cp.getProfile(); + if (profile != null) { + PropertyMap pm = profile.getProperties(); + if (pm != null) { + Collection txt = pm.get("textures"); + 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; + } + + // Get minY for world + @Override + public int getWorldMinY(World w) { + CraftWorld cw = (CraftWorld) w; + return cw.getMinHeight(); + } + + @Override + public boolean useGenericCache() { + return true; + } + +} diff --git a/bukkit-helper/adapters/bukkit-helper-121-3/src/main/java/org/dynmap/bukkit/helper/v121_3/MapChunkCache121_3.java b/bukkit-helper/adapters/bukkit-helper-121-3/src/main/java/org/dynmap/bukkit/helper/v121_3/MapChunkCache121_3.java new file mode 100644 index 000000000..41f22f506 --- /dev/null +++ b/bukkit-helper/adapters/bukkit-helper-121-3/src/main/java/org/dynmap/bukkit/helper/v121_3/MapChunkCache121_3.java @@ -0,0 +1,86 @@ +package org.dynmap.bukkit.helper.v121_3; + +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.World; +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.Optional; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.function.Supplier; + +/** + * Container for managing chunks - dependent upon using chunk snapshots, since rendering is off server thread + */ +public class MapChunkCache121_3 extends GenericMapChunkCache { + private World w; + + /** + * Construct empty cache + */ + public MapChunkCache121_3(GenericChunkCache cc) { + super(cc); + } + + // Load generic chunk from existing and already loaded chunk + 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; // c.loaded + + SerializableChunkData chunkData = SerializableChunkData.copyOf(cw.getHandle(), c); + CompoundTag nbt = chunkData.write(); + return nbt != null ? parseChunkFromNBT(new NBT.NBTCompound(nbt)) : null; + } + + // Load generic chunk from unloaded chunk + @Override + protected Supplier loadChunkAsync(DynmapChunk chunk) { + CraftWorld cw = (CraftWorld) w; + CompletableFuture> future = cw.getHandle().getChunkSource().chunkMap.read(new ChunkPos(chunk.x, chunk.z)); + return () -> { + try { + Optional nbt = future.get(); + return nbt.map(n -> parseChunkFromNBT(new NBT.NBTCompound(n))).orElse(null); + } catch (InterruptedException e) { + return null; + } catch (ExecutionException e) { + throw new RuntimeException(e); + } + }; + } + + protected GenericChunk loadChunk(DynmapChunk chunk) { + return loadChunkAsync(chunk).get(); + } + + 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::getFoliageColorOverride).orElse(colormap[bm.biomeLookup()]); + } + + @Override + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + Optional effects = bm.getBiomeObject().map(Biome::getSpecialEffects); + return effects.map(biomeSpecialEffects -> biomeSpecialEffects.getGrassColorModifier() + .modifyColor(x, z, biomeSpecialEffects.getGrassColorOverride().orElse(colormap[bm.biomeLookup()]))).orElse(colormap[bm.biomeLookup()]); + } +} diff --git a/bukkit-helper/adapters/bukkit-helper-121-3/src/main/java/org/dynmap/bukkit/helper/v121_3/NBT.java b/bukkit-helper/adapters/bukkit-helper-121-3/src/main/java/org/dynmap/bukkit/helper/v121_3/NBT.java new file mode 100644 index 000000000..b25b9b4bf --- /dev/null +++ b/bukkit-helper/adapters/bukkit-helper-121-3/src/main/java/org/dynmap/bukkit/helper/v121_3/NBT.java @@ -0,0 +1,155 @@ +package org.dynmap.bukkit.helper.v121_3; + +import net.minecraft.nbt.ListTag; +import net.minecraft.util.SimpleBitStorage; +import net.minecraft.nbt.CompoundTag; +import org.dynmap.common.chunk.GenericBitStorage; +import org.dynmap.common.chunk.GenericNBTCompound; +import org.dynmap.common.chunk.GenericNBTList; + +import java.util.Set; + +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.getAllKeys(); + } + + @Override + public boolean contains(String s) { + return obj.contains(s); + } + + @Override + public boolean contains(String s, int i) { + return obj.contains(s, i); + } + + @Override + public byte getByte(String s) { + return obj.getByte(s); + } + + @Override + public short getShort(String s) { + return obj.getShort(s); + } + + @Override + public int getInt(String s) { + return obj.getInt(s); + } + + @Override + public long getLong(String s) { + return obj.getLong(s); + } + + @Override + public float getFloat(String s) { + return obj.getFloat(s); + } + + @Override + public double getDouble(String s) { + return obj.getDouble(s); + } + + @Override + public String getString(String s) { + return obj.getString(s); + } + + @Override + public byte[] getByteArray(String s) { + return obj.getByteArray(s); + } + + @Override + public int[] getIntArray(String s) { + return obj.getIntArray(s); + } + + @Override + public long[] getLongArray(String s) { + return obj.getLongArray(s); + } + + @Override + public GenericNBTCompound getCompound(String s) { + return new NBTCompound(obj.getCompound(s)); + } + + @Override + public GenericNBTList getList(String s, int i) { + return new NBTList(obj.getList(s, i)); + } + + @Override + public boolean getBoolean(String s) { + return obj.getBoolean(s); + } + + @Override + public String getAsString(String s) { + return obj.get(s).getAsString(); + } + + @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.getString(idx); + } + + @Override + public GenericNBTCompound getCompound(int idx) { + return new NBTCompound(obj.getCompound(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/bukkit-helper-121/build.gradle b/bukkit-helper/adapters/bukkit-helper-121/build.gradle similarity index 93% rename from bukkit-helper-121/build.gradle rename to bukkit-helper/adapters/bukkit-helper-121/build.gradle index 6d8ecf422..efe116a5f 100644 --- a/bukkit-helper-121/build.gradle +++ b/bukkit-helper/adapters/bukkit-helper-121/build.gradle @@ -12,6 +12,6 @@ dependencies { implementation project(':bukkit-helper') implementation project(':dynmap-api') implementation project(path: ':DynmapCore', configuration: 'shadow') - compileOnly group: 'org.spigotmc', name: 'spigot-api', version:'1.21-R0.1-SNAPSHOT' - compileOnly group: 'org.spigotmc', name: 'spigot', version:'1.21-R0.1-SNAPSHOT' + compileOnly group: 'org.spigotmc', name: 'spigot-api', version:'1.21.1-R0.1-SNAPSHOT' + compileOnly group: 'org.spigotmc', name: 'spigot', version:'1.21.1-R0.1-SNAPSHOT' } diff --git a/bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/AsyncChunkProvider121.java b/bukkit-helper/adapters/bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/AsyncChunkProvider121.java similarity index 100% rename from bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/AsyncChunkProvider121.java rename to bukkit-helper/adapters/bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/AsyncChunkProvider121.java diff --git a/bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/BukkitVersionHelperSpigot121.java b/bukkit-helper/adapters/bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/BukkitVersionHelperSpigot121.java similarity index 100% rename from bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/BukkitVersionHelperSpigot121.java rename to bukkit-helper/adapters/bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/BukkitVersionHelperSpigot121.java diff --git a/bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/MapChunkCache121.java b/bukkit-helper/adapters/bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/MapChunkCache121.java similarity index 100% rename from bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/MapChunkCache121.java rename to bukkit-helper/adapters/bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/MapChunkCache121.java diff --git a/bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/NBT.java b/bukkit-helper/adapters/bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/NBT.java similarity index 100% rename from bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/NBT.java rename to bukkit-helper/adapters/bukkit-helper-121/src/main/java/org/dynmap/bukkit/helper/v121/NBT.java diff --git a/bukkit-helper/build.gradle b/bukkit-helper/build.gradle deleted file mode 100644 index 9263aef69..000000000 --- a/bukkit-helper/build.gradle +++ /dev/null @@ -1,18 +0,0 @@ -apply plugin: 'eclipse' - -eclipse { - project { - name = "Dynmap(Spigot-Common)" - } -} - -description = 'bukkit-helper' - -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. - -dependencies { - implementation project(':dynmap-api') - implementation project(path: ':DynmapCore', configuration: 'shadow') - compileOnly group: 'org.bukkit', name: 'bukkit', version:'1.10.2-R0.1-SNAPSHOT' - compileOnly group: 'com.google.code.gson', name: 'gson', version:'2.8.9' -} diff --git a/bukkit-helper/build.gradle.kts b/bukkit-helper/build.gradle.kts new file mode 100644 index 000000000..fde669e83 --- /dev/null +++ b/bukkit-helper/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + eclipse +} + +eclipse { + project { + name = "Dynmap(Spigot-Common)" + } +} + +description = "bukkit-helper" + +tasks.named("compileJava") { + sourceCompatibility = "1.8" + targetCompatibility = "1.8" +} + +dependencies { + implementation(project(":dynmap-api")) + implementation(project(":DynmapCore", configuration = "shadow")) + compileOnly("org.bukkit:bukkit:1.10.2-R0.1-SNAPSHOT") + compileOnly("com.google.code.gson:gson:2.8.9") +} diff --git a/dynmap-api/build.gradle b/dynmap-api/build.gradle deleted file mode 100644 index fe9231737..000000000 --- a/dynmap-api/build.gradle +++ /dev/null @@ -1,40 +0,0 @@ -apply plugin: 'eclipse' - -eclipse { - project { - name = "Dynmap(dynmap-api)" - } -} - -description = "dynmap-api" - -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. - -dependencies { - compileOnly group: 'org.bukkit', name: 'bukkit', version:'1.7.10-R0.1-SNAPSHOT' - compileOnly project(":DynmapCoreAPI") -} - -jar { - archiveClassifier = 'unshaded' -} - -shadowJar { - dependencies { - include(dependency(":DynmapCoreAPI")) - } - destinationDirectory = file '../target' - archiveClassifier = '' -} - -artifacts { - archives shadowJar -} - -publishing { - publications { - mavenJava(MavenPublication) { - from components.java - } - } -} diff --git a/dynmap-api/build.gradle.kts b/dynmap-api/build.gradle.kts new file mode 100644 index 000000000..0c622be7c --- /dev/null +++ b/dynmap-api/build.gradle.kts @@ -0,0 +1,37 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + +plugins { + eclipse +} + +eclipse { + project { + name = "Dynmap(dynmap-api)" + } +} + +description = "dynmap-api" + +tasks.named("compileJava") { + sourceCompatibility = "1.8" + targetCompatibility = "1.8" +} + +dependencies { + compileOnly("org.bukkit:bukkit:1.7.10-R0.1-SNAPSHOT") + compileOnly(project(":DynmapCoreAPI")) +} + +tasks.named("shadowJar") { + dependencies { + include(dependency(":DynmapCoreAPI")) + } + destinationDirectory.set(File("../target")) + archiveClassifier.set("") +} + +configure { + publications.withType() { + from(components["java"]) + } +} diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index d85eb23d1..000000000 --- a/settings.gradle +++ /dev/null @@ -1,100 +0,0 @@ -pluginManagement { - repositories { - gradlePluginPortal() - maven { url "https://papermc.io/repo/repository/maven-public/" } - maven { url "https://maven.fabricmc.net/" } - } -} - -rootProject.name = 'dynmap-common' - -include ':spigot' -include ':bukkit-helper-113-2' -include ':bukkit-helper-114-1' -include ':bukkit-helper-115' -include ':bukkit-helper-116' -include ':bukkit-helper-116-2' -include ':bukkit-helper-116-3' -include ':bukkit-helper-116-4' -include ':bukkit-helper-117' -include ':bukkit-helper-118' -include ':bukkit-helper-118-2' -include ':bukkit-helper-119' -include ':bukkit-helper-119-3' -include ':bukkit-helper-119-4' -include ':bukkit-helper-120' -include ':bukkit-helper-120-2' -include ':bukkit-helper-120-4' -include ':bukkit-helper-120-5' -include ':bukkit-helper-121' -include ':bukkit-helper' -include ':dynmap-api' -include ':DynmapCore' -include ':DynmapCoreAPI' -include ':fabric-1.21' -include ':fabric-1.20.6' -include ':fabric-1.20.4' -include ':fabric-1.20.2' -include ':fabric-1.20' -include ':fabric-1.19.4' -include ':fabric-1.18.2' -include ':fabric-1.17.1' -include ':fabric-1.16.4' -include ':fabric-1.15.2' -include ':fabric-1.14.4' -include ':forge-1.21' -include ':forge-1.20.6' -include ':forge-1.20.2' -include ':forge-1.20' -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 -project(':bukkit-helper-114-1').projectDir = "$rootDir/bukkit-helper-114-1" as File -project(':bukkit-helper-115').projectDir = "$rootDir/bukkit-helper-115" as File -project(':bukkit-helper-116').projectDir = "$rootDir/bukkit-helper-116" as File -project(':bukkit-helper-116-2').projectDir = "$rootDir/bukkit-helper-116-2" as File -project(':bukkit-helper-116-3').projectDir = "$rootDir/bukkit-helper-116-3" as File -project(':bukkit-helper-116-4').projectDir = "$rootDir/bukkit-helper-116-4" as File -project(':bukkit-helper-117').projectDir = "$rootDir/bukkit-helper-117" as File -project(':bukkit-helper-118').projectDir = "$rootDir/bukkit-helper-118" as File -project(':bukkit-helper-118-2').projectDir = "$rootDir/bukkit-helper-118-2" as File -project(':bukkit-helper-119').projectDir = "$rootDir/bukkit-helper-119" as File -project(':bukkit-helper-119-3').projectDir = "$rootDir/bukkit-helper-119-3" as File -project(':bukkit-helper-119-4').projectDir = "$rootDir/bukkit-helper-119-4" as File -project(':bukkit-helper-120').projectDir = "$rootDir/bukkit-helper-120" as File -project(':bukkit-helper-120-2').projectDir = "$rootDir/bukkit-helper-120-2" as File -project(':bukkit-helper-120-4').projectDir = "$rootDir/bukkit-helper-120-4" as File -project(':bukkit-helper-120-5').projectDir = "$rootDir/bukkit-helper-120-5" as File -project(':bukkit-helper-121').projectDir = "$rootDir/bukkit-helper-121" 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 -project(':DynmapCoreAPI').projectDir = "$rootDir/DynmapCoreAPI" as File -project(':fabric-1.21').projectDir = "$rootDir/fabric-1.21" as File -project(':fabric-1.20.6').projectDir = "$rootDir/fabric-1.20.6" as File -project(':fabric-1.20.4').projectDir = "$rootDir/fabric-1.20.4" as File -project(':fabric-1.20.2').projectDir = "$rootDir/fabric-1.20.2" as File -project(':fabric-1.20').projectDir = "$rootDir/fabric-1.20" as File -project(':fabric-1.19.4').projectDir = "$rootDir/fabric-1.19.4" as File -project(':fabric-1.18.2').projectDir = "$rootDir/fabric-1.18.2" as File -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').projectDir = "$rootDir/forge-1.21" as File -project(':forge-1.20.6').projectDir = "$rootDir/forge-1.20.6" as File -project(':forge-1.20.2').projectDir = "$rootDir/forge-1.20.2" as File -project(':forge-1.20').projectDir = "$rootDir/forge-1.20" 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/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 000000000..cd07f8057 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,61 @@ +pluginManagement { + repositories { + gradlePluginPortal() + maven { url = uri("https://papermc.io/repo/repository/maven-public/") } + maven { url = uri("https://maven.fabricmc.net/") } + } +} + +rootProject.name = "dynmap-common" + +include(":spigot") + +listOf( + "113-2", + "114-1", + "115", + "116", + "116-2", + "116-3", + "116-4", + "117", + "118", + "118-2", + "119", + "119-3", + "119-4", + "120", + "120-2", + "120-4", + "120-5", + "121", + "121-3" +).forEach { + include(":bukkit-helper:adapters:bukkit-helper-$it") +} + +include(":bukkit-helper") +include(":dynmap-api") +include (":DynmapCore") +include (":DynmapCoreAPI") +include (":fabric-1.21") +include (":fabric-1.20.6") +include (":fabric-1.20.4") +include (":fabric-1.20.2") +include (":fabric-1.20") +include (":fabric-1.19.4") +include (":fabric-1.18.2") +include (":fabric-1.17.1") +include (":fabric-1.16.4") +include (":fabric-1.15.2") +include (":fabric-1.14.4") +include (":forge-1.21") +include (":forge-1.20.6") +include (":forge-1.20.2") +include (":forge-1.20") +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") diff --git a/spigot/build.gradle b/spigot/build.gradle deleted file mode 100644 index e918e2183..000000000 --- a/spigot/build.gradle +++ /dev/null @@ -1,148 +0,0 @@ - -description = 'dynmap' - -eclipse { - project { - name = "Dynmap(Spigot)" - } -} - -repositories { - maven { - url 'https://jitpack.io' - } - maven { - url 'https://repo.codemc.org/repository/maven-releases/' - } -} - -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. - -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('com.github.MilkBowl:VaultAPI:1.7') { transitive = false } - compileOnly('net.skinsrestorer:skinsrestorer-api:14.2.+') { transitive = false } - implementation(project(":dynmap-api")) { transitive = false } - implementation(project(path: ":DynmapCore", configuration: "shadow")) { transitive = false } - compileOnly('ru.tehkode:PermissionsEx:1.19.1') { transitive = false } - compileOnly('de.bananaco:bPermissions:2.9.1') { transitive = false } - compileOnly('com.platymuus.bukkit.permissions:PermissionsBukkit:1.6') { transitive = false } - compileOnly('org.anjocaido:EssentialsGroupManager:2.10.1') { transitive = false } - implementation group: 'org.bstats', name: 'bstats-bukkit', version: '3.0.2' - compileOnly('com.googlecode.json-simple:json-simple:1.1.1') { transitive = false } - compileOnly('com.google.code.gson:gson:2.8.9') { transitive = false } - implementation(project(':bukkit-helper')) { - transitive = false - } - implementation(project(':bukkit-helper-113-2')) { - transitive = false - } - implementation(project(':bukkit-helper-114-1')) { - transitive = false - } - implementation(project(':bukkit-helper-115')) { - transitive = false - } - implementation(project(':bukkit-helper-116')) { - transitive = false - } - implementation(project(':bukkit-helper-116-2')) { - transitive = false - } - implementation(project(':bukkit-helper-116-3')) { - transitive = false - } - implementation(project(':bukkit-helper-116-4')) { - transitive = false - } - implementation(project(':bukkit-helper-117')) { - transitive = false - } - implementation(project(':bukkit-helper-118')) { - transitive = false - } - implementation(project(':bukkit-helper-118-2')) { - transitive = false - } - implementation(project(':bukkit-helper-119')) { - transitive = false - } - implementation(project(':bukkit-helper-119-3')) { - transitive = false - } - implementation(project(':bukkit-helper-119-4')) { - transitive = false - } - implementation(project(':bukkit-helper-120')) { - transitive = false - } - implementation(project(':bukkit-helper-120-2')) { - transitive = false - } - implementation(project(':bukkit-helper-120-4')) { - transitive = false - } - implementation(project(':bukkit-helper-120-5')) { - transitive = false - } - implementation(project(':bukkit-helper-121')) { - transitive = false - } -} - -processResources { - // replace stuff in mcmod.info, nothing else - filesMatching('plugin.yml') { - // replace version and mcversion - expand( - buildnumber: project.parent.ext.globals.buildNumber, - version: project.version - ) - } -} - -jar { - archiveClassifier = 'unshaded' -} - -shadowJar { - dependencies { - include(dependency('org.bstats::')) - include(dependency(':dynmap-api')) - include(dependency(":DynmapCore")) - include(dependency(':bukkit-helper')) - include(dependency(':bukkit-helper-113-2')) - include(dependency(':bukkit-helper-114-1')) - include(dependency(':bukkit-helper-115')) - include(dependency(':bukkit-helper-116')) - include(dependency(':bukkit-helper-116-2')) - include(dependency(':bukkit-helper-116-3')) - include(dependency(':bukkit-helper-116-4')) - include(dependency(':bukkit-helper-117')) - include(dependency(':bukkit-helper-118')) - include(dependency(':bukkit-helper-118-2')) - include(dependency(':bukkit-helper-119')) - include(dependency(':bukkit-helper-119-3')) - include(dependency(':bukkit-helper-119-4')) - include(dependency(':bukkit-helper-120')) - include(dependency(':bukkit-helper-120-2')) - include(dependency(':bukkit-helper-120-4')) - include(dependency(':bukkit-helper-120-5')) - include(dependency(':bukkit-helper-121')) - } - relocate('org.bstats', 'org.dynmap.bstats') - destinationDirectory = file '../target' - archiveBaseName = "Dynmap" - archiveClassifier = 'spigot' -} -shadowJar.doLast { - task -> - ant.checksum file: task.archivePath -} - -artifacts { - archives shadowJar -} diff --git a/spigot/build.gradle.kts b/spigot/build.gradle.kts new file mode 100644 index 000000000..aaea54615 --- /dev/null +++ b/spigot/build.gradle.kts @@ -0,0 +1,104 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +import io.papermc.paperweight.userdev.attribute.Obfuscation + +plugins { + id("com.gradleup.shadow") + eclipse +} + +eclipse { + project { + name = "Dynmap(Spigot)" + } +} + +description = "Dynmap plugin for bukkit based servers" + +var adapters = configurations.create("adapters") { + description = "Adapters to include in the JAR" + isCanBeConsumed = false + isCanBeResolved = true + isTransitive = false + shouldResolveConsistentlyWith(configurations["runtimeClasspath"]) + attributes { + attribute(Obfuscation.OBFUSCATION_ATTRIBUTE, objects.named(Obfuscation.OBFUSCATED)) + } +} + +repositories { + maven { + url = uri("https://jitpack.io") + } + maven { + url = uri("https://repo.codemc.org/repository/maven-releases/") + } + maven { url = uri ("https://papermc.io/repo/repository/maven-public/") } +} + +dependencies { + compileOnly("org.bukkit:bukkit:1.10.2-R0.1-SNAPSHOT") + compileOnly("com.nijikokun.bukkit:Permissions:3.1.6") { isTransitive = false } + compileOnly("me.lucko.luckperms:luckperms-api:4.3") { isTransitive = false } + compileOnly("net.luckperms:api:5.4") { isTransitive = false } + compileOnly("com.github.MilkBowl:VaultAPI:1.7") { isTransitive = false } + compileOnly("net.skinsrestorer:skinsrestorer-api:14.2.+") { isTransitive = false } + implementation(project(":dynmap-api")) { isTransitive = false } + implementation(project(":DynmapCore", configuration = "shadow")) { isTransitive = false } + compileOnly("ru.tehkode:PermissionsEx:1.19.1") { isTransitive = false } + compileOnly("de.bananaco:bPermissions:2.9.1") { isTransitive = false } + compileOnly("com.platymuus.bukkit.permissions:PermissionsBukkit:1.6") { isTransitive = false } + compileOnly("org.anjocaido:EssentialsGroupManager:2.10.1") { isTransitive = false } + implementation("org.bstats:bstats-bukkit:3.0.2") + compileOnly("com.googlecode.json-simple:json-simple:1.1.1") { isTransitive = false } + compileOnly("com.google.code.gson:gson:2.8.9") { isTransitive = false } + + implementation(project(":bukkit-helper")) + + project.project(":bukkit-helper:adapters").subprojects.forEach { + "adapters"(project(it.path)) + } +} + +tasks.named("processResources") { + val internalVersion = "${project.version}-${project.parent!!.ext["buildNumber"]}" + inputs.property("internalVersion", internalVersion) + filesMatching("plugin.yml") { + expand("internalVersion" to internalVersion) + } +} + +/* +jar { + classifier = 'unshaded' +}*/ + +tasks.named("shadowJar") { + configurations.add(adapters) + + dependencies { + include(dependency("org.bstats::")) + include(dependency(":dynmap-api")) + include(dependency(":DynmapCore")) + include(dependency(":bukkit-helper")) + + project.project(":bukkit-helper:adapters").subprojects.forEach { + include(dependency("${it.group}:${it.name}")) + } + } + relocate("org.bstats", "org.dynmap.bstats") +// destinationDir = file '../target' +// archiveName = "Dynmap-${parent.version}-spigot.jar" +// classifier = '' +} + +tasks.named("shadowJar") { + doLast { + ant.withGroovyBuilder { + "checksum"("file" to archiveFile.get().asFile) + } + } +} + +tasks.named("assemble").configure { + dependsOn("shadowJar") +} diff --git a/spigot/src/main/java/org/dynmap/bukkit/Helper.java b/spigot/src/main/java/org/dynmap/bukkit/Helper.java index cd1fad52b..44cd2abd3 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: 1.21.3)")) { + BukkitVersionHelper.helper = loadVersionHelper("org.dynmap.bukkit.helper.v121_3.BukkitVersionHelperSpigot121_3"); + } else if (v.contains("(MC: 1.21")) { BukkitVersionHelper.helper = loadVersionHelper("org.dynmap.bukkit.helper.v121.BukkitVersionHelperSpigot121"); } diff --git a/spigot/src/main/resources/plugin.yml b/spigot/src/main/resources/plugin.yml index 8efeee429..ec62f70b7 100644 --- a/spigot/src/main/resources/plugin.yml +++ b/spigot/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: dynmap main: org.dynmap.bukkit.DynmapPlugin -version: "${version}-${buildnumber}" +version: "${internalVersion}" api-version: 1.13 authors: [mikeprimm] website: "https://www.reddit.com/r/Dynmap/"