From 9cd712ea2aa8c163def3d6df4d60de0b8a830a96 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Wed, 13 May 2020 17:05:34 +0300 Subject: [PATCH] add Text serializer --- .../mc/protocol/utils/json/JsonUtils.java | 2 + .../utils/json/serializer/TextSerializer.java | 65 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 src/main/java/mc/protocol/utils/json/serializer/TextSerializer.java diff --git a/src/main/java/mc/protocol/utils/json/JsonUtils.java b/src/main/java/mc/protocol/utils/json/JsonUtils.java index ae01d6e..ca714ab 100644 --- a/src/main/java/mc/protocol/utils/json/JsonUtils.java +++ b/src/main/java/mc/protocol/utils/json/JsonUtils.java @@ -7,6 +7,7 @@ import lombok.experimental.UtilityClass; import lombok.extern.slf4j.Slf4j; import mc.protocol.text.Text; import mc.protocol.utils.json.serializer.TextDeserializer; +import mc.protocol.utils.json.serializer.TextSerializer; import java.util.Optional; @@ -45,6 +46,7 @@ public class JsonUtils { if (objectMapper == null) { SimpleModule module = new SimpleModule(); module.addDeserializer(Text.class, new TextDeserializer()); + module.addSerializer(Text.class, new TextSerializer()); objectMapper = new ObjectMapper(); objectMapper.registerModule(module); diff --git a/src/main/java/mc/protocol/utils/json/serializer/TextSerializer.java b/src/main/java/mc/protocol/utils/json/serializer/TextSerializer.java new file mode 100644 index 0000000..c93e2ca --- /dev/null +++ b/src/main/java/mc/protocol/utils/json/serializer/TextSerializer.java @@ -0,0 +1,65 @@ +package mc.protocol.utils.json.serializer; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import mc.protocol.text.Text; +import mc.protocol.text.TextStyle; + +import java.io.IOException; + +public class TextSerializer extends StdSerializer { + + public TextSerializer() { + this(null); + } + + public TextSerializer(Class t) { + super(t); + } + + @Override + public void serialize(Text text, JsonGenerator gen, SerializerProvider provider) throws IOException { + gen.writeStartObject(); + + gen.writeStringField("text", text.getContent()); + + if (text.getColor() != null) { + gen.writeStringField("colot", text.getColor().getName()); + } + + if (text.getStyle() != null) { + final TextStyle style = text.getStyle(); + + if (style.getBold().isPresent()) { + gen.writeBooleanField("bold", style.getBold().get()); + } + + if (style.getItalic().isPresent()) { + gen.writeBooleanField("italic", style.getItalic().get()); + } + + if (style.getObfuscated().isPresent()) { + gen.writeBooleanField("obfuscated", style.getObfuscated().get()); + } + + if (style.getStrikethrough().isPresent()) { + gen.writeBooleanField("strikethrough", style.getStrikethrough().get()); + } + + if (style.getUnderline().isPresent()) { + gen.writeBooleanField("underlined", style.getUnderline().get()); + } + } + + if (text.getChildren() != null) { + gen.writeArrayFieldStart("extra"); + for (Text textChild : text.getChildren()) { + serialize(textChild, gen, provider); + } + gen.writeEndArray(); + } + + gen.writeEndObject(); + } +}