diff --git a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java index 938754d0af..db0491ac56 100644 --- a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java +++ b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/BlockDataController.java @@ -1095,11 +1095,15 @@ private void scheduleBlockInvUpdate(ScopeKey scopeKey, RecordKey reqKey, String if (item == null) { scheduleDeleteTask(scopeKey, reqKey, true); } else { - var data = new RecordSet(); - data.put(FieldKey.LOCATION, lKey); - data.put(FieldKey.INVENTORY_SLOT, slot + ""); - data.put(FieldKey.INVENTORY_ITEM, item); - scheduleWriteTask(scopeKey, reqKey, data, true); + try { + var data = new RecordSet(); + data.put(FieldKey.LOCATION, lKey); + data.put(FieldKey.INVENTORY_SLOT, slot + ""); + data.put(FieldKey.INVENTORY_ITEM, item); + scheduleWriteTask(scopeKey, reqKey, data, true); + } catch (IllegalArgumentException e) { + Slimefun.logger().log(Level.WARNING, e.getMessage()); + } } } @@ -1132,11 +1136,15 @@ private void scheduleUniversalInvUpdate(ScopeKey scopeKey, RecordKey reqKey, UUI if (item == null) { scheduleDeleteTask(scopeKey, reqKey, true); } else { - var data = new RecordSet(); - data.put(FieldKey.UNIVERSAL_UUID, uuid.toString()); - data.put(FieldKey.INVENTORY_SLOT, slot + ""); - data.put(FieldKey.INVENTORY_ITEM, item); - scheduleWriteTask(scopeKey, reqKey, data, true); + try { + var data = new RecordSet(); + data.put(FieldKey.UNIVERSAL_UUID, uuid.toString()); + data.put(FieldKey.INVENTORY_SLOT, slot + ""); + data.put(FieldKey.INVENTORY_ITEM, item); + scheduleWriteTask(scopeKey, reqKey, data, true); + } catch (IllegalArgumentException e) { + Slimefun.logger().log(Level.WARNING, e.getMessage()); + } } } diff --git a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/ProfileDataController.java b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/ProfileDataController.java index 3ef46d09b8..a373e9661d 100644 --- a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/ProfileDataController.java +++ b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/controller/ProfileDataController.java @@ -10,12 +10,14 @@ import io.github.thebusybiscuit.slimefun4.api.player.PlayerBackpack; import io.github.thebusybiscuit.slimefun4.api.player.PlayerProfile; import io.github.thebusybiscuit.slimefun4.api.researches.Research; +import io.github.thebusybiscuit.slimefun4.implementation.Slimefun; import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; +import java.util.logging.Level; import java.util.stream.Collectors; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -275,11 +277,15 @@ public void saveBackpackInventory(PlayerBackpack bp, Set slots) { if (is == null) { scheduleDeleteTask(new UUIDKey(DataScope.NONE, bp.getOwner().getUniqueId()), key, false); } else { - var data = new RecordSet(); - data.put(FieldKey.BACKPACK_ID, id); - data.put(FieldKey.INVENTORY_SLOT, slot + ""); - data.put(FieldKey.INVENTORY_ITEM, is); - scheduleWriteTask(new UUIDKey(DataScope.NONE, bp.getOwner().getUniqueId()), key, data, false); + try { + var data = new RecordSet(); + data.put(FieldKey.BACKPACK_ID, id); + data.put(FieldKey.INVENTORY_SLOT, slot + ""); + data.put(FieldKey.INVENTORY_ITEM, is); + scheduleWriteTask(new UUIDKey(DataScope.NONE, bp.getOwner().getUniqueId()), key, data, false); + } catch (IllegalArgumentException e) { + Slimefun.logger().log(Level.WARNING, e.getMessage()); + } } }); } diff --git a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/util/DataUtils.java b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/util/DataUtils.java index 38d6f04c13..fc9409a01a 100644 --- a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/util/DataUtils.java +++ b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/util/DataUtils.java @@ -20,6 +20,10 @@ public class DataUtils { public static String itemStack2String(ItemStack itemStack) { Debug.log(TestCase.BACKPACK, "Serializing itemstack: " + itemStack); + if (itemStack == null) { + return ""; + } + var stream = new ByteArrayOutputStream(); try (var bs = new BukkitObjectOutputStream(stream)) { bs.writeObject(itemStack);