From 25c216b4f6ce03166ab6eddb07265f54971c272d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Mon, 4 Jan 2021 15:02:08 +0100 Subject: [PATCH] Fixed string array serialization, fixes VFS serialization. --- .../serialization/NBTSerialization.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/java/li/cil/oc2/common/serialization/NBTSerialization.java b/src/main/java/li/cil/oc2/common/serialization/NBTSerialization.java index 9b65a9be..30e5157d 100644 --- a/src/main/java/li/cil/oc2/common/serialization/NBTSerialization.java +++ b/src/main/java/li/cil/oc2/common/serialization/NBTSerialization.java @@ -608,13 +608,15 @@ public final class NBTSerialization { @Override public Object deserialize(final INBT nbt, final Class type, @Nullable final Object into) { String[] data = (String[]) into; - if (nbt instanceof ListNBT && ((ListNBT) nbt).getTagType() == NBTTagIds.TAG_STRING) { + if (nbt instanceof ListNBT) { final ListNBT serializedData = (ListNBT) nbt; - if (data == null || data.length != serializedData.size()) { - data = new String[serializedData.size()]; - } - for (int i = 0; i < serializedData.size(); i++) { - data[i] = serializedData.getString(i); + if (serializedData.isEmpty() || serializedData.getTagType() == NBTTagIds.TAG_STRING) { + if (data == null || data.length != serializedData.size()) { + data = new String[serializedData.size()]; + } + for (int i = 0; i < serializedData.size(); i++) { + data[i] = serializedData.getString(i); + } } } return data; @@ -635,13 +637,15 @@ public final class NBTSerialization { @Override public Object deserialize(final INBT nbt, final Class type, @Nullable final Object into) { UUID[] data = (UUID[]) into; - if (nbt instanceof ListNBT && ((ListNBT) nbt).getTagType() == NBTTagIds.TAG_STRING) { + if (nbt instanceof ListNBT) { final ListNBT serializedData = (ListNBT) nbt; - if (data == null || data.length != serializedData.size()) { - data = new UUID[serializedData.size()]; - } - for (int i = 0; i < serializedData.size(); i++) { - data[i] = UUID.fromString(serializedData.getString(i)); + if (serializedData.isEmpty() || serializedData.getTagType() == NBTTagIds.TAG_STRING) { + if (data == null || data.length != serializedData.size()) { + data = new UUID[serializedData.size()]; + } + for (int i = 0; i < serializedData.size(); i++) { + data[i] = UUID.fromString(serializedData.getString(i)); + } } } return data;