diff --git a/src/main/java/com/onarandombox/multiverseinventories/share/InventorySerializer.java b/src/main/java/com/onarandombox/multiverseinventories/share/InventorySerializer.java index e1baa956..8eb267dd 100644 --- a/src/main/java/com/onarandombox/multiverseinventories/share/InventorySerializer.java +++ b/src/main/java/com/onarandombox/multiverseinventories/share/InventorySerializer.java @@ -32,7 +32,7 @@ public Object serialize(ItemStack[] itemStacks) { private Map mapSlots(ItemStack[] itemStacks) { Map result = new HashMap<>(itemStacks.length); for (int i = 0; i < itemStacks.length; i++) { - if (itemStacks[i] != null && itemStacks[i].getType() != Material.AIR) { + if (itemStacks[i] != null && itemStacks[i].getType() != Material.AIR && itemStacks[i].getAmount() > 0) { result.put(Integer.toString(i), itemStacks[i]); } } diff --git a/src/main/java/com/onarandombox/multiverseinventories/share/ItemStackSerializer.java b/src/main/java/com/onarandombox/multiverseinventories/share/ItemStackSerializer.java new file mode 100644 index 00000000..d5fa3df3 --- /dev/null +++ b/src/main/java/com/onarandombox/multiverseinventories/share/ItemStackSerializer.java @@ -0,0 +1,19 @@ +package com.onarandombox.multiverseinventories.share; + +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +public class ItemStackSerializer implements SharableSerializer { + @Override + public ItemStack deserialize(Object obj) { + return obj instanceof ItemStack ? (ItemStack) obj : null; + } + + @Override + public Object serialize(ItemStack itemStack) { + if (itemStack == null || itemStack.getType() == Material.AIR || itemStack.getAmount() == 0) { + return null; + } + return itemStack; + } +} diff --git a/src/main/java/com/onarandombox/multiverseinventories/share/Sharables.java b/src/main/java/com/onarandombox/multiverseinventories/share/Sharables.java index c66aec90..9232c8c9 100644 --- a/src/main/java/com/onarandombox/multiverseinventories/share/Sharables.java +++ b/src/main/java/com/onarandombox/multiverseinventories/share/Sharables.java @@ -148,7 +148,7 @@ public boolean updatePlayer(Player player, PlayerProfile profile) { return true; } }).serializer(new ProfileEntry(false, DataStrings.PLAYER_OFF_HAND_ITEM), - new DefaultSerializer<>(ItemStack.class)).altName("shield").build(); + new ItemStackSerializer()).altName("shield").build(); /** * Sharing Health.