diff --git a/src/main/java/io/wispforest/owo/serialization/format/edm/LenientEdmDeserializer.java b/src/main/java/io/wispforest/owo/serialization/format/edm/LenientEdmDeserializer.java index 9c40f0a2..e2c1a331 100644 --- a/src/main/java/io/wispforest/owo/serialization/format/edm/LenientEdmDeserializer.java +++ b/src/main/java/io/wispforest/owo/serialization/format/edm/LenientEdmDeserializer.java @@ -1,7 +1,10 @@ package io.wispforest.owo.serialization.format.edm; +import io.wispforest.owo.serialization.Endec; import io.wispforest.owo.serialization.SerializationAttribute; +import java.util.Optional; + public class LenientEdmDeserializer extends EdmDeserializer { public LenientEdmDeserializer(EdmElement serialized, SerializationAttribute... extraAttributes) { @@ -52,4 +55,18 @@ public boolean readBoolean() { return super.readBoolean(); } + + + @Override + public Optional readOptional(Endec endec) { + var edmElement = this.getValue(); + + if(edmElement == null){ + return Optional.empty(); + } else if(edmElement.value() instanceof Optional){ + return super.readOptional(endec); + } else { + return Optional.of(endec.decode(this)); + } + } }