diff --git a/.github/badges/branches.svg b/.github/badges/branches.svg
index 3adf704..cff11b2 100644
--- a/.github/badges/branches.svg
+++ b/.github/badges/branches.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/.github/badges/jacoco.svg b/.github/badges/jacoco.svg
index 851c8aa..3d65b6f 100644
--- a/.github/badges/jacoco.svg
+++ b/.github/badges/jacoco.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml
index 0726d29..5153538 100644
--- a/.github/workflows/coverage.yml
+++ b/.github/workflows/coverage.yml
@@ -11,12 +11,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - name: Set up JDK 18
- uses: actions/setup-java@v3
+ - uses: actions/checkout@v5
+ - name: Set up JDK 21
+ uses: actions/setup-java@v5
with:
distribution: temurin
- java-version: 18
+ java-version: 21
- name: Run Test Coverage
run: ./gradlew jacocoTestReport
- name: Generate JaCoCo Badge
@@ -48,7 +48,7 @@ jobs:
branch: dev
- name: Upload JaCoCo coverage report
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: jacoco-report
path: |
diff --git a/.github/workflows/javadocs.yml b/.github/workflows/javadocs.yml
index 44fec13..92bc646 100644
--- a/.github/workflows/javadocs.yml
+++ b/.github/workflows/javadocs.yml
@@ -10,16 +10,16 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - name: Set up JDK 18
- uses: actions/setup-java@v3
+ - uses: actions/checkout@v5
+ - name: Set up JDK 21
+ uses: actions/setup-java@v5
with:
distribution: adopt
- java-version: 18
+ java-version: 21
- name: Build Javadocs
run: |
echo "Building javadocs with gradle"
- ./gradlew clean allJavadocs
+ ./gradlew clean javadoc
echo "Moving to javadocs directory:"
cd build/docs/javadoc
echo "Creating .nojekyll to have Github pages deploy html as is:"
diff --git a/.github/workflows/publish_to_nexus.yml b/.github/workflows/publish_to_nexus.yml
index 6d72cd1..7f65d6d 100644
--- a/.github/workflows/publish_to_nexus.yml
+++ b/.github/workflows/publish_to_nexus.yml
@@ -5,9 +5,6 @@ on:
push:
branches:
- main
- - dev*
- - feature/*
- - fix/*
jobs:
publish-central:
@@ -16,20 +13,20 @@ jobs:
name: Publish to Maven Central
steps:
- - uses: actions/checkout@v3
- - name: Set up JDK 18
- uses: actions/setup-java@v3
+ - uses: actions/checkout@v5
+ - name: Set up JDK 21
+ uses: actions/setup-java@v5
with:
distribution: temurin
- java-version: 18
+ java-version: 21
- name: Build with Gradle
run: ./gradlew --build-cache build
- name: Test with Gradle
run: ./gradlew test
- name: Publish to Maven Central
- run: ./gradlew publish -PforceSign=true
+ run: ./gradlew publishToMavenCentral --no-configuration-cache
env:
- ORG_GRADLE_PROJECT_sonatypeUsername: "${{ secrets.SONATYPE_USERNAME }}"
- ORG_GRADLE_PROJECT_sonatypePassword: "${{ secrets.SONATYPE_PASSWORD }}"
- ORG_GRADLE_PROJECT_rainbowdashlabsSigningKey: "${{ secrets.RAINBOWDASHLABS_SIGN_KEY }}"
- ORG_GRADLE_PROJECT_rainbowdashlabsSigningPassword: "${{ secrets.RAINBOWDASHLABS_GPG_PASSWORD }}"
+ ORG_GRADLE_PROJECT_mavenCentralUsername: "${{ secrets.SONATYPE_USERNAME }}"
+ ORG_GRADLE_PROJECT_mavenCentralPassword: "${{ secrets.SONATYPE_PASSWORD }}"
+ ORG_GRADLE_PROJECT_signingInMemoryKey: "${{ secrets.RAINBOWDASHLABS_SIGN_KEY }}"
+ ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: "${{ secrets.RAINBOWDASHLABS_GPG_PASSWORD }}"
diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml
index 18481aa..0295b97 100644
--- a/.github/workflows/verify.yml
+++ b/.github/workflows/verify.yml
@@ -7,12 +7,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - name: Set up JDK 18
- uses: actions/setup-java@v3
+ - uses: actions/checkout@v5
+ - name: Set up JDK 21
+ uses: actions/setup-java@v5
with:
distribution: temurin
- java-version: 18
+ java-version: 21
+ architecture: x64
- name: Build with Gradle
run: ./gradlew --build-cache build
- name: Test with Gradle
diff --git a/1.16-testing/build.gradle.kts b/1.16-testing/build.gradle.kts
index eafe45d..ffe4af6 100644
--- a/1.16-testing/build.gradle.kts
+++ b/1.16-testing/build.gradle.kts
@@ -1,14 +1,10 @@
-repositories {
- maven("https://eldonexus.de/repository/codemc-nms/")
-}
+
dependencies {
testImplementation(project(":core"))
- implementation("com.destroystokyo.paper:paper-api:1.16.5-R0.1-20211218.081530-231")
- testImplementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml")
- testImplementation("com.fasterxml.jackson.dataformat:jackson-dataformat-toml")
- testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.3")
- testImplementation("org.assertj:assertj-core:3.24.2")
+ implementation("com.destroystokyo.paper:paper-api:1.16.5-R0.1-SNAPSHOT")
+ testImplementation(libs.bundles.jackson)
+ testImplementation(testlibs.bundles.unittests)
implementation(project(":testing"))
- testImplementation("com.github.seeseemelk", "MockBukkit-v1.19", "2.29.0")
+ testImplementation("com.github.seeseemelk", "MockBukkit-v1.19", "3.1.0")
}
diff --git a/build.gradle.kts b/build.gradle.kts
index 4efb9e5..eb35673 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,23 +1,21 @@
import com.diffplug.gradle.spotless.SpotlessPlugin
+import com.vanniktech.maven.publish.JavaLibrary
+import com.vanniktech.maven.publish.JavadocJar
import de.chojo.PublishData
-import net.kyori.indra.IndraExtension
-import net.kyori.indra.IndraPlugin
-import net.kyori.indra.IndraPublishingPlugin
plugins {
+ id("io.freefair.aggregate-javadoc") version ("8.14.2")
java
`maven-publish`
`java-library`
alias(libs.plugins.spotless)
alias(libs.plugins.publishdata)
- alias(libs.plugins.indra.core)
- alias(libs.plugins.indra.publishing)
- alias(libs.plugins.indra.sonatype)
jacoco
+ id("com.vanniktech.maven.publish") version "0.34.0"
}
publishData {
useEldoNexusRepos(false)
- publishingVersion = "1.2.0"
+ publishingVersion = "1.3.0"
}
version = publishData.getVersion()
@@ -47,9 +45,9 @@ allprojects {
}
dependencies {
- api("org.jetbrains", "annotations", "24.0.1")
+ api("org.jetbrains", "annotations", "26.0.2-1")
- api(platform("com.fasterxml.jackson:jackson-bom:2.15.2"))
+ api(platform("com.fasterxml.jackson:jackson-bom:2.20.0"))
api("com.fasterxml.jackson.core", "jackson-core")
api("com.fasterxml.jackson.core:jackson-databind")
@@ -59,10 +57,16 @@ allprojects {
testImplementation("com.fasterxml.jackson.dataformat:jackson-dataformat-toml")
// junit and stuff
- testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.3")
- testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.9.3")
- testImplementation("org.mockito:mockito-core:5.3.1")
- testImplementation("org.assertj:assertj-core:3.24.2")
+ testImplementation("org.junit.jupiter:junit-jupiter-api:6.0.0")
+ testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:6.0.0")
+ testImplementation("org.mockito:mockito-core:5.20.0")
+ testImplementation("org.assertj:assertj-core:3.27.6")
+ }
+
+ java {
+ toolchain {
+ languageVersion.set(JavaLanguageVersion.of(21))
+ }
}
spotless {
@@ -73,7 +77,7 @@ allprojects {
}
jacoco {
- toolVersion = "0.8.10"
+ toolVersion = "0.8.13"
}
tasks {
@@ -129,39 +133,6 @@ allprojects {
}
}
-fun configureIndra(extension: IndraExtension) {
- extension.javaVersions {
- target(17)
- testWith(17)
- }
-
- extension.github("eldoriarpg", "jackson-bukkit") {
- ci(true)
- }
-
- extension.mitLicense()
-
- extension.signWithKeyFromPrefixedProperties("rainbowdashlabs")
-
- extension.configurePublications {
- pom {
- developers {
- developer {
- id.set("rainbowdashlabs")
- name.set("Florian Fülling")
- email.set("mail@chojo.dev")
- url.set("https://github.com/rainbowdashlabs")
- }
- developer {
- id.set("yannicklamprecht")
- name.set("Yannick Lamprecht")
- url.set("https://github.com/yannicklamprecht")
- }
- }
- }
- }
-
-}
subprojects {
apply {
@@ -174,45 +145,125 @@ subprojects {
if (project.name in publicProjects) {
apply {
plugin()
- plugin()
- plugin()
plugin()
}
- indra {
- configureIndra(this)
+ }
+ afterEvaluate {
+ apply {
+ plugin()
}
+
+ mavenPublishing {
+ publishToMavenCentral()
+ signAllPublications()
+
+ coordinates(
+ groupId = "de.eldoria.jacksonbukkit",
+ artifactId = project.name,
+ version = publishData.getVersion()
+ )
+
+ pom {
+ name.set("jackson-bukkit")
+ description.set(project.description)
+ inceptionYear.set("2025")
+ url.set("https://github.com/eldoriarpg/jackson-bukkit")
+ licenses {
+ license {
+ name.set("LGPL-3.0")
+ url.set("https://opensource.org/license/lgpl-3-0")
+ }
+ }
+
+ developers {
+ developer {
+ id.set("rainbowdashlabs")
+ name.set("Nora Fülling")
+ email.set("mail@chojo.dev")
+ url.set("https://github.com/rainbowdashlabs")
+ }
+ developer {
+ id.set("yannicklamprecht")
+ name.set("Yannick Lamprecht")
+ url.set("https://github.com/yannicklamprecht")
+ }
+ }
+
+ scm {
+ url.set("https://github.com/eldoriarpg/jackson-bukkit")
+ connection.set("scm:git:git://github.com/eldoriarpg/jackson-bukkit.git")
+ developerConnection.set("scm:git:ssh://github.com/eldoriarpg/jackson-bukkit.git")
+ }
+ }
+
+ configure(
+ JavaLibrary(
+ javadocJar = JavadocJar.Javadoc(),
+ sourcesJar = true
+ )
+ )
+ }
+
}
}
-indra {
- configureIndra(this)
-}
+mavenPublishing {
+ publishToMavenCentral()
+ signAllPublications()
+
-indraSonatype {
- useAlternateSonatypeOSSHost("s01")
+ coordinates(groupId = "de.eldoria.jacksonbukkit", artifactId = project.name, version = publishData.getVersion())
+
+ pom {
+ name.set("jackson-bukkit")
+ description.set(project.description)
+ inceptionYear.set("2025")
+ url.set("https://github.com/eldoriarpg/jackson-bukkit")
+ licenses {
+ license {
+ name.set("LGPL-3.0")
+ url.set("https://opensource.org/license/lgpl-3-0")
+ }
+ }
+
+ developers {
+ developer {
+ id.set("rainbowdashlabs")
+ name.set("Nora Fülling")
+ email.set("mail@chojo.dev")
+ url.set("https://github.com/rainbowdashlabs")
+ }
+ developer {
+ id.set("yannicklamprecht")
+ name.set("Yannick Lamprecht")
+ url.set("https://github.com/yannicklamprecht")
+ }
+ }
+
+ scm {
+ url.set("https://github.com/eldoriarpg/jackson-bukkit")
+ connection.set("scm:git:git://github.com/eldoriarpg/jackson-bukkit.git")
+ developerConnection.set("scm:git:ssh://github.com/eldoriarpg/jackson-bukkit.git")
+ }
+ }
+
+ configure(
+ JavaLibrary(
+ javadocJar = JavadocJar.Javadoc(),
+ sourcesJar = true
+ )
+ )
}
fun applyJavaDocOptions(options: MinimalJavadocOptions) {
val javaDocOptions = options as StandardJavadocDocletOptions
javaDocOptions.links(
- "https://javadoc.io/doc/com.google.code.findbugs/jsr305/latest/",
- "https://javadoc.io/doc/org.jetbrains/annotations/latest/",
- "https://docs.oracle.com/en/java/javase/${java.toolchain.languageVersion.get().asInt()}/docs/api/",
- "https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-core/latest/",
- "https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-annotations/latest",
- "https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind/latest",
- "https://jd.papermc.io/paper/1.19/"
+ "https://javadoc.io/doc/org.jetbrains/annotations/latest/",
+ "https://docs.oracle.com/en/java/javase/${java.toolchain.languageVersion.get().asInt()}/docs/api/"
)
}
-tasks {
- register("allJavadocs") {
- applyJavaDocOptions(options)
-
- destinationDir = file("${buildDir}/docs/javadoc")
- val projects = project.rootProject.allprojects.filter { p -> publicProjects.contains(p.name) }
- setSource(projects.map { p -> p.sourceSets.main.get().allJava })
- classpath = files(projects.map { p -> p.sourceSets.main.get().compileClasspath })
- }
+tasks.javadoc.configure {
+ applyJavaDocOptions(options)
}
diff --git a/bukkit/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java b/bukkit/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java
index 68973ac..3388f91 100644
--- a/bukkit/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java
+++ b/bukkit/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java
@@ -13,6 +13,8 @@
import de.eldoria.jacksonbukkit.deserializer.RGBColorDeserializer;
import de.eldoria.jacksonbukkit.serializer.HexRGBColorSerializer;
import de.eldoria.jacksonbukkit.serializer.LegacyItemStackSerializer;
+import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer;
+import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer.Format;
import de.eldoria.jacksonbukkit.serializer.RGBColorSerializer;
import org.bukkit.Color;
import org.bukkit.FireworkEffect;
@@ -59,8 +61,8 @@ public class JacksonBukkit extends JacksonBukkitModule {
* @param hexColors true to serialize colors as hex by default
*/
@ApiStatus.Internal
- public JacksonBukkit(boolean hexColors) {
- super(hexColors);
+ public JacksonBukkit(boolean hexColors, Format namespacedKeyformat) {
+ super(hexColors, namespacedKeyformat);
}
@Override
@@ -73,7 +75,7 @@ public String getModuleName() {
*/
@ApiStatus.Internal
public JacksonBukkit() {
- this(false);
+ this(false, Format.FULL);
}
@Override
diff --git a/bukkit/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonBukkitBuilder.java b/bukkit/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonBukkitBuilder.java
index 9b1a478..c8448e1 100644
--- a/bukkit/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonBukkitBuilder.java
+++ b/bukkit/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonBukkitBuilder.java
@@ -13,6 +13,6 @@
public class JacksonBukkitBuilder extends ModuleBuilder {
@Override
public JacksonBukkit build() {
- return new JacksonBukkit(hexColors);
+ return new JacksonBukkit(hexColors, namespacedKeyFormat);
}
}
diff --git a/core/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkitModule.java b/core/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkitModule.java
index 031287e..ee8e931 100644
--- a/core/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkitModule.java
+++ b/core/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkitModule.java
@@ -71,14 +71,16 @@ public abstract class JacksonBukkitModule extends Module {
* True when colors should be interpreted as hex strings.
*/
protected final boolean hexColors;
+ protected final NamespacedKeySerializer.Format namespacedKeyFormat;
/**
* Creates a new jackson bukkit module
*
* @param hexColors true to use hex colors
*/
- public JacksonBukkitModule(boolean hexColors) {
+ public JacksonBukkitModule(boolean hexColors, NamespacedKeySerializer.Format namespacedKeyFormat) {
this.hexColors = hexColors;
+ this.namespacedKeyFormat = namespacedKeyFormat;
}
@Override
@@ -109,7 +111,7 @@ public void setupModule(SetupContext context) {
protected final void addSerializer(SimpleSerializers serializers) {
serializers.addSerializer(Vector.class, new VectorSerializer());
serializers.addSerializer(BlockVector.class, new BlockVectorSerializer());
- serializers.addSerializer(NamespacedKey.class, new NamespacedKeySerializer());
+ serializers.addSerializer(NamespacedKey.class, new NamespacedKeySerializer(namespacedKeyFormat));
serializers.addSerializer(PotionEffect.class, new PotionEffectSerializer());
serializers.addSerializer(PotionEffectType.class, new PotionEffectTypeSerializer());
serializers.addSerializer(FireworkEffect.class, new FireworkEffectSerializer());
diff --git a/core/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java b/core/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java
index f55d083..346803a 100644
--- a/core/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java
+++ b/core/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java
@@ -6,6 +6,7 @@
package de.eldoria.jacksonbukkit.builder;
import de.eldoria.jacksonbukkit.JacksonBukkitModule;
+import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer;
/**
* Base class for module builder.
@@ -18,6 +19,7 @@ public abstract class ModuleBuilder {
* Whether hex colors should be serialized as hex or not.
*/
protected boolean hexColors = false;
+ protected NamespacedKeySerializer.Format namespacedKeyFormat = NamespacedKeySerializer.Format.OBJECT;
/**
* Serialize {@link org.bukkit.Color} as hex string.
@@ -40,6 +42,16 @@ public T colorAsHex(boolean hexColors) {
return (T) this;
}
+ /**
+ * Define the format used for serializing namespaced keys. Every format can be deserialized, independent of this setting.
+ *
+ * @return builder instance
+ */
+ public T withNamespacedKeyFormat(NamespacedKeySerializer.Format format) {
+ this.namespacedKeyFormat = format;
+ return (T) this;
+ }
+
/**
* Build the module
*
diff --git a/core/src/main/java/de/eldoria/jacksonbukkit/deserializer/NamespacedKeyDeserializer.java b/core/src/main/java/de/eldoria/jacksonbukkit/deserializer/NamespacedKeyDeserializer.java
index 0946170..dfbdb58 100644
--- a/core/src/main/java/de/eldoria/jacksonbukkit/deserializer/NamespacedKeyDeserializer.java
+++ b/core/src/main/java/de/eldoria/jacksonbukkit/deserializer/NamespacedKeyDeserializer.java
@@ -8,6 +8,7 @@
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.JsonNode;
import de.eldoria.jacksonbukkit.entities.NamespacedKeyWrapper;
import org.bukkit.NamespacedKey;
@@ -19,6 +20,18 @@
public class NamespacedKeyDeserializer extends JsonDeserializer {
@Override
public NamespacedKey deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
- return ctxt.readValue(p, NamespacedKeyWrapper.class).toBukkitNamespacedKey();
+ JsonNode jsonNode = ctxt.readTree(p);
+ if (jsonNode.isObject()) {
+ return ctxt.readTreeAsValue(jsonNode, NamespacedKeyWrapper.class).toBukkitNamespacedKey();
+ }
+ if (jsonNode.isTextual()) {
+ String text = jsonNode.asText();
+ if (text.contains(":")) {
+ return NamespacedKey.fromString(text);
+ } else {
+ return NamespacedKey.minecraft(text);
+ }
+ }
+ throw new IllegalArgumentException("Cannot deserialize " + jsonNode.getNodeType().name());
}
}
diff --git a/core/src/main/java/de/eldoria/jacksonbukkit/serializer/NamespacedKeySerializer.java b/core/src/main/java/de/eldoria/jacksonbukkit/serializer/NamespacedKeySerializer.java
index ab87299..d3e1e3b 100644
--- a/core/src/main/java/de/eldoria/jacksonbukkit/serializer/NamespacedKeySerializer.java
+++ b/core/src/main/java/de/eldoria/jacksonbukkit/serializer/NamespacedKeySerializer.java
@@ -17,8 +17,40 @@
* Class for serialization of {@link NamespacedKey}.
*/
public class NamespacedKeySerializer extends JsonSerializer {
+
+ private final Format format;
+
+ public NamespacedKeySerializer(Format format) {
+ this.format = format;
+ }
+
@Override
public void serialize(NamespacedKey value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- gen.writeObject(NamespacedKeyWrapper.of(value));
+ switch (format) {
+ case OBJECT -> gen.writeObject(NamespacedKeyWrapper.of(value));
+ case FULL -> gen.writeString(value.toString());
+ case SHORT -> {
+ if (value.getNamespace().equals("minecraft")) {
+ gen.writeString(value.getKey());
+ } else {
+ gen.writeString(value.toString());
+ }
+ }
+ }
+ }
+
+ public enum Format {
+ /*
+ Deserialize using a wrapper object {"namespace": "minecraft", "key": "stone"}.
+ */
+ OBJECT,
+ /*
+ Deserialize using the full key. E.g. (minecraft:stone)
+ */
+ FULL,
+ /*
+ Deserialize using the key name. E.g., stone if the namespace is minecraft. Otherwise, the full key.
+ */
+ SHORT
}
}
diff --git a/core/src/test/java/de/eldoria/jacksonbukkit/deserializer/FireworkEffectDeserializerTest.java b/core/src/test/java/de/eldoria/jacksonbukkit/deserializer/FireworkEffectDeserializerTest.java
index 3c0959a..eac0103 100644
--- a/core/src/test/java/de/eldoria/jacksonbukkit/deserializer/FireworkEffectDeserializerTest.java
+++ b/core/src/test/java/de/eldoria/jacksonbukkit/deserializer/FireworkEffectDeserializerTest.java
@@ -9,6 +9,7 @@
import com.fasterxml.jackson.databind.Module;
import de.eldoria.jacksonbukkit.JacksonBukkit;
import de.eldoria.jacksonbukkit.CoreSerializationTest;
+import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer;
import de.eldoria.jacksonbukkit.templates.FireworkEffectTemplate;
import org.bukkit.FireworkEffect;
import org.junit.jupiter.api.Assertions;
@@ -20,7 +21,7 @@
class FireworkEffectDeserializerTest implements CoreSerializationTest {
@Override
public Module buildModule() {
- return new JacksonBukkit(false);
+ return new JacksonBukkit(false, NamespacedKeySerializer.Format.FULL);
}
@Test
diff --git a/core/src/test/java/de/eldoria/jacksonbukkit/deserializer/HexRGBColorDeserializerTest.java b/core/src/test/java/de/eldoria/jacksonbukkit/deserializer/HexRGBColorDeserializerTest.java
index ed021b4..f952f38 100644
--- a/core/src/test/java/de/eldoria/jacksonbukkit/deserializer/HexRGBColorDeserializerTest.java
+++ b/core/src/test/java/de/eldoria/jacksonbukkit/deserializer/HexRGBColorDeserializerTest.java
@@ -9,6 +9,7 @@
import com.fasterxml.jackson.databind.Module;
import de.eldoria.jacksonbukkit.JacksonBukkit;
import de.eldoria.jacksonbukkit.CoreSerializationTest;
+import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer;
import de.eldoria.jacksonbukkit.templates.RGBColorTemplate;
import org.bukkit.Color;
import org.junit.jupiter.api.Disabled;
@@ -19,7 +20,7 @@
class HexRGBColorDeserializerTest implements CoreSerializationTest {
@Override
public Module buildModule() {
- return new JacksonBukkit(true);
+ return new JacksonBukkit(true, NamespacedKeySerializer.Format.FULL);
}
@Test
diff --git a/core/src/test/java/de/eldoria/jacksonbukkit/deserializer/NamespacedKeyDeserializerTest.java b/core/src/test/java/de/eldoria/jacksonbukkit/deserializer/NamespacedKeyDeserializerTest.java
index 212d73f..0a2e182 100644
--- a/core/src/test/java/de/eldoria/jacksonbukkit/deserializer/NamespacedKeyDeserializerTest.java
+++ b/core/src/test/java/de/eldoria/jacksonbukkit/deserializer/NamespacedKeyDeserializerTest.java
@@ -21,16 +21,22 @@ class NamespacedKeyDeserializerTest implements CoreSerializationTest {
void deserializeToJson() throws JsonProcessingException {
assertEquals(NamespacedKeyTemplate.SINGLE, fromJson("namespaced_key", NamespacedKey.class));
assertEquals(NamespacedKeyTemplate.LIST, fromJsonList("namespaced_key_list", NamespacedKey.class));
+ assertEquals(NamespacedKeyTemplate.SINGLE, json().readValue("\"key:name\"", NamespacedKey.class));
+ assertEquals(NamespacedKeyTemplate.SINGLE_MINECRAFT, json().readValue("\"name\"", NamespacedKey.class));
+ assertEquals(NamespacedKeyTemplate.SINGLE_MINECRAFT, json().readValue("\"minecraft:name\"", NamespacedKey.class));
}
@Test
- void deserializeToYaml() throws JsonProcessingException {
+ void deserializeObjectToYaml() throws JsonProcessingException {
assertEquals(NamespacedKeyTemplate.SINGLE, fromYaml("namespaced_key", NamespacedKey.class));
assertEquals(NamespacedKeyTemplate.LIST, fromYamlList("namespaced_key_list", NamespacedKey.class));
+ assertEquals(NamespacedKeyTemplate.SINGLE_MINECRAFT, yaml().readValue("--- \"minecraft:name\"", NamespacedKey.class));
+ assertEquals(NamespacedKeyTemplate.SINGLE_MINECRAFT, yaml().readValue("--- \"name\"", NamespacedKey.class));
+ assertEquals(NamespacedKeyTemplate.SINGLE, yaml().readValue("--- \"key:name\"", NamespacedKey.class));
}
@Test
- void deserializeToToml() throws JsonProcessingException {
+ void deserializeObjectToToml() throws JsonProcessingException {
assertEquals(NamespacedKeyTemplate.SINGLE, fromToml("namespaced_key", NamespacedKey.class));
}
}
diff --git a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/EnchantmentSerializerTest.java b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/EnchantmentSerializerTest.java
index 3abf4fc..86c337a 100644
--- a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/EnchantmentSerializerTest.java
+++ b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/EnchantmentSerializerTest.java
@@ -6,17 +6,20 @@
package de.eldoria.jacksonbukkit.serializer;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.Module;
import de.eldoria.jacksonbukkit.CoreSerializationTest;
+import de.eldoria.jacksonbukkit.JacksonBukkit;
import de.eldoria.jacksonbukkit.templates.EnchantmentTemplate;
-import de.eldoria.jacksonbukkit.templates.FireworkEffectTemplate;
-import org.bukkit.enchantments.Enchantment;
import org.junit.jupiter.api.Test;
-import java.util.List;
-
import static org.junit.jupiter.api.Assertions.assertEquals;
class EnchantmentSerializerTest implements CoreSerializationTest {
+ @Override
+ public Module buildModule() {
+ return new JacksonBukkit(false, NamespacedKeySerializer.Format.OBJECT);
+ }
+
@Test
void serializeToJson() throws JsonProcessingException {
assertEquals(json("enchantment"), toJson(EnchantmentTemplate.SINGLE));
diff --git a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/FireworkEffectSerializerTest.java b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/FireworkEffectSerializerTest.java
index 69cf536..759fa2c 100644
--- a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/FireworkEffectSerializerTest.java
+++ b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/FireworkEffectSerializerTest.java
@@ -18,7 +18,7 @@
class FireworkEffectSerializerTest implements CoreSerializationTest {
@Override
public Module buildModule() {
- return new JacksonBukkit(false);
+ return new JacksonBukkit(false, NamespacedKeySerializer.Format.FULL);
}
@Test
diff --git a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/HexRGBColorSerializerTest.java b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/HexRGBColorSerializerTest.java
index e0b17e8..51f5801 100644
--- a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/HexRGBColorSerializerTest.java
+++ b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/HexRGBColorSerializerTest.java
@@ -18,7 +18,7 @@
class HexRGBColorSerializerTest implements CoreSerializationTest {
@Override
public Module buildModule() {
- return new JacksonBukkit(true);
+ return new JacksonBukkit(true, NamespacedKeySerializer.Format.FULL);
}
@Test
diff --git a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/NamespacedKeySerializerTest.java b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/NamespacedKeySerializerTest.java
index fa8258c..df88afb 100644
--- a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/NamespacedKeySerializerTest.java
+++ b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/NamespacedKeySerializerTest.java
@@ -6,30 +6,78 @@
package de.eldoria.jacksonbukkit.serializer;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.Module;
import de.eldoria.jacksonbukkit.CoreSerializationTest;
+import de.eldoria.jacksonbukkit.JacksonBukkit;
import de.eldoria.jacksonbukkit.templates.NamespacedKeyTemplate;
-import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
class NamespacedKeySerializerTest implements CoreSerializationTest {
+ NamespacedKeySerializer.Format format = NamespacedKeySerializer.Format.OBJECT;
+ @Override
+ public Module buildModule() {
+ return new JacksonBukkit(false, format);
+ }
@Test
- void serializeToJson() throws JsonProcessingException {
+ void serializeToJsonObject() throws JsonProcessingException {
+ format = NamespacedKeySerializer.Format.OBJECT;
assertEquals(json("namespaced_key"), toJson(NamespacedKeyTemplate.SINGLE));
assertEquals(json("namespaced_key_list"), toJson(NamespacedKeyTemplate.LIST));
}
@Test
- void serializeToYaml() throws JsonProcessingException {
+ void serializeToYamlObject() throws JsonProcessingException {
+ format = NamespacedKeySerializer.Format.OBJECT;
assertEquals(yaml("namespaced_key"), toYaml(NamespacedKeyTemplate.SINGLE));
assertEquals(yaml("namespaced_key_list"), toYaml(NamespacedKeyTemplate.LIST));
}
@Test
- void serializeToToml() throws JsonProcessingException {
+ void serializeToTomlObject() throws JsonProcessingException {
+ format = NamespacedKeySerializer.Format.OBJECT;
assertEquals(toml("namespaced_key"), toToml(NamespacedKeyTemplate.SINGLE));
}
+ @Test
+ void serializeToJsonShort() throws JsonProcessingException {
+ format = NamespacedKeySerializer.Format.SHORT;
+ assertEquals("\"key:name\"", toJson(NamespacedKeyTemplate.SINGLE).strip());
+ assertEquals("\"name\"", toJson(NamespacedKeyTemplate.SINGLE_MINECRAFT).strip());
+ }
+
+ @Test
+ void serializeToYamlShort() throws JsonProcessingException {
+ format = NamespacedKeySerializer.Format.SHORT;
+ assertEquals("--- \"key:name\"", toYaml(NamespacedKeyTemplate.SINGLE).strip());
+ assertEquals("--- \"name\"", toYaml(NamespacedKeyTemplate.SINGLE_MINECRAFT).strip());
+ }
+
+ @Test
+ void serializeToTomlShort() throws JsonProcessingException {
+ format = NamespacedKeySerializer.Format.SHORT;
+ assertEquals("= 'key:name'", toToml(NamespacedKeyTemplate.SINGLE).strip());
+ assertEquals("= 'name'", toToml(NamespacedKeyTemplate.SINGLE_MINECRAFT).strip());
+ }
+ @Test
+ void serializeToJsonFull() throws JsonProcessingException {
+ format = NamespacedKeySerializer.Format.FULL;
+ assertEquals("\"key:name\"", toJson(NamespacedKeyTemplate.SINGLE).strip());
+ assertEquals("\"minecraft:name\"", toJson(NamespacedKeyTemplate.SINGLE_MINECRAFT).strip());
+ }
+
+ @Test
+ void serializeToYamlFull() throws JsonProcessingException {
+ format = NamespacedKeySerializer.Format.FULL;
+ assertEquals("--- \"key:name\"", toYaml(NamespacedKeyTemplate.SINGLE).strip());
+ assertEquals("--- \"minecraft:name\"", toYaml(NamespacedKeyTemplate.SINGLE_MINECRAFT).strip());
+ }
+
+ @Test
+ void serializeToTomlFull() throws JsonProcessingException {
+ format = NamespacedKeySerializer.Format.FULL;
+ assertEquals("= 'key:name'", toToml(NamespacedKeyTemplate.SINGLE).strip());
+ assertEquals("= 'minecraft:name'", toToml(NamespacedKeyTemplate.SINGLE_MINECRAFT).strip());
+ }
}
diff --git a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/PotionEffectSerializerTest.java b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/PotionEffectSerializerTest.java
index 3f4a30e..d1eb0fb 100644
--- a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/PotionEffectSerializerTest.java
+++ b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/PotionEffectSerializerTest.java
@@ -7,7 +7,9 @@
import be.seeseemelk.mockbukkit.MockBukkit;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.Module;
import de.eldoria.jacksonbukkit.CoreSerializationTest;
+import de.eldoria.jacksonbukkit.JacksonBukkit;
import de.eldoria.jacksonbukkit.templates.PotionEffectTemplate;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
@@ -19,6 +21,11 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
class PotionEffectSerializerTest implements CoreSerializationTest {
+ @Override
+ public Module buildModule() {
+ return new JacksonBukkit(false, NamespacedKeySerializer.Format.OBJECT);
+ }
+
@BeforeAll
static void setup() {
MockBukkit.mock();
diff --git a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/ShapedRecipeSerializerTest.java b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/ShapedRecipeSerializerTest.java
index c47c45b..0a71ff9 100644
--- a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/ShapedRecipeSerializerTest.java
+++ b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/ShapedRecipeSerializerTest.java
@@ -7,16 +7,22 @@
import be.seeseemelk.mockbukkit.MockBukkit;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.Module;
import de.eldoria.jacksonbukkit.CoreSerializationTest;
-import de.eldoria.jacksonbukkit.templates.RGBColorTemplate;
+import de.eldoria.jacksonbukkit.JacksonBukkit;
import de.eldoria.jacksonbukkit.templates.ShapedRecipeTemplate;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
class ShapedRecipeSerializerTest implements CoreSerializationTest {
+ @Override
+ public Module buildModule() {
+ return new JacksonBukkit(false, NamespacedKeySerializer.Format.OBJECT);
+ }
+
@BeforeAll
static void beforeAll() {
MockBukkit.mock();
diff --git a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/ShapelessRecipeSerializerTest.java b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/ShapelessRecipeSerializerTest.java
index dc93c38..8cbd982 100644
--- a/core/src/test/java/de/eldoria/jacksonbukkit/serializer/ShapelessRecipeSerializerTest.java
+++ b/core/src/test/java/de/eldoria/jacksonbukkit/serializer/ShapelessRecipeSerializerTest.java
@@ -7,7 +7,9 @@
import be.seeseemelk.mockbukkit.MockBukkit;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.Module;
import de.eldoria.jacksonbukkit.CoreSerializationTest;
+import de.eldoria.jacksonbukkit.JacksonBukkit;
import de.eldoria.jacksonbukkit.templates.ShapelessRecipeTemplate;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
@@ -16,6 +18,11 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
class ShapelessRecipeSerializerTest implements CoreSerializationTest {
+ @Override
+ public Module buildModule() {
+ return new JacksonBukkit(false, NamespacedKeySerializer.Format.OBJECT);
+ }
+
@BeforeAll
static void beforeAll() {
MockBukkit.mock();
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index c1962a7..8bdaf60 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 37aef8d..2e11132 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
networkTimeout=10000
+validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index aeb74cb..adff685 100755
--- a/gradlew
+++ b/gradlew
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# Copyright © 2015-2021 the original authors.
+# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+# SPDX-License-Identifier: Apache-2.0
+#
##############################################################################
#
@@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -83,7 +85,8 @@ done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -111,7 +114,6 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
@@ -130,10 +132,13 @@ location of your Java installation."
fi
else
JAVACMD=java
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
+ fi
fi
# Increase the maximum file descriptors if we can.
@@ -141,7 +146,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC3045
+ # shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
@@ -149,7 +154,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC3045
+ # shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@@ -166,7 +171,6 @@ fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
- CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
@@ -198,16 +202,15 @@ fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-# Collect all arguments for the java command;
-# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
-# shell script including quotes and variable substitutions, so put them in
-# double quotes to make sure that they get re-expanded; and
-# * put everything else in single quotes, so that it's not re-expanded.
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
- -classpath "$CLASSPATH" \
- org.gradle.wrapper.GradleWrapperMain \
+ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
diff --git a/gradlew.bat b/gradlew.bat
index 6689b85..e509b2d 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
+@rem SPDX-License-Identifier: Apache-2.0
+@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@@ -43,11 +45,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
goto fail
@@ -57,22 +59,21 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
diff --git a/paper/build.gradle.kts b/paper/build.gradle.kts
index 9b8c8ab..6843633 100644
--- a/paper/build.gradle.kts
+++ b/paper/build.gradle.kts
@@ -4,6 +4,6 @@ dependencies {
api(project(":core"))
compileOnly("io.papermc.paper", "paper-api", "1.20-R0.1-SNAPSHOT")
testImplementation("io.papermc.paper", "paper-api", "1.19.4-R0.1-SNAPSHOT")
- testImplementation("com.github.seeseemelk", "MockBukkit-v1.19", "2.29.0")
+ testImplementation("com.github.seeseemelk", "MockBukkit-v1.19", "3.1.0")
testImplementation(project(":testing"))
}
diff --git a/paper/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java b/paper/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java
index bccff88..5c08960 100644
--- a/paper/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java
+++ b/paper/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java
@@ -16,6 +16,8 @@
import de.eldoria.jacksonbukkit.deserializer.RGBAColorDeserializer;
import de.eldoria.jacksonbukkit.serializer.HexPaperColorSerializer;
import de.eldoria.jacksonbukkit.serializer.LegacyItemStackSerializer;
+import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer;
+import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer.Format;
import de.eldoria.jacksonbukkit.serializer.PaperColorSerializer;
import de.eldoria.jacksonbukkit.serializer.PaperItemStackSerializer;
import net.kyori.adventure.text.Component;
@@ -73,8 +75,9 @@ public class JacksonPaper extends JacksonBukkitModule {
public JacksonPaper(boolean hexColors,
boolean legacyItemStackSerialization,
@Nullable JsonDeserializer componentDeserializer,
- @Nullable JsonSerializer componentSerializer) {
- super(hexColors);
+ @Nullable JsonSerializer componentSerializer,
+ Format namespacedKeyformat) {
+ super(hexColors, namespacedKeyformat);
this.legacyItemStackSerialization = legacyItemStackSerialization;
this.componentDeserializer = componentDeserializer;
this.componentSerializer = componentSerializer;
@@ -85,7 +88,7 @@ public JacksonPaper(boolean hexColors,
*/
@ApiStatus.Internal
public JacksonPaper() {
- super(false);
+ super(false, Format.FULL);
legacyItemStackSerialization = false;
componentDeserializer = null;
componentSerializer = null;
diff --git a/paper/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonPaperBuilder.java b/paper/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonPaperBuilder.java
index dda19f1..dbe1f21 100644
--- a/paper/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonPaperBuilder.java
+++ b/paper/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonPaperBuilder.java
@@ -12,6 +12,8 @@
import de.eldoria.jacksonbukkit.deserializer.ComponentMiniMessageDeserializer;
import de.eldoria.jacksonbukkit.serializer.ComponentGsonSerializer;
import de.eldoria.jacksonbukkit.serializer.ComponentMiniMessageSerializer;
+import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer;
+import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer.Format;
import de.eldoria.jacksonbukkit.util.PaperFeatures;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
@@ -76,6 +78,6 @@ public JacksonPaperBuilder withMiniMessages() {
@Override
public JacksonPaper build() {
- return new JacksonPaper(hexColors, legacyItemStackSerialization, componentJsonDeserializer, componentJsonSerializer);
+ return new JacksonPaper(hexColors, legacyItemStackSerialization, componentJsonDeserializer, componentJsonSerializer, namespacedKeyFormat);
}
}
diff --git a/paper/src/test/java/de/eldoria/jacksonbukkit/deserializer/ComponentGsonDeserializerTest.java b/paper/src/test/java/de/eldoria/jacksonbukkit/deserializer/ComponentGsonDeserializerTest.java
index dd89f9f..7f700f1 100644
--- a/paper/src/test/java/de/eldoria/jacksonbukkit/deserializer/ComponentGsonDeserializerTest.java
+++ b/paper/src/test/java/de/eldoria/jacksonbukkit/deserializer/ComponentGsonDeserializerTest.java
@@ -10,6 +10,7 @@
import de.eldoria.jacksonbukkit.JacksonPaper;
import de.eldoria.jacksonbukkit.PaperSerializationTest;
import de.eldoria.jacksonbukkit.serializer.ComponentGsonSerializer;
+import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer;
import de.eldoria.jacksonbukkit.templates.ComponentTemplate;
import net.kyori.adventure.text.Component;
import org.junit.jupiter.api.Test;
@@ -23,7 +24,8 @@ public Module buildModule() {
return new JacksonPaper(false,
false,
new ComponentGsonDeserializer(),
- new ComponentGsonSerializer());
+ new ComponentGsonSerializer(),
+ NamespacedKeySerializer.Format.OBJECT);
}
@Test
diff --git a/paper/src/test/java/de/eldoria/jacksonbukkit/serializer/ComponentGsonSerializerTest.java b/paper/src/test/java/de/eldoria/jacksonbukkit/serializer/ComponentGsonSerializerTest.java
index 4ac15bf..34da600 100644
--- a/paper/src/test/java/de/eldoria/jacksonbukkit/serializer/ComponentGsonSerializerTest.java
+++ b/paper/src/test/java/de/eldoria/jacksonbukkit/serializer/ComponentGsonSerializerTest.java
@@ -22,7 +22,8 @@ public Module buildModule() {
return new JacksonPaper(false,
false,
new ComponentGsonDeserializer(),
- new ComponentGsonSerializer());
+ new ComponentGsonSerializer(),
+ NamespacedKeySerializer.Format.OBJECT);
}
@Test
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 3cdd587..0fd28da 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -16,7 +16,7 @@ pluginManagement {
}
plugins {
- id("org.gradle.toolchains.foojay-resolver-convention") version ("0.6.0")
+ id("org.gradle.toolchains.foojay-resolver-convention") version ("1.0.0")
}
@@ -24,15 +24,15 @@ dependencyResolutionManagement {
versionCatalogs {
create("libs") {
// plugins
- plugin("spotless", "com.diffplug.spotless").version("6.20.0")
+ plugin("spotless", "com.diffplug.spotless").version("8.0.0")
plugin("publishdata", "de.chojo.publishdata").version("1.2.5")
- version("indra", "3.1.2")
+ version("indra", "3.2.0")
plugin("indra-core", "net.kyori.indra").versionRef("indra")
plugin("indra-publishing", "net.kyori.indra.publishing").versionRef("indra")
plugin("indra-sonatype", "net.kyori.indra.publishing.sonatype").versionRef("indra")
- version("jackson", "2.14.2")
+ version("jackson", "2.20.0")
library("jackson-core", "com.fasterxml.jackson.core", "jackson-core").versionRef("jackson")
library("jackson-databind", "com.fasterxml.jackson.core", "jackson-databind").versionRef("jackson")
bundle("jackson", listOf("jackson-core", "jackson-databind"))
@@ -40,23 +40,24 @@ dependencyResolutionManagement {
}
create("testlibs") {
- version("jackson", "2.14.2")
+ version("jackson", "2.20.0")
// jackson testing
library("jackson-databind", "com.fasterxml.jackson.core", "jackson-databind").versionRef("jackson")
library("jackson-dataformat-yaml", "com.fasterxml.jackson.dataformat", "jackson-dataformat-yaml").versionRef("jackson")
library("jackson-dataformat-toml", "com.fasterxml.jackson.dataformat", "jackson-dataformat-toml").versionRef("jackson")
bundle("jackson", listOf("jackson-databind", "jackson-dataformat-yaml", "jackson-dataformat-toml"))
- version("junit", "5.9.3")
+ version("junit", "6.0.0")
library("junit-jupiter-core", "org.junit.jupiter", "junit-jupiter").versionRef("junit")
library("junit-jupiter-engine", "org.junit.jupiter", "junit-jupiter-engine").versionRef("junit")
+ library("junit-platform-launcher", "org.junit.platform", "junit-platform-launcher").version("6.0.0")
library("junit-jupiter-api", "org.junit.jupiter", "junit-jupiter-api").versionRef("junit")
library("junit-params", "org.junit.jupiter", "junit-jupiter-params").versionRef("junit")
- library("mockito", "org.junit.jupiter", "junit-jupiter-params").version("5.2.0")
- library("assertj-core", "org.junit.jupiter", "junit-jupiter-params").version("3.24.2")
+ library("mockito", "org.junit.jupiter", "junit-jupiter-params").version("6.0.0")
+ library("assertj-core", "org.assertj", "assertj-core").version("3.27.6")
- bundle("unittests", listOf("junit-jupiter-core", "junit-jupiter-engine", "junit-jupiter-api", "junit-params", "mockito", "assertj-core"))
+ bundle("unittests", listOf("junit-jupiter-core", "junit-jupiter-engine", "junit-jupiter-api","junit-platform-launcher", "junit-params", "mockito", "assertj-core"))
}
}
}
diff --git a/testing/build.gradle.kts b/testing/build.gradle.kts
index d7fc81a..116d13b 100644
--- a/testing/build.gradle.kts
+++ b/testing/build.gradle.kts
@@ -2,8 +2,9 @@ dependencies {
implementation("io.papermc.paper", "paper-api", "1.19.4-R0.1-SNAPSHOT")
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml")
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-toml")
- implementation("org.junit.jupiter:junit-jupiter-api:5.9.3")
- implementation("org.assertj:assertj-core:3.24.2")
+ implementation(libs.bundles.jackson)
+ implementation(testlibs.bundles.unittests)
+ testImplementation(testlibs.bundles.unittests)
}
java{
diff --git a/testing/src/main/java/de/eldoria/jacksonbukkit/templates/NamespacedKeyTemplate.java b/testing/src/main/java/de/eldoria/jacksonbukkit/templates/NamespacedKeyTemplate.java
index 9a7e38c..8fa5b50 100644
--- a/testing/src/main/java/de/eldoria/jacksonbukkit/templates/NamespacedKeyTemplate.java
+++ b/testing/src/main/java/de/eldoria/jacksonbukkit/templates/NamespacedKeyTemplate.java
@@ -11,6 +11,8 @@
public class NamespacedKeyTemplate {
public static final NamespacedKey SINGLE = new NamespacedKey("key", "name");
+ public static final NamespacedKey SINGLE_MINECRAFT = new NamespacedKey("minecraft", "name");
public static final List LIST = List.of(SINGLE, SINGLE, SINGLE);
+ public static final List LIST_MINECRAFT = List.of(SINGLE_MINECRAFT, SINGLE_MINECRAFT, SINGLE_MINECRAFT);
}