From 32cdb1c4d038016d680b13d58cb3ed4d11ff2628 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20F=C3=BClling?=
<46890129+RainbowDashLabs@users.noreply.github.com>
Date: Fri, 17 Mar 2023 02:08:12 +0100
Subject: [PATCH 1/7] Change workflow versions
---
.github/workflows/javadocs.yml | 2 +-
.github/workflows/publish_to_nexus.yml | 2 +-
.github/workflows/verify.yml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/javadocs.yml b/.github/workflows/javadocs.yml
index c39ec93..b3c5aca 100644
--- a/.github/workflows/javadocs.yml
+++ b/.github/workflows/javadocs.yml
@@ -25,7 +25,7 @@ jobs:
echo "Creating .nojekyll to have Github pages deploy html as is:"
touch .nojekyll
- name: Deploy
- uses: JamesIves/github-pages-deploy-action@v4.4.0
+ uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages # The branch the action should deploy to.
folder: build/docs/javadoc # The folder the action should deploy.
diff --git a/.github/workflows/publish_to_nexus.yml b/.github/workflows/publish_to_nexus.yml
index 03a5a21..6bbe872 100644
--- a/.github/workflows/publish_to_nexus.yml
+++ b/.github/workflows/publish_to_nexus.yml
@@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3.0.2
+ - uses: actions/checkout@v3
- name: Set up JDK 18
uses: actions/setup-java@v3
with:
diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml
index 4b6bc63..18481aa 100644
--- a/.github/workflows/verify.yml
+++ b/.github/workflows/verify.yml
@@ -7,7 +7,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3.0.2
+ - uses: actions/checkout@v3
- name: Set up JDK 18
uses: actions/setup-java@v3
with:
From b8a52f12c61c20d72e333a646d4582dee82e4cbf Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 17 Mar 2023 02:53:30 +0100
Subject: [PATCH 2/7] Update plugin com.diffplug.spotless to v6.17.0 (#7)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
build.gradle.kts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build.gradle.kts b/build.gradle.kts
index 5a82bb9..e3321ca 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -4,7 +4,7 @@ plugins {
java
`maven-publish`
`java-library`
- id("com.diffplug.spotless") version "6.16.0"
+ id("com.diffplug.spotless") version "6.17.0"
id("de.chojo.publishdata") version "1.2.4"
id("io.papermc.paperweight.userdev") version "1.5.3"
}
From 858e06dd8367980bbec054443c72324253df2650 Mon Sep 17 00:00:00 2001
From: Lilly Tempest <46890129+rainbowdashlabs@users.noreply.github.com>
Date: Fri, 17 Mar 2023 14:18:10 +0100
Subject: [PATCH 3/7] Add serialization for ItemStack supporting spigot server
(#8)
* Add bukkit item stack serializer
* Disable tests
* Add license header
---
.../eldoria/jacksonbukkit/JacksonBukkit.java | 26 +++--
.../eldoria/jacksonbukkit/JacksonPaper.java | 94 +++++++++++++++++++
.../BukkitItemStackDeserializer.java | 28 ++++++
...r.java => PaperItemStackDeserializer.java} | 3 +-
.../serializer/BukkitItemStackSerializer.java | 21 +++++
...zer.java => PaperItemStackSerializer.java} | 2 +-
.../jacksonbukkit/SerializationTest.java | 41 +++++---
...a => BukkitItemStackDeserializerTest.java} | 19 ++--
.../PaperItemStackDeserializerTest.java | 56 +++++++++++
.../BukkitItemStackSerializerTest.java | 47 ++++++++++
...java => PaperItemStackSerializerTest.java} | 15 ++-
...item_stack.json => item_stack_bukkit.json} | 0
..._list.json => item_stack_bukkit_list.json} | 0
.../item_stack_paper.json} | 0
.../item_stack_paper_list.json} | 0
.../item_stack_bukkit.toml} | 0
src/test/resources/toml/item_stack_paper.toml | 0
.../resources/yaml/item_stack_bukkit.yaml | 0
.../yaml/item_stack_bukkit_list.yaml | 0
src/test/resources/yaml/item_stack_paper.yaml | 0
.../resources/yaml/item_stack_paper_list.yaml | 0
21 files changed, 319 insertions(+), 33 deletions(-)
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/deserializer/BukkitItemStackDeserializer.java
rename src/main/java/de/eldoria/jacksonbukkit/deserializer/{ItemStackDeserializer.java => PaperItemStackDeserializer.java} (84%)
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/serializer/BukkitItemStackSerializer.java
rename src/main/java/de/eldoria/jacksonbukkit/serializer/{ItemStackSerializer.java => PaperItemStackSerializer.java} (89%)
rename src/test/java/de/eldoria/jacksonbukkit/deserializer/{ItemStackDeserializerTest.java => BukkitItemStackDeserializerTest.java} (77%)
create mode 100644 src/test/java/de/eldoria/jacksonbukkit/deserializer/PaperItemStackDeserializerTest.java
create mode 100644 src/test/java/de/eldoria/jacksonbukkit/serializer/BukkitItemStackSerializerTest.java
rename src/test/java/de/eldoria/jacksonbukkit/serializer/{ItemStackSerializerTest.java => PaperItemStackSerializerTest.java} (78%)
rename src/test/resources/json/{item_stack.json => item_stack_bukkit.json} (100%)
rename src/test/resources/json/{item_stack_list.json => item_stack_bukkit_list.json} (100%)
rename src/test/resources/{toml/item_stack.toml => json/item_stack_paper.json} (100%)
rename src/test/resources/{yaml/item_stack.yaml => json/item_stack_paper_list.json} (100%)
rename src/test/resources/{yaml/item_stack_list.yaml => toml/item_stack_bukkit.toml} (100%)
create mode 100644 src/test/resources/toml/item_stack_paper.toml
create mode 100644 src/test/resources/yaml/item_stack_bukkit.yaml
create mode 100644 src/test/resources/yaml/item_stack_bukkit_list.yaml
create mode 100644 src/test/resources/yaml/item_stack_paper.yaml
create mode 100644 src/test/resources/yaml/item_stack_paper_list.yaml
diff --git a/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java b/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java
index 2bf3a43..68a729d 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java
@@ -12,12 +12,13 @@
import de.eldoria.jacksonbukkit.deserializer.AttributeModifierDeserializer;
import de.eldoria.jacksonbukkit.deserializer.BlockVectorDeserializer;
import de.eldoria.jacksonbukkit.deserializer.BoundingBoxDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.BukkitItemStackDeserializer;
import de.eldoria.jacksonbukkit.deserializer.ColorDeserializer;
import de.eldoria.jacksonbukkit.deserializer.FireworkEffectDeserializer;
import de.eldoria.jacksonbukkit.deserializer.InventoryDeserializer;
-import de.eldoria.jacksonbukkit.deserializer.ItemStackDeserializer;
import de.eldoria.jacksonbukkit.deserializer.LocationDeserializer;
import de.eldoria.jacksonbukkit.deserializer.NamespacedKeyDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.PaperItemStackDeserializer;
import de.eldoria.jacksonbukkit.deserializer.PatternDeserializer;
import de.eldoria.jacksonbukkit.deserializer.PlayerDeserializer;
import de.eldoria.jacksonbukkit.deserializer.PotionEffectDeserializer;
@@ -26,12 +27,13 @@
import de.eldoria.jacksonbukkit.serializer.AttributeModifierSerializer;
import de.eldoria.jacksonbukkit.serializer.BlockVectorSerializer;
import de.eldoria.jacksonbukkit.serializer.BoundingBoxSerializer;
+import de.eldoria.jacksonbukkit.serializer.BukkitItemStackSerializer;
import de.eldoria.jacksonbukkit.serializer.ColorSerializer;
import de.eldoria.jacksonbukkit.serializer.FireworkEffectSerializer;
import de.eldoria.jacksonbukkit.serializer.InventorySerializer;
-import de.eldoria.jacksonbukkit.serializer.ItemStackSerializer;
import de.eldoria.jacksonbukkit.serializer.LocationSerializer;
import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer;
+import de.eldoria.jacksonbukkit.serializer.PaperItemStackSerializer;
import de.eldoria.jacksonbukkit.serializer.PatternSerializer;
import de.eldoria.jacksonbukkit.serializer.PlayerSerializer;
import de.eldoria.jacksonbukkit.serializer.PotionEffectSerializer;
@@ -89,10 +91,20 @@ public Version version() {
@Override
public void setupModule(SetupContext context) {
SimpleSerializers serializers = new SimpleSerializers();
+ addSerializer(serializers);
+
+ SimpleDeserializers deserializers = new SimpleDeserializers();
+ addDeserializer(deserializers);
+
+ context.addSerializers(serializers);
+ context.addDeserializers(deserializers);
+ }
+
+ protected void addSerializer(SimpleSerializers serializers) {
serializers.addSerializer(Vector.class, new VectorSerializer());
serializers.addSerializer(BlockVector.class, new BlockVectorSerializer());
serializers.addSerializer(Color.class, new ColorSerializer());
- serializers.addSerializer(ItemStack.class, new ItemStackSerializer());
+ serializers.addSerializer(ItemStack.class, new BukkitItemStackSerializer());
serializers.addSerializer(NamespacedKey.class, new NamespacedKeySerializer());
serializers.addSerializer(PotionEffect.class, new PotionEffectSerializer());
serializers.addSerializer(FireworkEffect.class, new FireworkEffectSerializer());
@@ -102,12 +114,13 @@ public void setupModule(SetupContext context) {
serializers.addSerializer(Location.class, new LocationSerializer());
serializers.addSerializer(OfflinePlayer.class, new PlayerSerializer());
serializers.addSerializer(InventoryWrapper.class, new InventorySerializer());
+ }
- SimpleDeserializers deserializers = new SimpleDeserializers();
+ protected void addDeserializer(SimpleDeserializers deserializers) {
deserializers.addDeserializer(Vector.class, new VectorDeserializer());
deserializers.addDeserializer(BlockVector.class, new BlockVectorDeserializer());
deserializers.addDeserializer(Color.class, new ColorDeserializer());
- deserializers.addDeserializer(ItemStack.class, new ItemStackDeserializer());
+ deserializers.addDeserializer(ItemStack.class, new BukkitItemStackDeserializer());
deserializers.addDeserializer(NamespacedKey.class, new NamespacedKeyDeserializer());
deserializers.addDeserializer(PotionEffect.class, new PotionEffectDeserializer());
deserializers.addDeserializer(FireworkEffect.class, new FireworkEffectDeserializer());
@@ -117,8 +130,5 @@ public void setupModule(SetupContext context) {
deserializers.addDeserializer(Location.class, new LocationDeserializer());
deserializers.addDeserializer(OfflinePlayer.class, new PlayerDeserializer());
deserializers.addDeserializer(InventoryWrapper.class, new InventoryDeserializer());
-
- context.addSerializers(serializers);
- context.addDeserializers(deserializers);
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java b/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java
new file mode 100644
index 0000000..0b9b9d9
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java
@@ -0,0 +1,94 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) EldoriaRPG Team and Contributor
+ */
+package de.eldoria.jacksonbukkit;
+
+import com.fasterxml.jackson.core.Version;
+import com.fasterxml.jackson.databind.module.SimpleDeserializers;
+import com.fasterxml.jackson.databind.module.SimpleSerializers;
+import de.eldoria.jacksonbukkit.deserializer.AttributeModifierDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.BlockVectorDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.BoundingBoxDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.ColorDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.FireworkEffectDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.InventoryDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.LocationDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.NamespacedKeyDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.PaperItemStackDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.PatternDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.PlayerDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.PotionEffectDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.VectorDeserializer;
+import de.eldoria.jacksonbukkit.entities.InventoryWrapper;
+import de.eldoria.jacksonbukkit.serializer.AttributeModifierSerializer;
+import de.eldoria.jacksonbukkit.serializer.BlockVectorSerializer;
+import de.eldoria.jacksonbukkit.serializer.BoundingBoxSerializer;
+import de.eldoria.jacksonbukkit.serializer.ColorSerializer;
+import de.eldoria.jacksonbukkit.serializer.FireworkEffectSerializer;
+import de.eldoria.jacksonbukkit.serializer.InventorySerializer;
+import de.eldoria.jacksonbukkit.serializer.LocationSerializer;
+import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer;
+import de.eldoria.jacksonbukkit.serializer.PaperItemStackSerializer;
+import de.eldoria.jacksonbukkit.serializer.PatternSerializer;
+import de.eldoria.jacksonbukkit.serializer.PlayerSerializer;
+import de.eldoria.jacksonbukkit.serializer.PotionEffectSerializer;
+import de.eldoria.jacksonbukkit.serializer.VectorSerializer;
+import org.bukkit.Color;
+import org.bukkit.FireworkEffect;
+import org.bukkit.Location;
+import org.bukkit.NamespacedKey;
+import org.bukkit.OfflinePlayer;
+import org.bukkit.attribute.AttributeModifier;
+import org.bukkit.block.banner.Pattern;
+import org.bukkit.configuration.serialization.ConfigurationSerializable;
+import org.bukkit.inventory.Inventory;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.potion.PotionEffect;
+import org.bukkit.util.BlockVector;
+import org.bukkit.util.BoundingBox;
+import org.bukkit.util.Vector;
+
+/**
+ * Class adding support for classes implementing {@link ConfigurationSerializable}.
+ *
+ *
+ * - {@link Vector}
+ *
- {@link BlockVector}
+ *
- {@link Color}
+ *
- {@link ItemStack}
+ *
- {@link PotionEffect}
+ *
- {@link FireworkEffect}
+ *
- {@link Pattern}
+ *
- {@link BoundingBox}
+ *
- {@link AttributeModifier}
+ *
- {@link Location}
+ *
+ *
+ * It also provides some additional serialization for:
+ *
+ * - {@link NamespacedKey}
+ *
- {@link OfflinePlayer}
+ *
- {@link Inventory} via {@link InventoryWrapper}
+ *
+ *
+ */
+public class JacksonPaper extends JacksonBukkit {
+ @Override
+ public String getModuleName() {
+ return "JacksonPaper";
+ }
+
+ @Override
+ protected void addDeserializer(SimpleDeserializers deserializers) {
+ super.addDeserializer(deserializers);
+ deserializers.addDeserializer(ItemStack.class, new PaperItemStackDeserializer());
+ }
+
+ @Override
+ protected void addSerializer(SimpleSerializers serializers) {
+ super.addSerializer(serializers);
+ serializers.addSerializer(ItemStack.class, new PaperItemStackSerializer());
+ }
+}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/BukkitItemStackDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/BukkitItemStackDeserializer.java
new file mode 100644
index 0000000..89c9744
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/BukkitItemStackDeserializer.java
@@ -0,0 +1,28 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) EldoriaRPG Team and Contributor
+ */
+package de.eldoria.jacksonbukkit.deserializer;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.type.MapType;
+import org.bukkit.configuration.file.YamlConfiguration;
+import org.bukkit.configuration.serialization.ConfigurationSerializable;
+import org.bukkit.configuration.serialization.ConfigurationSerialization;
+import org.bukkit.inventory.ItemStack;
+
+import java.io.IOException;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.Map;
+
+public class BukkitItemStackDeserializer extends JsonDeserializer {
+ @Override
+ public ItemStack deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
+ MapType type = ctxt.getTypeFactory().constructMapType(HashMap.class, String.class, Object.class);
+ return ItemStack.deserialize(ctxt.readValue(p, type));
+ }
+}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/ItemStackDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/PaperItemStackDeserializer.java
similarity index 84%
rename from src/main/java/de/eldoria/jacksonbukkit/deserializer/ItemStackDeserializer.java
rename to src/main/java/de/eldoria/jacksonbukkit/deserializer/PaperItemStackDeserializer.java
index 183454b..b21f066 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/ItemStackDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/PaperItemStackDeserializer.java
@@ -5,7 +5,6 @@
*/
package de.eldoria.jacksonbukkit.deserializer;
-import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
@@ -14,7 +13,7 @@
import java.io.IOException;
import java.util.Base64;
-public class ItemStackDeserializer extends JsonDeserializer {
+public class PaperItemStackDeserializer extends JsonDeserializer {
@Override
public ItemStack deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
byte[] decode = Base64.getDecoder().decode(ctxt.readValue(p, String.class));
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/BukkitItemStackSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/BukkitItemStackSerializer.java
new file mode 100644
index 0000000..c046801
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/BukkitItemStackSerializer.java
@@ -0,0 +1,21 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) EldoriaRPG Team and Contributor
+ */
+package de.eldoria.jacksonbukkit.serializer;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import org.bukkit.inventory.ItemStack;
+
+import java.io.IOException;
+import java.util.Base64;
+
+public class BukkitItemStackSerializer extends JsonSerializer {
+ @Override
+ public void serialize(ItemStack value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+ gen.writeObject(value.serialize());
+ }
+}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/ItemStackSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/PaperItemStackSerializer.java
similarity index 89%
rename from src/main/java/de/eldoria/jacksonbukkit/serializer/ItemStackSerializer.java
rename to src/main/java/de/eldoria/jacksonbukkit/serializer/PaperItemStackSerializer.java
index 163ae64..07c3ca8 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/ItemStackSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/PaperItemStackSerializer.java
@@ -13,7 +13,7 @@
import java.io.IOException;
import java.util.Base64;
-public class ItemStackSerializer extends JsonSerializer {
+public class PaperItemStackSerializer extends JsonSerializer {
@Override
public void serialize(ItemStack value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeString(Base64.getEncoder().encodeToString(value.serializeAsBytes()));
diff --git a/src/test/java/de/eldoria/jacksonbukkit/SerializationTest.java b/src/test/java/de/eldoria/jacksonbukkit/SerializationTest.java
index 3d780f2..84dc996 100644
--- a/src/test/java/de/eldoria/jacksonbukkit/SerializationTest.java
+++ b/src/test/java/de/eldoria/jacksonbukkit/SerializationTest.java
@@ -7,6 +7,7 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
+import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.databind.type.CollectionType;
@@ -18,27 +19,39 @@
import java.util.List;
public interface SerializationTest {
- ObjectMapper JSON = JsonMapper.builder()
- .defaultPrettyPrinter(new DefaultPrettyPrinter())
- .addModule(new JacksonBukkit())
- .build();
- ObjectMapper YAML = YAMLMapper.builder()
- .addModule(new JacksonBukkit())
- .build();
- ObjectMapper TOML = TomlMapper.builder()
- .addModule(new JacksonBukkit())
- .build();
-
default ObjectMapper json() {
- return JSON;
+ return buildJson();
}
default ObjectMapper yaml() {
- return YAML;
+ return buildYaml();
}
default ObjectMapper toml() {
- return TOML;
+ return buildToml();
+ }
+
+ default Module buildModule() {
+ return new JacksonBukkit();
+ }
+
+ default ObjectMapper buildJson() {
+ return JsonMapper.builder()
+ .defaultPrettyPrinter(new DefaultPrettyPrinter())
+ .addModule(buildModule())
+ .build();
+ }
+
+ default ObjectMapper buildYaml() {
+ return YAMLMapper.builder()
+ .addModule(buildModule())
+ .build();
+ }
+
+ default ObjectMapper buildToml() {
+ return TomlMapper.builder()
+ .addModule(buildModule())
+ .build();
}
default String toJson(Object object) throws JsonProcessingException {
diff --git a/src/test/java/de/eldoria/jacksonbukkit/deserializer/ItemStackDeserializerTest.java b/src/test/java/de/eldoria/jacksonbukkit/deserializer/BukkitItemStackDeserializerTest.java
similarity index 77%
rename from src/test/java/de/eldoria/jacksonbukkit/deserializer/ItemStackDeserializerTest.java
rename to src/test/java/de/eldoria/jacksonbukkit/deserializer/BukkitItemStackDeserializerTest.java
index 662f9b6..73b98de 100644
--- a/src/test/java/de/eldoria/jacksonbukkit/deserializer/ItemStackDeserializerTest.java
+++ b/src/test/java/de/eldoria/jacksonbukkit/deserializer/BukkitItemStackDeserializerTest.java
@@ -10,6 +10,7 @@
import de.eldoria.jacksonbukkit.SerializationTest;
import de.eldoria.jacksonbukkit.templates.ItemStackTemplate;
import org.bukkit.inventory.ItemStack;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -17,27 +18,31 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
@Disabled
-class ItemStackDeserializerTest implements SerializationTest {
-
+class BukkitItemStackDeserializerTest implements SerializationTest {
@BeforeAll
static void setup() {
MockBukkit.mock();
}
+ @AfterAll
+ static void tearDown() {
+ MockBukkit.unmock();
+ }
+
@Test
void deserializeToJson() throws JsonProcessingException {
- assertEquals(ItemStackTemplate.SINGLE, fromJson("item_stack", ItemStack.class));
- assertEquals(ItemStackTemplate.LIST, fromJsonList("item_stack_list", ItemStack.class));
+ assertEquals(ItemStackTemplate.SINGLE, fromJson("item_stack_bukkit", ItemStack.class));
+ assertEquals(ItemStackTemplate.LIST, fromJsonList("item_stack_bukkit_list", ItemStack.class));
}
@Test
void deserializeToYaml() throws JsonProcessingException {
- assertEquals(ItemStackTemplate.SINGLE, fromYaml("item_stack", ItemStack.class));
- assertEquals(ItemStackTemplate.LIST, fromYamlList("item_stack_list", ItemStack.class));
+ assertEquals(ItemStackTemplate.SINGLE, fromYaml("item_stack_bukkit", ItemStack.class));
+ assertEquals(ItemStackTemplate.LIST, fromYamlList("item_stack_bukkit_list", ItemStack.class));
}
@Test
void deserializeToToml() throws JsonProcessingException {
- assertEquals(ItemStackTemplate.SINGLE, fromToml("item_stack", ItemStack.class));
+ assertEquals(ItemStackTemplate.SINGLE, fromToml("item_stack_bukkit", ItemStack.class));
}
}
diff --git a/src/test/java/de/eldoria/jacksonbukkit/deserializer/PaperItemStackDeserializerTest.java b/src/test/java/de/eldoria/jacksonbukkit/deserializer/PaperItemStackDeserializerTest.java
new file mode 100644
index 0000000..e833982
--- /dev/null
+++ b/src/test/java/de/eldoria/jacksonbukkit/deserializer/PaperItemStackDeserializerTest.java
@@ -0,0 +1,56 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) EldoriaRPG Team and Contributor
+ */
+package de.eldoria.jacksonbukkit.deserializer;
+
+import be.seeseemelk.mockbukkit.MockBukkit;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.Module;
+import de.eldoria.jacksonbukkit.JacksonPaper;
+import de.eldoria.jacksonbukkit.SerializationTest;
+import de.eldoria.jacksonbukkit.templates.ItemStackTemplate;
+import org.bukkit.inventory.ItemStack;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@Disabled
+class PaperItemStackDeserializerTest implements SerializationTest {
+
+ @BeforeAll
+ static void setup() {
+ MockBukkit.mock();
+ }
+
+ @AfterAll
+ static void tearDown() {
+ MockBukkit.unmock();
+ }
+
+ @Override
+ public Module buildModule() {
+ return new JacksonPaper();
+ }
+
+ @Test
+ void deserializeToJson() throws JsonProcessingException {
+ assertEquals(ItemStackTemplate.SINGLE, fromJson("item_stack_paper", ItemStack.class));
+ assertEquals(ItemStackTemplate.LIST, fromJsonList("item_stack_paper_list", ItemStack.class));
+ }
+
+ @Test
+ void deserializeToYaml() throws JsonProcessingException {
+ assertEquals(ItemStackTemplate.SINGLE, fromYaml("item_stack_paper", ItemStack.class));
+ assertEquals(ItemStackTemplate.LIST, fromYamlList("item_stack_paper_list", ItemStack.class));
+ }
+
+ @Test
+ void deserializeToToml() throws JsonProcessingException {
+ assertEquals(ItemStackTemplate.SINGLE, fromToml("item_stack_paper", ItemStack.class));
+ }
+}
diff --git a/src/test/java/de/eldoria/jacksonbukkit/serializer/BukkitItemStackSerializerTest.java b/src/test/java/de/eldoria/jacksonbukkit/serializer/BukkitItemStackSerializerTest.java
new file mode 100644
index 0000000..bb934ef
--- /dev/null
+++ b/src/test/java/de/eldoria/jacksonbukkit/serializer/BukkitItemStackSerializerTest.java
@@ -0,0 +1,47 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) EldoriaRPG Team and Contributor
+ */
+package de.eldoria.jacksonbukkit.serializer;
+
+import be.seeseemelk.mockbukkit.MockBukkit;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import de.eldoria.jacksonbukkit.SerializationTest;
+import de.eldoria.jacksonbukkit.templates.ItemStackTemplate;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@Disabled
+class BukkitItemStackSerializerTest implements SerializationTest {
+ @BeforeAll
+ static void setup() {
+ MockBukkit.mock();
+ }
+
+ @AfterAll
+ static void tearDown() {
+ MockBukkit.unmock();
+ }
+
+ @Test
+ void serializeToJson() throws JsonProcessingException {
+ assertEquals(json("item_stack_bukkit"), toJson(ItemStackTemplate.SINGLE));
+ assertEquals(json("item_stack_bukkit_list"), toJson(ItemStackTemplate.LIST));
+ }
+
+ @Test
+ void serializeToYaml() throws JsonProcessingException {
+ assertEquals(yaml("item_stack_bukkit"), toYaml(ItemStackTemplate.SINGLE));
+ assertEquals(yaml("item_stack_bukkit_list"), toYaml(ItemStackTemplate.LIST));
+ }
+
+ @Test
+ void serializeToToml() throws JsonProcessingException {
+ assertEquals(toml("item_stack_bukkit"), toToml(ItemStackTemplate.SINGLE));
+ }
+}
diff --git a/src/test/java/de/eldoria/jacksonbukkit/serializer/ItemStackSerializerTest.java b/src/test/java/de/eldoria/jacksonbukkit/serializer/PaperItemStackSerializerTest.java
similarity index 78%
rename from src/test/java/de/eldoria/jacksonbukkit/serializer/ItemStackSerializerTest.java
rename to src/test/java/de/eldoria/jacksonbukkit/serializer/PaperItemStackSerializerTest.java
index 6b3a6b0..6adc063 100644
--- a/src/test/java/de/eldoria/jacksonbukkit/serializer/ItemStackSerializerTest.java
+++ b/src/test/java/de/eldoria/jacksonbukkit/serializer/PaperItemStackSerializerTest.java
@@ -7,8 +7,11 @@
import be.seeseemelk.mockbukkit.MockBukkit;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.Module;
+import de.eldoria.jacksonbukkit.JacksonPaper;
import de.eldoria.jacksonbukkit.SerializationTest;
import de.eldoria.jacksonbukkit.templates.ItemStackTemplate;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -16,13 +19,23 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
@Disabled
-class ItemStackSerializerTest implements SerializationTest {
+class PaperItemStackSerializerTest implements SerializationTest {
// Mockbukkit does not support serialization to bytes
@BeforeAll
static void setup() {
MockBukkit.mock();
}
+ @AfterAll
+ static void tearDown() {
+ MockBukkit.unmock();
+ }
+
+ @Override
+ public Module buildModule() {
+ return new JacksonPaper();
+ }
+
@Test
void serializeToJson() throws JsonProcessingException {
assertEquals(json("item_stack"), toJson(ItemStackTemplate.SINGLE));
diff --git a/src/test/resources/json/item_stack.json b/src/test/resources/json/item_stack_bukkit.json
similarity index 100%
rename from src/test/resources/json/item_stack.json
rename to src/test/resources/json/item_stack_bukkit.json
diff --git a/src/test/resources/json/item_stack_list.json b/src/test/resources/json/item_stack_bukkit_list.json
similarity index 100%
rename from src/test/resources/json/item_stack_list.json
rename to src/test/resources/json/item_stack_bukkit_list.json
diff --git a/src/test/resources/toml/item_stack.toml b/src/test/resources/json/item_stack_paper.json
similarity index 100%
rename from src/test/resources/toml/item_stack.toml
rename to src/test/resources/json/item_stack_paper.json
diff --git a/src/test/resources/yaml/item_stack.yaml b/src/test/resources/json/item_stack_paper_list.json
similarity index 100%
rename from src/test/resources/yaml/item_stack.yaml
rename to src/test/resources/json/item_stack_paper_list.json
diff --git a/src/test/resources/yaml/item_stack_list.yaml b/src/test/resources/toml/item_stack_bukkit.toml
similarity index 100%
rename from src/test/resources/yaml/item_stack_list.yaml
rename to src/test/resources/toml/item_stack_bukkit.toml
diff --git a/src/test/resources/toml/item_stack_paper.toml b/src/test/resources/toml/item_stack_paper.toml
new file mode 100644
index 0000000..e69de29
diff --git a/src/test/resources/yaml/item_stack_bukkit.yaml b/src/test/resources/yaml/item_stack_bukkit.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/src/test/resources/yaml/item_stack_bukkit_list.yaml b/src/test/resources/yaml/item_stack_bukkit_list.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/src/test/resources/yaml/item_stack_paper.yaml b/src/test/resources/yaml/item_stack_paper.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/src/test/resources/yaml/item_stack_paper_list.yaml b/src/test/resources/yaml/item_stack_paper_list.yaml
new file mode 100644
index 0000000..e69de29
From 506f273749d603564a4e3b22f8931ffcf89ebf2e Mon Sep 17 00:00:00 2001
From: Lilly Tempest <46890129+rainbowdashlabs@users.noreply.github.com>
Date: Fri, 17 Mar 2023 15:00:21 +0100
Subject: [PATCH 4/7] Allow to de/serialize colors as HEX (#9)
* Allow serialization via hex
* Add license header
* Make configurable via builder
* Allow legacy serialization on paper module
* Add license header
---
.../eldoria/jacksonbukkit/JacksonBukkit.java | 51 +++++++++++++++++--
.../eldoria/jacksonbukkit/JacksonPaper.java | 45 +++++++---------
.../builder/JacksonBukkitBuilder.java | 15 ++++++
.../builder/JacksonPaperBuilder.java | 31 +++++++++++
.../jacksonbukkit/builder/ModuleBuilder.java | 40 +++++++++++++++
.../deserializer/HexColorDeserializer.java | 22 ++++++++
.../jacksonbukkit/entities/ColorWrapper.java | 21 ++++++++
.../serializer/HexColorSerializer.java | 21 ++++++++
.../HexColorDeserializerTest.java | 43 ++++++++++++++++
.../serializer/HexColorSerializerTest.java | 43 ++++++++++++++++
src/test/resources/json/color_hex.json | 1 +
src/test/resources/json/color_hex_list.json | 1 +
src/test/resources/yaml/color_hex.yaml | 1 +
src/test/resources/yaml/color_hex_list.yaml | 3 ++
14 files changed, 307 insertions(+), 31 deletions(-)
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/builder/JacksonBukkitBuilder.java
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/builder/JacksonPaperBuilder.java
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/deserializer/HexColorDeserializer.java
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/serializer/HexColorSerializer.java
create mode 100644 src/test/java/de/eldoria/jacksonbukkit/deserializer/HexColorDeserializerTest.java
create mode 100644 src/test/java/de/eldoria/jacksonbukkit/serializer/HexColorSerializerTest.java
create mode 100644 src/test/resources/json/color_hex.json
create mode 100644 src/test/resources/json/color_hex_list.json
create mode 100644 src/test/resources/yaml/color_hex.yaml
create mode 100644 src/test/resources/yaml/color_hex_list.yaml
diff --git a/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java b/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java
index 68a729d..2414c17 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java
@@ -9,16 +9,18 @@
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.module.SimpleDeserializers;
import com.fasterxml.jackson.databind.module.SimpleSerializers;
+import de.eldoria.jacksonbukkit.builder.JacksonBukkitBuilder;
+import de.eldoria.jacksonbukkit.builder.JacksonPaperBuilder;
import de.eldoria.jacksonbukkit.deserializer.AttributeModifierDeserializer;
import de.eldoria.jacksonbukkit.deserializer.BlockVectorDeserializer;
import de.eldoria.jacksonbukkit.deserializer.BoundingBoxDeserializer;
import de.eldoria.jacksonbukkit.deserializer.BukkitItemStackDeserializer;
import de.eldoria.jacksonbukkit.deserializer.ColorDeserializer;
import de.eldoria.jacksonbukkit.deserializer.FireworkEffectDeserializer;
+import de.eldoria.jacksonbukkit.deserializer.HexColorDeserializer;
import de.eldoria.jacksonbukkit.deserializer.InventoryDeserializer;
import de.eldoria.jacksonbukkit.deserializer.LocationDeserializer;
import de.eldoria.jacksonbukkit.deserializer.NamespacedKeyDeserializer;
-import de.eldoria.jacksonbukkit.deserializer.PaperItemStackDeserializer;
import de.eldoria.jacksonbukkit.deserializer.PatternDeserializer;
import de.eldoria.jacksonbukkit.deserializer.PlayerDeserializer;
import de.eldoria.jacksonbukkit.deserializer.PotionEffectDeserializer;
@@ -30,10 +32,10 @@
import de.eldoria.jacksonbukkit.serializer.BukkitItemStackSerializer;
import de.eldoria.jacksonbukkit.serializer.ColorSerializer;
import de.eldoria.jacksonbukkit.serializer.FireworkEffectSerializer;
+import de.eldoria.jacksonbukkit.serializer.HexColorSerializer;
import de.eldoria.jacksonbukkit.serializer.InventorySerializer;
import de.eldoria.jacksonbukkit.serializer.LocationSerializer;
import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer;
-import de.eldoria.jacksonbukkit.serializer.PaperItemStackSerializer;
import de.eldoria.jacksonbukkit.serializer.PatternSerializer;
import de.eldoria.jacksonbukkit.serializer.PlayerSerializer;
import de.eldoria.jacksonbukkit.serializer.PotionEffectSerializer;
@@ -78,6 +80,47 @@
*
*/
public class JacksonBukkit extends Module {
+ private final boolean hexColors;
+
+ public JacksonBukkit(boolean hexColors) {
+ this.hexColors = hexColors;
+ }
+
+ public JacksonBukkit() {
+ hexColors = false;
+ }
+
+ /**
+ * Create a new builder for a {@link JacksonBukkit} module for use with spigot.
+ *
+ * If you are using paper you should use the {@link #paper()} builder.
+ *
+ * @return builder instance
+ */
+ public static JacksonBukkitBuilder bukkit() {
+ return new JacksonBukkitBuilder();
+ }
+
+ /**
+ * Create a new builder for a {@link JacksonBukkit} module for use with spigot.
+ *
+ * If you are using paper you should use the {@link #paper()} builder.
+ *
+ * @return builder instance
+ */
+ public static JacksonBukkitBuilder spigot() {
+ return new JacksonBukkitBuilder();
+ }
+
+ /**
+ * Create a new builder for a {@link JacksonPaper} module for use with paper.
+ *
+ * @return builder instance
+ */
+ public static JacksonPaperBuilder paper() {
+ return new JacksonPaperBuilder();
+ }
+
@Override
public String getModuleName() {
return "JacksonBukkit";
@@ -103,7 +146,7 @@ public void setupModule(SetupContext context) {
protected void addSerializer(SimpleSerializers serializers) {
serializers.addSerializer(Vector.class, new VectorSerializer());
serializers.addSerializer(BlockVector.class, new BlockVectorSerializer());
- serializers.addSerializer(Color.class, new ColorSerializer());
+ serializers.addSerializer(Color.class, hexColors ? new HexColorSerializer() : new ColorSerializer());
serializers.addSerializer(ItemStack.class, new BukkitItemStackSerializer());
serializers.addSerializer(NamespacedKey.class, new NamespacedKeySerializer());
serializers.addSerializer(PotionEffect.class, new PotionEffectSerializer());
@@ -119,7 +162,7 @@ protected void addSerializer(SimpleSerializers serializers) {
protected void addDeserializer(SimpleDeserializers deserializers) {
deserializers.addDeserializer(Vector.class, new VectorDeserializer());
deserializers.addDeserializer(BlockVector.class, new BlockVectorDeserializer());
- deserializers.addDeserializer(Color.class, new ColorDeserializer());
+ deserializers.addDeserializer(Color.class, hexColors ? new HexColorDeserializer() : new ColorDeserializer());
deserializers.addDeserializer(ItemStack.class, new BukkitItemStackDeserializer());
deserializers.addDeserializer(NamespacedKey.class, new NamespacedKeyDeserializer());
deserializers.addDeserializer(PotionEffect.class, new PotionEffectDeserializer());
diff --git a/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java b/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java
index 0b9b9d9..727cc42 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java
@@ -5,36 +5,11 @@
*/
package de.eldoria.jacksonbukkit;
-import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.module.SimpleDeserializers;
import com.fasterxml.jackson.databind.module.SimpleSerializers;
-import de.eldoria.jacksonbukkit.deserializer.AttributeModifierDeserializer;
-import de.eldoria.jacksonbukkit.deserializer.BlockVectorDeserializer;
-import de.eldoria.jacksonbukkit.deserializer.BoundingBoxDeserializer;
-import de.eldoria.jacksonbukkit.deserializer.ColorDeserializer;
-import de.eldoria.jacksonbukkit.deserializer.FireworkEffectDeserializer;
-import de.eldoria.jacksonbukkit.deserializer.InventoryDeserializer;
-import de.eldoria.jacksonbukkit.deserializer.LocationDeserializer;
-import de.eldoria.jacksonbukkit.deserializer.NamespacedKeyDeserializer;
import de.eldoria.jacksonbukkit.deserializer.PaperItemStackDeserializer;
-import de.eldoria.jacksonbukkit.deserializer.PatternDeserializer;
-import de.eldoria.jacksonbukkit.deserializer.PlayerDeserializer;
-import de.eldoria.jacksonbukkit.deserializer.PotionEffectDeserializer;
-import de.eldoria.jacksonbukkit.deserializer.VectorDeserializer;
import de.eldoria.jacksonbukkit.entities.InventoryWrapper;
-import de.eldoria.jacksonbukkit.serializer.AttributeModifierSerializer;
-import de.eldoria.jacksonbukkit.serializer.BlockVectorSerializer;
-import de.eldoria.jacksonbukkit.serializer.BoundingBoxSerializer;
-import de.eldoria.jacksonbukkit.serializer.ColorSerializer;
-import de.eldoria.jacksonbukkit.serializer.FireworkEffectSerializer;
-import de.eldoria.jacksonbukkit.serializer.InventorySerializer;
-import de.eldoria.jacksonbukkit.serializer.LocationSerializer;
-import de.eldoria.jacksonbukkit.serializer.NamespacedKeySerializer;
import de.eldoria.jacksonbukkit.serializer.PaperItemStackSerializer;
-import de.eldoria.jacksonbukkit.serializer.PatternSerializer;
-import de.eldoria.jacksonbukkit.serializer.PlayerSerializer;
-import de.eldoria.jacksonbukkit.serializer.PotionEffectSerializer;
-import de.eldoria.jacksonbukkit.serializer.VectorSerializer;
import org.bukkit.Color;
import org.bukkit.FireworkEffect;
import org.bukkit.Location;
@@ -75,6 +50,18 @@
*
*/
public class JacksonPaper extends JacksonBukkit {
+ private final boolean legacyItemStackSerialization;
+
+ public JacksonPaper(boolean hexColors, boolean legacyItemStackSerialization) {
+ super(hexColors);
+ this.legacyItemStackSerialization = legacyItemStackSerialization;
+ }
+
+ public JacksonPaper() {
+ super();
+ legacyItemStackSerialization = false;
+ }
+
@Override
public String getModuleName() {
return "JacksonPaper";
@@ -83,12 +70,16 @@ public String getModuleName() {
@Override
protected void addDeserializer(SimpleDeserializers deserializers) {
super.addDeserializer(deserializers);
- deserializers.addDeserializer(ItemStack.class, new PaperItemStackDeserializer());
+ if (!legacyItemStackSerialization) {
+ deserializers.addDeserializer(ItemStack.class, new PaperItemStackDeserializer());
+ }
}
@Override
protected void addSerializer(SimpleSerializers serializers) {
super.addSerializer(serializers);
- serializers.addSerializer(ItemStack.class, new PaperItemStackSerializer());
+ if (!legacyItemStackSerialization) {
+ serializers.addSerializer(ItemStack.class, new PaperItemStackSerializer());
+ }
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonBukkitBuilder.java b/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonBukkitBuilder.java
new file mode 100644
index 0000000..c7be070
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonBukkitBuilder.java
@@ -0,0 +1,15 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) EldoriaRPG Team and Contributor
+ */
+package de.eldoria.jacksonbukkit.builder;
+
+import de.eldoria.jacksonbukkit.JacksonBukkit;
+
+public class JacksonBukkitBuilder extends ModuleBuilder {
+ @Override
+ public JacksonBukkit build() {
+ return new JacksonBukkit(hexColors);
+ }
+}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonPaperBuilder.java b/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonPaperBuilder.java
new file mode 100644
index 0000000..487ba4e
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonPaperBuilder.java
@@ -0,0 +1,31 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) EldoriaRPG Team and Contributor
+ */
+package de.eldoria.jacksonbukkit.builder;
+
+import de.eldoria.jacksonbukkit.JacksonBukkit;
+import de.eldoria.jacksonbukkit.JacksonPaper;
+import org.bukkit.configuration.serialization.ConfigurationSerializable;
+
+public class JacksonPaperBuilder extends ModuleBuilder {
+ private boolean legacyItemStackSerialization = false;
+
+ /**
+ * Use legacy serializer which serializes the item stack as a map via {@link ConfigurationSerializable}.
+ *
+ * This does not work if the plugin is a {@code PaperPlugin}
+ *
+ * @return builder instance
+ */
+ public JacksonPaperBuilder useLegacyItemStackSerialization() {
+ legacyItemStackSerialization = true;
+ return this;
+ }
+
+ @Override
+ public JacksonBukkit build() {
+ return new JacksonPaper(hexColors, legacyItemStackSerialization);
+ }
+}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java b/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java
new file mode 100644
index 0000000..e8854eb
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java
@@ -0,0 +1,40 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) EldoriaRPG Team and Contributor
+ */
+package de.eldoria.jacksonbukkit.builder;
+
+import de.eldoria.jacksonbukkit.JacksonBukkit;
+
+public abstract class ModuleBuilder {
+ protected boolean hexColors = false;
+
+ /**
+ * Serialize {@link org.bukkit.Color} as hex string.
+ *
+ * @return builder instance
+ */
+ public T colorAsHex() {
+ hexColors = true;
+ return (T) this;
+ }
+
+ /**
+ * Serialize {@link org.bukkit.Color} as hex string.
+ *
+ * @param hexColors true to serialize colors as hex.
+ * @return builder instance
+ */
+ public T colorAsHex(boolean hexColors) {
+ this.hexColors = hexColors;
+ return (T) this;
+ }
+
+ /**
+ * Build the module
+ *
+ * @return new module instance
+ */
+ public abstract V build();
+}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/HexColorDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/HexColorDeserializer.java
new file mode 100644
index 0000000..f331ec3
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/HexColorDeserializer.java
@@ -0,0 +1,22 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) EldoriaRPG Team and Contributor
+ */
+package de.eldoria.jacksonbukkit.deserializer;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import de.eldoria.jacksonbukkit.entities.ColorWrapper;
+import org.bukkit.Color;
+
+import java.io.IOException;
+
+public class HexColorDeserializer extends JsonDeserializer {
+
+ @Override
+ public Color deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
+ return ColorWrapper.of(ctxt.readValue(p, String.class)).toBukkitColor();
+ }
+}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/ColorWrapper.java b/src/main/java/de/eldoria/jacksonbukkit/entities/ColorWrapper.java
index 2657e0b..4d161af 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/entities/ColorWrapper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/ColorWrapper.java
@@ -13,6 +13,27 @@ public static ColorWrapper of(Color color) {
return new ColorWrapper(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha());
}
+ public static ColorWrapper of(String hex) {
+
+ int red = Integer.parseInt(hex.substring(0, 2), 16);
+ int green = Integer.parseInt(hex.substring(2, 4), 16);
+ int blue = Integer.parseInt(hex.substring(4, 6), 16);
+ int alpha = 255;
+ if (hex.length() == 8) {
+ alpha = Integer.parseInt(hex.substring(6, 8), 16);
+ }
+
+ return new ColorWrapper(red, green, blue, alpha);
+ }
+
+ public String asHex() {
+ return "%02X%02X%02X%02X".formatted(red, green, blue, alpha);
+ }
+
+ private String pad(String s) {
+ return (s.length() == 1) ? "0" + s : s;
+ }
+
public Color toBukkitColor() {
return Color.fromARGB(alpha, red, green, blue);
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/HexColorSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/HexColorSerializer.java
new file mode 100644
index 0000000..a642266
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/HexColorSerializer.java
@@ -0,0 +1,21 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) EldoriaRPG Team and Contributor
+ */
+package de.eldoria.jacksonbukkit.serializer;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import de.eldoria.jacksonbukkit.entities.ColorWrapper;
+import org.bukkit.Color;
+
+import java.io.IOException;
+
+public class HexColorSerializer extends JsonSerializer {
+ @Override
+ public void serialize(Color value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+ gen.writeString(ColorWrapper.of(value).asHex());
+ }
+}
diff --git a/src/test/java/de/eldoria/jacksonbukkit/deserializer/HexColorDeserializerTest.java b/src/test/java/de/eldoria/jacksonbukkit/deserializer/HexColorDeserializerTest.java
new file mode 100644
index 0000000..c9936c7
--- /dev/null
+++ b/src/test/java/de/eldoria/jacksonbukkit/deserializer/HexColorDeserializerTest.java
@@ -0,0 +1,43 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) EldoriaRPG Team and Contributor
+ */
+package de.eldoria.jacksonbukkit.deserializer;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.Module;
+import de.eldoria.jacksonbukkit.JacksonBukkit;
+import de.eldoria.jacksonbukkit.SerializationTest;
+import de.eldoria.jacksonbukkit.templates.ColorTemplate;
+import org.bukkit.Color;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+class HexColorDeserializerTest implements SerializationTest {
+ @Override
+ public Module buildModule() {
+ return new JacksonBukkit(true);
+ }
+
+ @Test
+ void deserializeFromJson() throws JsonProcessingException {
+ assertEquals(ColorTemplate.SINGLE, fromJson("color_hex", Color.class));
+ assertEquals(ColorTemplate.LIST, fromJsonList("color_hex_list", Color.class));
+ }
+
+ @Test
+ void deserializeFromYaml() throws JsonProcessingException {
+ assertEquals(ColorTemplate.SINGLE, fromYaml("color_hex", Color.class));
+ assertEquals(ColorTemplate.LIST, fromYamlList("color_hex_list", Color.class));
+ }
+
+ // toml can't c:
+ @Test
+ @Disabled
+ void deserializeFromToml() throws JsonProcessingException {
+ assertEquals(ColorTemplate.SINGLE, fromToml("color_hex", Color.class));
+ }
+}
diff --git a/src/test/java/de/eldoria/jacksonbukkit/serializer/HexColorSerializerTest.java b/src/test/java/de/eldoria/jacksonbukkit/serializer/HexColorSerializerTest.java
new file mode 100644
index 0000000..b9a2cec
--- /dev/null
+++ b/src/test/java/de/eldoria/jacksonbukkit/serializer/HexColorSerializerTest.java
@@ -0,0 +1,43 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) EldoriaRPG Team and Contributor
+ */
+package de.eldoria.jacksonbukkit.serializer;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.Module;
+import de.eldoria.jacksonbukkit.JacksonBukkit;
+import de.eldoria.jacksonbukkit.SerializationTest;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import static de.eldoria.jacksonbukkit.templates.ColorTemplate.LIST;
+import static de.eldoria.jacksonbukkit.templates.ColorTemplate.SINGLE;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+class HexColorSerializerTest implements SerializationTest {
+ @Override
+ public Module buildModule() {
+ return new JacksonBukkit(true);
+ }
+
+ @Test
+ void serializeToJson() throws JsonProcessingException {
+ assertEquals(json("color_hex"), toJson(SINGLE));
+ assertEquals(json("color_hex_list"), toJson(LIST));
+ }
+
+ @Test
+ void serializeToYaml() throws JsonProcessingException {
+ assertEquals(yaml("color_hex"), toYaml(SINGLE));
+ assertEquals(yaml("color_hex_list"), toYaml(LIST));
+ }
+
+ // toml can't c:
+ @Test
+ @Disabled
+ void serializeToml() throws JsonProcessingException {
+ assertEquals(toml("color_hex"), toToml(SINGLE));
+ }
+}
diff --git a/src/test/resources/json/color_hex.json b/src/test/resources/json/color_hex.json
new file mode 100644
index 0000000..674ad28
--- /dev/null
+++ b/src/test/resources/json/color_hex.json
@@ -0,0 +1 @@
+"FF3C00FF"
diff --git a/src/test/resources/json/color_hex_list.json b/src/test/resources/json/color_hex_list.json
new file mode 100644
index 0000000..ddcf124
--- /dev/null
+++ b/src/test/resources/json/color_hex_list.json
@@ -0,0 +1 @@
+[ "FF3C00FF", "14C846D7" ]
diff --git a/src/test/resources/yaml/color_hex.yaml b/src/test/resources/yaml/color_hex.yaml
new file mode 100644
index 0000000..8272d4c
--- /dev/null
+++ b/src/test/resources/yaml/color_hex.yaml
@@ -0,0 +1 @@
+--- "FF3C00FF"
diff --git a/src/test/resources/yaml/color_hex_list.yaml b/src/test/resources/yaml/color_hex_list.yaml
new file mode 100644
index 0000000..cf2fa15
--- /dev/null
+++ b/src/test/resources/yaml/color_hex_list.yaml
@@ -0,0 +1,3 @@
+---
+- "FF3C00FF"
+- "14C846D7"
From b6824b387e9d8664f26757e31184a35fe6a863a2 Mon Sep 17 00:00:00 2001
From: Lilly Tempest <46890129+rainbowdashlabs@users.noreply.github.com>
Date: Fri, 17 Mar 2023 15:18:12 +0100
Subject: [PATCH 5/7] Chore/docs (#10)
* Cleanup and documentation
* Update readme
---
Readme.md | 49 ++++++++++++++++---
.../builder/JacksonBukkitBuilder.java | 3 ++
.../builder/JacksonPaperBuilder.java | 3 ++
.../jacksonbukkit/builder/ModuleBuilder.java | 6 +++
.../jacksonbukkit/builder/package-info.java | 5 ++
.../AttributeModifierDeserializer.java | 3 ++
.../deserializer/BlockVectorDeserializer.java | 4 +-
.../deserializer/BoundingBoxDeserializer.java | 7 ++-
.../BukkitItemStackDeserializer.java | 8 ++-
.../deserializer/ColorDeserializer.java | 3 ++
.../FireworkEffectDeserializer.java | 4 +-
.../deserializer/HexColorDeserializer.java | 3 ++
.../deserializer/InventoryDeserializer.java | 3 ++
.../deserializer/LocationDeserializer.java | 6 ++-
.../NamespacedKeyDeserializer.java | 6 ++-
.../PaperItemStackDeserializer.java | 3 ++
.../deserializer/PatternDeserializer.java | 6 ++-
.../deserializer/PlayerDeserializer.java | 4 +-
.../PotionEffectDeserializer.java | 6 ++-
.../deserializer/VectorDeserializer.java | 4 +-
.../deserializer/package-info.java | 5 ++
.../entities/AttributeModifierWrapper.java | 15 ++++++
.../jacksonbukkit/entities/BoundingBox.java | 24 ---------
.../entities/BoundingBoxWrapper.java | 41 ++++++++++++++++
.../jacksonbukkit/entities/ColorWrapper.java | 27 ++++++++++
.../entities/FireworkEffectWrapper.java | 28 ++++++++++-
.../entities/InventoryWrapper.java | 9 ++++
.../entities/LocationWrapper.java | 18 ++++++-
.../entities/NamespacedKeyWrapper.java | 20 +++++++-
.../entities/PatternWrapper.java | 14 +++++-
.../entities/PotionEffectWrapper.java | 28 ++++++++++-
.../jacksonbukkit/entities/VectorWrapper.java | 23 +++++++--
.../jacksonbukkit/entities/package-info.java | 5 ++
.../eldoria/jacksonbukkit/package-info.java | 5 ++
.../AttributeModifierSerializer.java | 3 ++
.../serializer/BlockVectorSerializer.java | 3 ++
.../serializer/BoundingBoxSerializer.java | 6 ++-
.../serializer/BukkitItemStackSerializer.java | 4 +-
.../serializer/ColorSerializer.java | 3 ++
.../serializer/FireworkEffectSerializer.java | 12 ++---
.../serializer/HexColorSerializer.java | 3 ++
.../serializer/InventorySerializer.java | 3 ++
.../serializer/LocationSerializer.java | 5 +-
.../serializer/NamespacedKeySerializer.java | 5 +-
.../serializer/PaperItemStackSerializer.java | 3 ++
.../serializer/PatternSerializer.java | 5 +-
.../serializer/PlayerSerializer.java | 3 ++
.../serializer/PotionEffectSerializer.java | 12 ++---
.../serializer/VectorSerializer.java | 3 ++
.../serializer/package-info.java | 4 ++
50 files changed, 393 insertions(+), 82 deletions(-)
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/builder/package-info.java
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/deserializer/package-info.java
delete mode 100644 src/main/java/de/eldoria/jacksonbukkit/entities/BoundingBox.java
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/entities/BoundingBoxWrapper.java
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/entities/package-info.java
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/package-info.java
create mode 100644 src/main/java/de/eldoria/jacksonbukkit/serializer/package-info.java
diff --git a/Readme.md b/Readme.md
index 3ac5d4f..ede32f0 100644
--- a/Readme.md
+++ b/Readme.md
@@ -35,25 +35,58 @@ dependencies {
```
-## Usage
+## Module Creation
-Simply add the JacksonBukkit module to the builder of your choice.
+You can either create the `JacksonBukkit` and `JacksonPaper` module directly or use the builder for easy modification.
+Usage of the builder is recommended.
+Builder for spigot and paper can both be accessed via the `JacksonBukkit` class.
+
+### Creating a Spigot/Bukkit Module
```java
- ObjectMapper JSON = JsonMapper.builder()
- .addModule(new JacksonBukkit())
- .build();
+ ObjectMapper JSON=JsonMapper.builder()
+ .addModule(JacksonBukkit.spigot().build())
+ .build();
+```
+
+### Creating a Paper Module
+```java
+ ObjectMapper JSON=JsonMapper.builder()
+ .addModule(JacksonBukkit.paper().build())
+ .build();
```
+### Difference between Paper and Bukkit module
+
+Paper serializes `ItemStack`s to a Base64 encoded byte array instead of using spigots serialization.
+This will only work on paper servers and not on spigot servers.
+The builder allows to use spigots serialization on paper servers as well, but this is not recommended.
+
+When creating a paper plugin the `JacksonBukkit` module is no longer able to serialize `ItemStacks`.
+you need to use `JacksonPaper` in that case and make sure that you are not using legacy serialization.
+
+### More customization
+
+There are some more customizations
+
+#### Color
+
+Colors will be read and written to an object containing a value for red, green, blue and alpha by default.
+By calling `ModuleBuilder#colorAsHex()` you can enable hex codes.
+This will attempt to read each color as a HEX string with RGBA or RGB format.
+It will also write colors as ARGB.
+
+**Warning:** As of now you can use either way, but not both at the same time. Mixing up format will cause errors.
+
## Supported Classes
We support all classes implementing `ConfigurationSerializable`. To be precise we support the following classes:
- Vector
- BlockVector
-- Color
-- ItemStack (Serialized as Base64 encoded bytes as recommended by [paper](https://jd.papermc.io/paper/1.19/org/bukkit/inventory/ItemStack.html#serializeAsBytes()))
+- Color (Can be serialized as object or as hex string)
+- ItemStack (Serialized as map for `JacksonBukkit`. Serialized as Base64 encoded bytes for `JacksonPaper`)
- PotionEffect
- FireworkEffect
- Pattern
@@ -65,4 +98,4 @@ We support all classes implementing `ConfigurationSerializable`. To be precise w
- NamespacedKey
- OfflinePlayer
-- Inventory via InventoryWrapper class
+- Inventory via `InventoryWrapper` class
diff --git a/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonBukkitBuilder.java b/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonBukkitBuilder.java
index c7be070..9b1a478 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonBukkitBuilder.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonBukkitBuilder.java
@@ -7,6 +7,9 @@
import de.eldoria.jacksonbukkit.JacksonBukkit;
+/**
+ * Class to build a {@link JacksonBukkit} module.
+ */
public class JacksonBukkitBuilder extends ModuleBuilder {
@Override
public JacksonBukkit build() {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonPaperBuilder.java b/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonPaperBuilder.java
index 487ba4e..e6a27d4 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonPaperBuilder.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/builder/JacksonPaperBuilder.java
@@ -9,6 +9,9 @@
import de.eldoria.jacksonbukkit.JacksonPaper;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
+/**
+ * Class to build a {@link JacksonPaper} module.
+ */
public class JacksonPaperBuilder extends ModuleBuilder {
private boolean legacyItemStackSerialization = false;
diff --git a/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java b/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java
index e8854eb..0f935e0 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java
@@ -7,6 +7,12 @@
import de.eldoria.jacksonbukkit.JacksonBukkit;
+/**
+ * Base class for module builder.
+ *
+ * @param type of builder
+ * @param type of created module
+ */
public abstract class ModuleBuilder {
protected boolean hexColors = false;
diff --git a/src/main/java/de/eldoria/jacksonbukkit/builder/package-info.java b/src/main/java/de/eldoria/jacksonbukkit/builder/package-info.java
new file mode 100644
index 0000000..9e203a9
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/builder/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Package containing {@link de.eldoria.jacksonbukkit.builder.ModuleBuilder} to build the {@link com.fasterxml.jackson.databind.Module}s
+ */
+
+package de.eldoria.jacksonbukkit.builder;
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/AttributeModifierDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/AttributeModifierDeserializer.java
index d9c981f..fb4beff 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/AttributeModifierDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/AttributeModifierDeserializer.java
@@ -13,6 +13,9 @@
import java.io.IOException;
+/**
+ * Class for deserialization of {@link AttributeModifier}.
+ */
public class AttributeModifierDeserializer extends JsonDeserializer {
@Override
public AttributeModifier deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/BlockVectorDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/BlockVectorDeserializer.java
index 34e3bea..402e26b 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/BlockVectorDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/BlockVectorDeserializer.java
@@ -5,7 +5,6 @@
*/
package de.eldoria.jacksonbukkit.deserializer;
-import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
@@ -14,6 +13,9 @@
import java.io.IOException;
+/**
+ * Class for deserialization of {@link BlockVector}.
+ */
public class BlockVectorDeserializer extends JsonDeserializer {
@Override
public BlockVector deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/BoundingBoxDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/BoundingBoxDeserializer.java
index d880d7e..e7859e4 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/BoundingBoxDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/BoundingBoxDeserializer.java
@@ -5,17 +5,20 @@
*/
package de.eldoria.jacksonbukkit.deserializer;
-import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
+import de.eldoria.jacksonbukkit.entities.BoundingBoxWrapper;
import org.bukkit.util.BoundingBox;
import java.io.IOException;
+/**
+ * Class for deserialization of {@link BoundingBox}.
+ */
public class BoundingBoxDeserializer extends JsonDeserializer {
@Override
public BoundingBox deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
- return ctxt.readValue(p, de.eldoria.jacksonbukkit.entities.BoundingBox.class).toBukkitBoundingBox();
+ return ctxt.readValue(p, BoundingBoxWrapper.class).toBukkitBoundingBox();
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/BukkitItemStackDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/BukkitItemStackDeserializer.java
index 89c9744..23120ab 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/BukkitItemStackDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/BukkitItemStackDeserializer.java
@@ -9,16 +9,14 @@
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.type.MapType;
-import org.bukkit.configuration.file.YamlConfiguration;
-import org.bukkit.configuration.serialization.ConfigurationSerializable;
-import org.bukkit.configuration.serialization.ConfigurationSerialization;
import org.bukkit.inventory.ItemStack;
import java.io.IOException;
-import java.util.Base64;
import java.util.HashMap;
-import java.util.Map;
+/**
+ * Class for deserialization of {@link ItemStack} as a map.
+ */
public class BukkitItemStackDeserializer extends JsonDeserializer {
@Override
public ItemStack deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/ColorDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/ColorDeserializer.java
index 0165642..af59c84 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/ColorDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/ColorDeserializer.java
@@ -13,6 +13,9 @@
import java.io.IOException;
+/**
+ * Class for deserialization of {@link Color} as object.
+ */
public class ColorDeserializer extends JsonDeserializer {
@Override
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/FireworkEffectDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/FireworkEffectDeserializer.java
index e9c0e17..9e9195a 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/FireworkEffectDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/FireworkEffectDeserializer.java
@@ -5,7 +5,6 @@
*/
package de.eldoria.jacksonbukkit.deserializer;
-import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
@@ -14,6 +13,9 @@
import java.io.IOException;
+/**
+ * Class for deserialization of {@link FireworkEffect}.
+ */
public class FireworkEffectDeserializer extends JsonDeserializer {
@Override
public FireworkEffect deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/HexColorDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/HexColorDeserializer.java
index f331ec3..43ab040 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/HexColorDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/HexColorDeserializer.java
@@ -13,6 +13,9 @@
import java.io.IOException;
+/**
+ * Class for deserialization of {@link Color} as hexadecimal string.
+ */
public class HexColorDeserializer extends JsonDeserializer {
@Override
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/InventoryDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/InventoryDeserializer.java
index 2e9f395..3d80627 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/InventoryDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/InventoryDeserializer.java
@@ -12,6 +12,9 @@
import java.io.IOException;
+/**
+ * Class for deserialization of {@link InventoryWrapper}.
+ */
public class InventoryDeserializer extends JsonDeserializer {
@Override
public InventoryWrapper deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/LocationDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/LocationDeserializer.java
index 3ca378c..b690996 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/LocationDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/LocationDeserializer.java
@@ -5,7 +5,6 @@
*/
package de.eldoria.jacksonbukkit.deserializer;
-import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
@@ -14,9 +13,12 @@
import java.io.IOException;
+/**
+ * Class for deserialization of {@link Location}.
+ */
public class LocationDeserializer extends JsonDeserializer {
@Override
public Location deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
- return ctxt.readValue(p, LocationWrapper.class).toLocation();
+ return ctxt.readValue(p, LocationWrapper.class).toBukkitLocation();
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/NamespacedKeyDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/NamespacedKeyDeserializer.java
index 58aecfe..0946170 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/NamespacedKeyDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/NamespacedKeyDeserializer.java
@@ -5,7 +5,6 @@
*/
package de.eldoria.jacksonbukkit.deserializer;
-import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
@@ -14,9 +13,12 @@
import java.io.IOException;
+/**
+ * Class for deserialization of {@link NamespacedKey}.
+ */
public class NamespacedKeyDeserializer extends JsonDeserializer {
@Override
public NamespacedKey deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
- return ctxt.readValue(p, NamespacedKeyWrapper.class).toKey();
+ return ctxt.readValue(p, NamespacedKeyWrapper.class).toBukkitNamespacedKey();
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/PaperItemStackDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/PaperItemStackDeserializer.java
index b21f066..797e834 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/PaperItemStackDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/PaperItemStackDeserializer.java
@@ -13,6 +13,9 @@
import java.io.IOException;
import java.util.Base64;
+/**
+ * Class for deserialization of {@link ItemStack} as {@code byte[]}.
+ */
public class PaperItemStackDeserializer extends JsonDeserializer {
@Override
public ItemStack deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/PatternDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/PatternDeserializer.java
index ffcd80f..41cbb5d 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/PatternDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/PatternDeserializer.java
@@ -5,7 +5,6 @@
*/
package de.eldoria.jacksonbukkit.deserializer;
-import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
@@ -14,9 +13,12 @@
import java.io.IOException;
+/**
+ * Class for deserialization of {@link Pattern}.
+ */
public class PatternDeserializer extends JsonDeserializer {
@Override
public Pattern deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
- return ctxt.readValue(p, PatternWrapper.class).toPattern();
+ return ctxt.readValue(p, PatternWrapper.class).toBukkitPattern();
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/PlayerDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/PlayerDeserializer.java
index f5f141d..d6d2c97 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/PlayerDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/PlayerDeserializer.java
@@ -5,7 +5,6 @@
*/
package de.eldoria.jacksonbukkit.deserializer;
-import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
@@ -15,6 +14,9 @@
import java.io.IOException;
import java.util.UUID;
+/**
+ * Class for deserialization of {@link OfflinePlayer}.
+ */
public class PlayerDeserializer extends JsonDeserializer {
@Override
public OfflinePlayer deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/PotionEffectDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/PotionEffectDeserializer.java
index 50bbbf7..b955b4d 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/PotionEffectDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/PotionEffectDeserializer.java
@@ -5,7 +5,6 @@
*/
package de.eldoria.jacksonbukkit.deserializer;
-import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
@@ -14,9 +13,12 @@
import java.io.IOException;
+/**
+ * Class for deserialization of {@link PotionEffect}.
+ */
public class PotionEffectDeserializer extends JsonDeserializer {
@Override
public PotionEffect deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
- return ctxt.readValue(p, PotionEffectWrapper.class).toPotionEffect();
+ return ctxt.readValue(p, PotionEffectWrapper.class).toBukkitPotionEffect();
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/VectorDeserializer.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/VectorDeserializer.java
index 4c1fdfb..8de4257 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/deserializer/VectorDeserializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/VectorDeserializer.java
@@ -5,7 +5,6 @@
*/
package de.eldoria.jacksonbukkit.deserializer;
-import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
@@ -14,6 +13,9 @@
import java.io.IOException;
+/**
+ * Class for deserialization of {@link VectorDeserializer}.
+ */
public class VectorDeserializer extends JsonDeserializer {
@Override
public Vector deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/deserializer/package-info.java b/src/main/java/de/eldoria/jacksonbukkit/deserializer/package-info.java
new file mode 100644
index 0000000..0cbb48d
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/deserializer/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Package containing deserializer.
+ */
+
+package de.eldoria.jacksonbukkit.deserializer;
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/AttributeModifierWrapper.java b/src/main/java/de/eldoria/jacksonbukkit/entities/AttributeModifierWrapper.java
index f9797d4..a3aab55 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/entities/AttributeModifierWrapper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/AttributeModifierWrapper.java
@@ -10,9 +10,19 @@
import java.util.UUID;
+
+/**
+ * Class for wrapping an {@link AttributeModifier}.
+ */
public record AttributeModifierWrapper(UUID uuid, String name, double amount, AttributeModifier.Operation operation,
EquipmentSlot equipmentSlot) {
+ /**
+ * Create a new {@link AttributeModifierWrapper} based on an {@link AttributeModifier}.
+ *
+ * @param attributeModifier attribute modifier instance
+ * @return new {@link AttributeModifierWrapper} instance
+ */
public static AttributeModifierWrapper of(AttributeModifier attributeModifier) {
return new AttributeModifierWrapper(
attributeModifier.getUniqueId(),
@@ -22,6 +32,11 @@ public static AttributeModifierWrapper of(AttributeModifier attributeModifier) {
attributeModifier.getSlot());
}
+ /**
+ * Constructs a new {@link AttributeModifier} based on wrapper values.
+ *
+ * @return new {@link AttributeModifier} instance
+ */
public AttributeModifier toBukkitAttributeModifier() {
return new AttributeModifier(
uuid,
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/BoundingBox.java b/src/main/java/de/eldoria/jacksonbukkit/entities/BoundingBox.java
deleted file mode 100644
index 7110ebb..0000000
--- a/src/main/java/de/eldoria/jacksonbukkit/entities/BoundingBox.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * SPDX-License-Identifier: MIT
- *
- * Copyright (C) EldoriaRPG Team and Contributor
- */
-package de.eldoria.jacksonbukkit.entities;
-
-public record BoundingBox(VectorWrapper corner1, VectorWrapper corner2) {
-
- public static BoundingBox of(org.bukkit.util.BoundingBox boundingBox) {
- return new BoundingBox(
- VectorWrapper.of(boundingBox.getMin()),
- VectorWrapper.of(boundingBox.getMax())
- );
- }
-
- public org.bukkit.util.BoundingBox toBukkitBoundingBox() {
- return org.bukkit.util.BoundingBox.of(
- corner1.toBukkitVector(),
- corner2.toBukkitVector()
- );
- }
-
-}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/BoundingBoxWrapper.java b/src/main/java/de/eldoria/jacksonbukkit/entities/BoundingBoxWrapper.java
new file mode 100644
index 0000000..82fa7c2
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/BoundingBoxWrapper.java
@@ -0,0 +1,41 @@
+/*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) EldoriaRPG Team and Contributor
+ */
+package de.eldoria.jacksonbukkit.entities;
+
+import org.bukkit.util.BoundingBox;
+import org.bukkit.util.Vector;
+
+/**
+ * Class for wrapping a {@link BoundingBox}.
+ */
+public record BoundingBoxWrapper(Vector corner1, Vector corner2) {
+
+ /**
+ * Create a new {@link BoundingBoxWrapper} based on a {@link BoundingBox}.
+ *
+ * @param boundingBox bounding box instance
+ * @return new {@link BoundingBoxWrapper} instance
+ */
+ public static BoundingBoxWrapper of(BoundingBox boundingBox) {
+ return new BoundingBoxWrapper(
+ boundingBox.getMin(),
+ boundingBox.getMax()
+ );
+ }
+
+ /**
+ * Constructs a new {@link BoundingBox} based on wrapper values.
+ *
+ * @return new {@link BoundingBox} instance
+ */
+ public BoundingBox toBukkitBoundingBox() {
+ return BoundingBox.of(
+ corner1,
+ corner2
+ );
+ }
+
+}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/ColorWrapper.java b/src/main/java/de/eldoria/jacksonbukkit/entities/ColorWrapper.java
index 4d161af..9f5ccca 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/entities/ColorWrapper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/ColorWrapper.java
@@ -7,12 +7,29 @@
import org.bukkit.Color;
+/**
+ * Class for wrapping a {@link Color}.
+ *
+ * It also allows transformation to hex code and parsing of hex code.
+ */
public record ColorWrapper(int red, int green, int blue, int alpha) {
+ /**
+ * Create a new {@link ColorWrapper} based on a {@link Color}.
+ *
+ * @param color color instance
+ * @return new {@link ColorWrapper} instance
+ */
public static ColorWrapper of(Color color) {
return new ColorWrapper(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha());
}
+ /**
+ * Create a new {@link ColorWrapper} based on a hex string with RGBA or RGB.
+ *
+ * @param hex color as hex string
+ * @return new {@link ColorWrapper} instance
+ */
public static ColorWrapper of(String hex) {
int red = Integer.parseInt(hex.substring(0, 2), 16);
@@ -26,6 +43,11 @@ public static ColorWrapper of(String hex) {
return new ColorWrapper(red, green, blue, alpha);
}
+ /**
+ * Get the string as hex string with RGBA.
+ *
+ * @return hex color as RGBA
+ */
public String asHex() {
return "%02X%02X%02X%02X".formatted(red, green, blue, alpha);
}
@@ -34,6 +56,11 @@ private String pad(String s) {
return (s.length() == 1) ? "0" + s : s;
}
+ /**
+ * Constructs a new color instance based on wrapper values.
+ *
+ * @return new color instance
+ */
public Color toBukkitColor() {
return Color.fromARGB(alpha, red, green, blue);
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/FireworkEffectWrapper.java b/src/main/java/de/eldoria/jacksonbukkit/entities/FireworkEffectWrapper.java
index 86ae5be..d9f84c6 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/entities/FireworkEffectWrapper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/FireworkEffectWrapper.java
@@ -5,12 +5,36 @@
*/
package de.eldoria.jacksonbukkit.entities;
+import org.bukkit.Color;
import org.bukkit.FireworkEffect;
import java.util.List;
-public record FireworkEffectWrapper(FireworkEffect.Type type, List colors,
- List fadeColors, boolean flicker, boolean trail) {
+/**
+ * Class for wrapping a {@link FireworkEffect}.
+ */
+public record FireworkEffectWrapper(FireworkEffect.Type type, List colors, List fadeColors,
+ boolean flicker, boolean trail) {
+ /**
+ * Create a new {@link FireworkEffectWrapper} based on a {@link FireworkEffect}.
+ *
+ * @param fireworkEffect firework effect instance
+ * @return new {@link FireworkEffectWrapper} instance
+ */
+ public static FireworkEffectWrapper of(FireworkEffect fireworkEffect) {
+ FireworkEffect.Type type = fireworkEffect.getType();
+ List colors = fireworkEffect.getColors();
+ List fadeColors = fireworkEffect.getFadeColors();
+ boolean flicker = fireworkEffect.hasFlicker();
+ boolean trail = fireworkEffect.hasTrail();
+ return new FireworkEffectWrapper(type, colors, fadeColors, flicker, trail);
+ }
+
+ /**
+ * Constructs a new {@link FireworkEffect} based on wrapper values.
+ *
+ * @return new {@link FireworkEffect} instance
+ */
public FireworkEffect toFireworkEffect() {
return FireworkEffect.builder().with(type).withColor(colors).withFade(fadeColors).flicker(flicker).trail(trail).build();
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/InventoryWrapper.java b/src/main/java/de/eldoria/jacksonbukkit/entities/InventoryWrapper.java
index ae8c288..5f8ed94 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/entities/InventoryWrapper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/InventoryWrapper.java
@@ -9,8 +9,17 @@
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
+/**
+ * Class for wrapping an {@link Inventory}.
+ */
public record InventoryWrapper(InventoryType inventoryType, ItemStack[] contents) {
+ /**
+ * Create a new {@link InventoryWrapper} based on a {@link Inventory}.
+ *
+ * @param inventory inventory instance
+ * @return new {@link InventoryWrapper} instance
+ */
public static InventoryWrapper of(Inventory inventory) {
return new InventoryWrapper(inventory.getType(), inventory.getContents());
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/LocationWrapper.java b/src/main/java/de/eldoria/jacksonbukkit/entities/LocationWrapper.java
index a4b5b9e..ca6945a 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/entities/LocationWrapper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/LocationWrapper.java
@@ -12,17 +12,31 @@
import java.util.UUID;
+/**
+ * Class for wrapping a {@link Location}.
+ */
public record LocationWrapper(@Nullable UUID uid, @Nullable String name, double xCoord, double yCoord, double zCoord,
float yaw, float pitch) {
- public static LocationWrapper fromLocation(Location loc) {
+ /**
+ * Create a new {@link LocationWrapper} based on a {@link Location}.
+ *
+ * @param loc location instance
+ * @return new {@link LocationWrapper} instance
+ */
+ public static LocationWrapper of(Location loc) {
if (loc.getWorld() == null) {
return new LocationWrapper(null, null, loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
}
return new LocationWrapper(loc.getWorld().getUID(), loc.getWorld().getName(), loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
}
- public Location toLocation() {
+ /**
+ * Constructs a new {@link Location} based on wrapper values.
+ *
+ * @return new {@link Location} instance
+ */
+ public Location toBukkitLocation() {
if (uid != null && name != null) {
World world = Bukkit.getWorld(uid);
if (world == null) {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/NamespacedKeyWrapper.java b/src/main/java/de/eldoria/jacksonbukkit/entities/NamespacedKeyWrapper.java
index 53142ee..d7bcf2b 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/entities/NamespacedKeyWrapper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/NamespacedKeyWrapper.java
@@ -7,8 +7,26 @@
import org.bukkit.NamespacedKey;
+/**
+ * Class for wrapping a {@link NamespacedKey}.
+ */
public record NamespacedKeyWrapper(String namespace, String key) {
- public NamespacedKey toKey() {
+ /**
+ * Create a new {@link NamespacedKeyWrapper} based on a {@link NamespacedKey}.
+ *
+ * @param key namespaced key instance
+ * @return new {@link NamespacedKeyWrapper} instance
+ */
+ public static NamespacedKeyWrapper of(NamespacedKey key) {
+ return new NamespacedKeyWrapper(key.namespace(), key.getKey());
+ }
+
+ /**
+ * Constructs a new {@link NamespacedKey} based on wrapper values.
+ *
+ * @return new {@link NamespacedKey} instance
+ */
+ public NamespacedKey toBukkitNamespacedKey() {
return new NamespacedKey(namespace, key);
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/PatternWrapper.java b/src/main/java/de/eldoria/jacksonbukkit/entities/PatternWrapper.java
index 532d0f9..fb2340c 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/entities/PatternWrapper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/PatternWrapper.java
@@ -9,8 +9,20 @@
import org.bukkit.block.banner.Pattern;
import org.bukkit.block.banner.PatternType;
+/**
+ * Class for wrapping a {@link Pattern}.
+ */
public record PatternWrapper(DyeColor color, PatternType pattern) {
- public Pattern toPattern() {
+ public static PatternWrapper of(Pattern pattern) {
+ return new PatternWrapper(pattern.getColor(), pattern.getPattern());
+ }
+
+ /**
+ * Constructs a new {@link Pattern} based on wrapper values.
+ *
+ * @return new {@link Pattern} instance
+ */
+ public Pattern toBukkitPattern() {
return new Pattern(color, pattern);
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/PotionEffectWrapper.java b/src/main/java/de/eldoria/jacksonbukkit/entities/PotionEffectWrapper.java
index 48df65f..2848bf9 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/entities/PotionEffectWrapper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/PotionEffectWrapper.java
@@ -9,9 +9,35 @@
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
+/**
+ * Class for wrapping a {@link PotionEffect}.
+ */
public record PotionEffectWrapper(int amplifier, int duration, NamespacedKey type, boolean ambient, boolean particles,
boolean icon) {
- public PotionEffect toPotionEffect() {
+
+ /**
+ * Create a new {@link PotionEffectWrapper} based on a {@link PotionEffect}.
+ *
+ * @param effect potion effect instance
+ * @return new {@link PotionEffectWrapper} instance
+ */
+ public static PotionEffectWrapper of(PotionEffect effect) {
+ int amplifier = effect.getAmplifier();
+ int duration = effect.getDuration();
+ PotionEffectType type = effect.getType();
+ boolean ambient = effect.isAmbient();
+ boolean icon = effect.hasIcon();
+ boolean particles = effect.hasParticles();
+ return new PotionEffectWrapper(amplifier, duration, type.getKey(), ambient, particles, icon);
+
+ }
+
+ /**
+ * Constructs a new {@link PotionEffect} based on wrapper values.
+ *
+ * @return new {@link PotionEffect} instance
+ */
+ public PotionEffect toBukkitPotionEffect() {
return new PotionEffect(PotionEffectType.getByKey(type), duration, amplifier, ambient, particles, icon);
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/VectorWrapper.java b/src/main/java/de/eldoria/jacksonbukkit/entities/VectorWrapper.java
index 0576a3e..d09c5b7 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/entities/VectorWrapper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/VectorWrapper.java
@@ -6,16 +6,33 @@
package de.eldoria.jacksonbukkit.entities;
import org.bukkit.util.BlockVector;
+import org.bukkit.util.Vector;
+/**
+ * Class for wrapping a {@link Vector}.
+ *
+ * Allows creation of a {@link Vector} or {@link BlockVector}.
+ */
public record VectorWrapper(double xCoord, double yCoord, double zCoord) {
- public static VectorWrapper of(org.bukkit.util.Vector vector) {
+ /**
+ * Create a new {@link VectorWrapper} based on a {@link Vector}.
+ *
+ * @param vector vector instance
+ * @return new {@link VectorWrapper} instance
+ */
+ public static VectorWrapper of(Vector vector) {
return new VectorWrapper(vector.getX(), vector.getY(), vector.getZ());
}
- public org.bukkit.util.Vector toBukkitVector() {
- return new org.bukkit.util.Vector(xCoord, yCoord, zCoord);
+ public Vector toBukkitVector() {
+ return new Vector(xCoord, yCoord, zCoord);
}
+ /**
+ * Constructs a new {@link BlockVector} based on wrapper values.
+ *
+ * @return new {@link BlockVector} instance
+ */
public BlockVector toBukkitBlockVector() {
return new BlockVector(xCoord, yCoord, zCoord);
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/package-info.java b/src/main/java/de/eldoria/jacksonbukkit/entities/package-info.java
new file mode 100644
index 0000000..05ac9be
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Package containing wrapper classes for serialization and deserialization
+ */
+
+package de.eldoria.jacksonbukkit.entities;
diff --git a/src/main/java/de/eldoria/jacksonbukkit/package-info.java b/src/main/java/de/eldoria/jacksonbukkit/package-info.java
new file mode 100644
index 0000000..13087aa
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Main package containing the {@link com.fasterxml.jackson.databind.Module} implementations.
+ */
+
+package de.eldoria.jacksonbukkit;
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/AttributeModifierSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/AttributeModifierSerializer.java
index 9627b42..69d3724 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/AttributeModifierSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/AttributeModifierSerializer.java
@@ -13,6 +13,9 @@
import java.io.IOException;
+/**
+ * Class for serialization of {@link AttributeModifier}.
+ */
public class AttributeModifierSerializer extends JsonSerializer {
@Override
public void serialize(AttributeModifier value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/BlockVectorSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/BlockVectorSerializer.java
index e6c8a19..2e0d7dd 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/BlockVectorSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/BlockVectorSerializer.java
@@ -13,6 +13,9 @@
import java.io.IOException;
+/**
+ * Class for serialization of {@link BlockVector}.
+ */
public class BlockVectorSerializer extends JsonSerializer {
@Override
public void serialize(BlockVector value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/BoundingBoxSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/BoundingBoxSerializer.java
index e4a5d1f..6dccc6f 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/BoundingBoxSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/BoundingBoxSerializer.java
@@ -8,13 +8,17 @@
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
+import de.eldoria.jacksonbukkit.entities.BoundingBoxWrapper;
import org.bukkit.util.BoundingBox;
import java.io.IOException;
+/**
+ * Class for serialization of {@link BoundingBox}.
+ */
public class BoundingBoxSerializer extends JsonSerializer {
@Override
public void serialize(BoundingBox value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- gen.writeObject(de.eldoria.jacksonbukkit.entities.BoundingBox.of(value));
+ gen.writeObject(BoundingBoxWrapper.of(value));
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/BukkitItemStackSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/BukkitItemStackSerializer.java
index c046801..bfabf07 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/BukkitItemStackSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/BukkitItemStackSerializer.java
@@ -11,8 +11,10 @@
import org.bukkit.inventory.ItemStack;
import java.io.IOException;
-import java.util.Base64;
+/**
+ * Class for serialization of {@link ItemStack}.
+ */
public class BukkitItemStackSerializer extends JsonSerializer {
@Override
public void serialize(ItemStack value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/ColorSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/ColorSerializer.java
index cedb642..7b98787 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/ColorSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/ColorSerializer.java
@@ -13,6 +13,9 @@
import java.io.IOException;
+/**
+ * Class for serialization of {@link Color}.
+ */
public class ColorSerializer extends JsonSerializer {
@Override
public void serialize(Color value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/FireworkEffectSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/FireworkEffectSerializer.java
index ede76f5..d994099 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/FireworkEffectSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/FireworkEffectSerializer.java
@@ -9,20 +9,16 @@
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import de.eldoria.jacksonbukkit.entities.FireworkEffectWrapper;
-import org.bukkit.Color;
import org.bukkit.FireworkEffect;
import java.io.IOException;
-import java.util.List;
+/**
+ * Class for serialization of {@link FireworkEffect}.
+ */
public class FireworkEffectSerializer extends JsonSerializer {
@Override
public void serialize(FireworkEffect value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- FireworkEffect.Type type = value.getType();
- List colors = value.getColors();
- List fadeColors = value.getFadeColors();
- boolean flicker = value.hasFlicker();
- boolean trail = value.hasTrail();
- gen.writeObject(new FireworkEffectWrapper(type, colors, fadeColors, flicker, trail));
+ gen.writeObject(FireworkEffectWrapper.of(value));
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/HexColorSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/HexColorSerializer.java
index a642266..a9194f3 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/HexColorSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/HexColorSerializer.java
@@ -13,6 +13,9 @@
import java.io.IOException;
+/**
+ * Class for serialization of {@link Color}.
+ */
public class HexColorSerializer extends JsonSerializer {
@Override
public void serialize(Color value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/InventorySerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/InventorySerializer.java
index be95d61..f063503 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/InventorySerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/InventorySerializer.java
@@ -12,6 +12,9 @@
import java.io.IOException;
+/**
+ * Class for serialization of {@link InventoryWrapper}.
+ */
public class InventorySerializer extends JsonSerializer {
@Override
public void serialize(InventoryWrapper value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/LocationSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/LocationSerializer.java
index 046325b..878ab96 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/LocationSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/LocationSerializer.java
@@ -13,9 +13,12 @@
import java.io.IOException;
+/**
+ * Class for serialization of {@link Location}.
+ */
public class LocationSerializer extends JsonSerializer {
@Override
public void serialize(Location value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- gen.writeObject(LocationWrapper.fromLocation(value));
+ gen.writeObject(LocationWrapper.of(value));
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/NamespacedKeySerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/NamespacedKeySerializer.java
index 5e34cda..ab87299 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/NamespacedKeySerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/NamespacedKeySerializer.java
@@ -13,9 +13,12 @@
import java.io.IOException;
+/**
+ * Class for serialization of {@link NamespacedKey}.
+ */
public class NamespacedKeySerializer extends JsonSerializer {
@Override
public void serialize(NamespacedKey value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- gen.writeObject(new NamespacedKeyWrapper(value.namespace(), value.getKey()));
+ gen.writeObject(NamespacedKeyWrapper.of(value));
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/PaperItemStackSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/PaperItemStackSerializer.java
index 07c3ca8..16658d9 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/PaperItemStackSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/PaperItemStackSerializer.java
@@ -13,6 +13,9 @@
import java.io.IOException;
import java.util.Base64;
+/**
+ * Class for serialization of {@link ItemStack} as {@code byte[]}.
+ */
public class PaperItemStackSerializer extends JsonSerializer {
@Override
public void serialize(ItemStack value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/PatternSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/PatternSerializer.java
index f1ab982..52ba4d8 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/PatternSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/PatternSerializer.java
@@ -13,9 +13,12 @@
import java.io.IOException;
+/**
+ * Class for serialization of {@link Pattern}.
+ */
public class PatternSerializer extends JsonSerializer {
@Override
public void serialize(Pattern value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- gen.writeObject(new PatternWrapper(value.getColor(), value.getPattern()));
+ gen.writeObject(PatternWrapper.of(value));
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/PlayerSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/PlayerSerializer.java
index 1acf46e..72f4f47 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/PlayerSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/PlayerSerializer.java
@@ -12,6 +12,9 @@
import java.io.IOException;
+/**
+ * Class for serialization of {@link OfflinePlayer}.
+ */
public class PlayerSerializer extends JsonSerializer {
@Override
public void serialize(OfflinePlayer value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/PotionEffectSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/PotionEffectSerializer.java
index 36431ac..754e4da 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/PotionEffectSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/PotionEffectSerializer.java
@@ -10,19 +10,15 @@
import com.fasterxml.jackson.databind.SerializerProvider;
import de.eldoria.jacksonbukkit.entities.PotionEffectWrapper;
import org.bukkit.potion.PotionEffect;
-import org.bukkit.potion.PotionEffectType;
import java.io.IOException;
+/**
+ * Class for serialization of {@link PotionEffect}.
+ */
public class PotionEffectSerializer extends JsonSerializer {
@Override
public void serialize(PotionEffect value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- int amplifier = value.getAmplifier();
- int duration = value.getDuration();
- PotionEffectType type = value.getType();
- boolean ambient = value.isAmbient();
- boolean icon = value.hasIcon();
- boolean particles = value.hasParticles();
- gen.writeObject(new PotionEffectWrapper(amplifier, duration, type.getKey(), ambient, particles, icon));
+ gen.writeObject(PotionEffectWrapper.of(value));
}
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/VectorSerializer.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/VectorSerializer.java
index 23ef879..4966487 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/serializer/VectorSerializer.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/VectorSerializer.java
@@ -13,6 +13,9 @@
import java.io.IOException;
+/**
+ * Class for serialization of {@link Vector}.
+ */
public class VectorSerializer extends JsonSerializer {
@Override
public void serialize(Vector value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
diff --git a/src/main/java/de/eldoria/jacksonbukkit/serializer/package-info.java b/src/main/java/de/eldoria/jacksonbukkit/serializer/package-info.java
new file mode 100644
index 0000000..74c0e97
--- /dev/null
+++ b/src/main/java/de/eldoria/jacksonbukkit/serializer/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Package containing serializers.
+ */
+package de.eldoria.jacksonbukkit.serializer;
From af0b387875b152915246f49a60383245e1470a9c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20F=C3=BClling?=
<46890129+RainbowDashLabs@users.noreply.github.com>
Date: Fri, 17 Mar 2023 15:19:04 +0100
Subject: [PATCH 6/7] Bump version
---
build.gradle.kts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build.gradle.kts b/build.gradle.kts
index e3321ca..ecd5f32 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -10,7 +10,7 @@ plugins {
}
group = "de.eldoria"
-version = "1.0.1"
+version = "1.0.2"
repositories {
mavenCentral()
From cfd19c55c70dfb8dc5317fcff836722ec3fd60bd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20F=C3=BClling?=
<46890129+RainbowDashLabs@users.noreply.github.com>
Date: Fri, 17 Mar 2023 15:24:28 +0100
Subject: [PATCH 7/7] Update docs
---
Readme.md | 2 +-
.../eldoria/jacksonbukkit/JacksonBukkit.java | 19 ++++++++++++++++++-
.../eldoria/jacksonbukkit/JacksonPaper.java | 10 +++++++++-
.../jacksonbukkit/builder/ModuleBuilder.java | 3 +++
.../entities/PatternWrapper.java | 7 +++++++
.../jacksonbukkit/entities/VectorWrapper.java | 5 +++++
6 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/Readme.md b/Readme.md
index ede32f0..c8964fc 100644
--- a/Readme.md
+++ b/Readme.md
@@ -75,7 +75,7 @@ There are some more customizations
Colors will be read and written to an object containing a value for red, green, blue and alpha by default.
By calling `ModuleBuilder#colorAsHex()` you can enable hex codes.
This will attempt to read each color as a HEX string with RGBA or RGB format.
-It will also write colors as ARGB.
+It will also write colors as RGBA.
**Warning:** As of now you can use either way, but not both at the same time. Mixing up format will cause errors.
diff --git a/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java b/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java
index 2414c17..be059e9 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/JacksonBukkit.java
@@ -77,15 +77,22 @@
* {@link OfflinePlayer}
* {@link Inventory} via {@link InventoryWrapper}
*
- *
*/
public class JacksonBukkit extends Module {
private final boolean hexColors;
+ /**
+ * Create a new JacksonBukkit module.
+ *
+ * @param hexColors true to serialize colors as hex by default
+ */
public JacksonBukkit(boolean hexColors) {
this.hexColors = hexColors;
}
+ /**
+ * Create a new JacksonPaper module.
+ */
public JacksonBukkit() {
hexColors = false;
}
@@ -143,6 +150,11 @@ public void setupModule(SetupContext context) {
context.addDeserializers(deserializers);
}
+ /**
+ * Add serializer to the serializers
+ *
+ * @param serializers serializers
+ */
protected void addSerializer(SimpleSerializers serializers) {
serializers.addSerializer(Vector.class, new VectorSerializer());
serializers.addSerializer(BlockVector.class, new BlockVectorSerializer());
@@ -159,6 +171,11 @@ protected void addSerializer(SimpleSerializers serializers) {
serializers.addSerializer(InventoryWrapper.class, new InventorySerializer());
}
+ /**
+ * Add deserializer to the deserializers
+ *
+ * @param deserializers deserializers
+ */
protected void addDeserializer(SimpleDeserializers deserializers) {
deserializers.addDeserializer(Vector.class, new VectorDeserializer());
deserializers.addDeserializer(BlockVector.class, new BlockVectorDeserializer());
diff --git a/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java b/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java
index 727cc42..57ce6ef 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/JacksonPaper.java
@@ -47,16 +47,24 @@
*
{@link OfflinePlayer}
* {@link Inventory} via {@link InventoryWrapper}
*
- *
*/
public class JacksonPaper extends JacksonBukkit {
private final boolean legacyItemStackSerialization;
+ /**
+ * Create a new JacksonPaper module.
+ *
+ * @param hexColors true to serialize colors as hex by default
+ * @param legacyItemStackSerialization true to use spigot based serialization
+ */
public JacksonPaper(boolean hexColors, boolean legacyItemStackSerialization) {
super(hexColors);
this.legacyItemStackSerialization = legacyItemStackSerialization;
}
+ /**
+ * Create a new JacksonPaper module.
+ */
public JacksonPaper() {
super();
legacyItemStackSerialization = false;
diff --git a/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java b/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java
index 0f935e0..16ed981 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/builder/ModuleBuilder.java
@@ -14,6 +14,9 @@
* @param type of created module
*/
public abstract class ModuleBuilder {
+ /**
+ * Whether hex colors should be serialized as hex or not.
+ */
protected boolean hexColors = false;
/**
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/PatternWrapper.java b/src/main/java/de/eldoria/jacksonbukkit/entities/PatternWrapper.java
index fb2340c..bbf8302 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/entities/PatternWrapper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/PatternWrapper.java
@@ -8,11 +8,18 @@
import org.bukkit.DyeColor;
import org.bukkit.block.banner.Pattern;
import org.bukkit.block.banner.PatternType;
+import org.bukkit.potion.PotionEffect;
/**
* Class for wrapping a {@link Pattern}.
*/
public record PatternWrapper(DyeColor color, PatternType pattern) {
+ /**
+ * Create a new {@link PatternWrapper} based on a {@link Pattern}.
+ *
+ * @param pattern pattern instance
+ * @return new {@link PatternWrapper} instance
+ */
public static PatternWrapper of(Pattern pattern) {
return new PatternWrapper(pattern.getColor(), pattern.getPattern());
}
diff --git a/src/main/java/de/eldoria/jacksonbukkit/entities/VectorWrapper.java b/src/main/java/de/eldoria/jacksonbukkit/entities/VectorWrapper.java
index d09c5b7..1d938bd 100644
--- a/src/main/java/de/eldoria/jacksonbukkit/entities/VectorWrapper.java
+++ b/src/main/java/de/eldoria/jacksonbukkit/entities/VectorWrapper.java
@@ -24,6 +24,11 @@ public static VectorWrapper of(Vector vector) {
return new VectorWrapper(vector.getX(), vector.getY(), vector.getZ());
}
+ /**
+ * Constructs a new {@link Vector} based on wrapper values.
+ *
+ * @return new {@link Vector} instance
+ */
public Vector toBukkitVector() {
return new Vector(xCoord, yCoord, zCoord);
}