diff --git a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/GameArgument.java b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/GameArgument.java index bc4bfbd..5c4046d 100644 --- a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/GameArgument.java +++ b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/GameArgument.java @@ -4,9 +4,11 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import com.skcraft.launcher.model.minecraft.mapper.ArgumentValueDeserializer; +import com.skcraft.launcher.model.minecraft.mapper.ArgumentValueSerializer; import com.skcraft.launcher.util.Environment; import lombok.Data; import lombok.NoArgsConstructor; @@ -19,6 +21,7 @@ public class GameArgument { @JsonProperty("value") @JsonDeserialize(using = ArgumentValueDeserializer.class) + @JsonSerialize(using = ArgumentValueSerializer.class) private List values; private List rules; diff --git a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/mapper/ArgumentValueSerializer.java b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/mapper/ArgumentValueSerializer.java new file mode 100644 index 0000000..94b00b2 --- /dev/null +++ b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/mapper/ArgumentValueSerializer.java @@ -0,0 +1,25 @@ +package com.skcraft.launcher.model.minecraft.mapper; + +import com.fasterxml.jackson.core.JsonGenerationException; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import com.fasterxml.jackson.databind.type.TypeFactory; + +import java.io.IOException; +import java.util.List; + +public class ArgumentValueSerializer extends StdSerializer> { + protected ArgumentValueSerializer() { + super(TypeFactory.defaultInstance().constructCollectionType(List.class, String.class)); + } + + @Override + public void serialize(List value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonGenerationException { + if (value.size() == 1) { + jgen.writeString(value.get(0)); + } else { + provider.defaultSerializeValue(value, jgen); + } + } +}