diff --git a/src/main/java/dev/plex/punishment/Punishment.java b/src/main/java/dev/plex/punishment/Punishment.java index a1365f9..62c2b36 100644 --- a/src/main/java/dev/plex/punishment/Punishment.java +++ b/src/main/java/dev/plex/punishment/Punishment.java @@ -7,6 +7,9 @@ import java.time.LocalDateTime; import java.util.Date; import java.util.List; import java.util.UUID; + +import com.google.gson.GsonBuilder; +import dev.plex.util.adapter.LocalDateTimeAdapter; import lombok.Getter; import lombok.Setter; @@ -41,11 +44,11 @@ public class Punishment public String toJSON() { - return new Gson().toJson(this); + return new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeAdapter()).create().toJson(this); } public static Punishment fromJson(String json) { - return new Gson().fromJson(json, Punishment.class); + return new GsonBuilder().registerTypeAdapter(LocalDateTime.class, new LocalDateTimeAdapter()).create().fromJson(json, Punishment.class); } } diff --git a/src/main/java/dev/plex/util/MojangUtils.java b/src/main/java/dev/plex/util/MojangUtils.java index c1c51c8..7c05992 100644 --- a/src/main/java/dev/plex/util/MojangUtils.java +++ b/src/main/java/dev/plex/util/MojangUtils.java @@ -75,6 +75,12 @@ public class MojangUtils { e.printStackTrace(); } - return names.entrySet().stream().sorted(Map.Entry.comparingByValue()).collect(Collectors.toList()); + return names.entrySet().stream().sorted(Map.Entry.comparingByValue((o1, o2) -> { + if (o1 == null || o2 == null) + { + return 1; + } + return o1.compareTo(o2); + })).collect(Collectors.toList()); } } diff --git a/src/main/java/dev/plex/util/adapter/LocalDateTimeAdapter.java b/src/main/java/dev/plex/util/adapter/LocalDateTimeAdapter.java new file mode 100644 index 0000000..9288761 --- /dev/null +++ b/src/main/java/dev/plex/util/adapter/LocalDateTimeAdapter.java @@ -0,0 +1,19 @@ +package dev.plex.util.adapter; + +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + +import java.lang.reflect.Type; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class LocalDateTimeAdapter implements JsonSerializer +{ + @Override + public JsonElement serialize(LocalDateTime src, Type typeOfSrc, JsonSerializationContext context) + { + return new JsonPrimitive(src.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)); + } +}