Fix #118, armor being duplicated.
This commit is contained in:
		@@ -275,7 +275,6 @@ public class PrisonerManager {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                            //Get the separate inventory, so we can iterate of them
 | 
					                            //Get the separate inventory, so we can iterate of them
 | 
				
			||||||
                            ItemStack[] inventory = player.getInventory().getContents();
 | 
					                            ItemStack[] inventory = player.getInventory().getContents();
 | 
				
			||||||
                            ItemStack[] armor = player.getInventory().getArmorContents();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            for(ItemStack item : inventory) {
 | 
					                            for(ItemStack item : inventory) {
 | 
				
			||||||
                                if(item != null) {
 | 
					                                if(item != null) {
 | 
				
			||||||
@@ -288,18 +287,6 @@ public class PrisonerManager {
 | 
				
			|||||||
                                }
 | 
					                                }
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            
 | 
					                            
 | 
				
			||||||
                            for(ItemStack item : armor) {
 | 
					 | 
				
			||||||
                                if(item != null) {
 | 
					 | 
				
			||||||
                                    if(!Util.isStringInsideList(item.getType().toString(), blacklist)) {
 | 
					 | 
				
			||||||
                                        int i = chest.firstEmpty();
 | 
					 | 
				
			||||||
                                        if(i != -1) {//Check that we have got a free spot, should never happen but just in case
 | 
					 | 
				
			||||||
                                            chest.setItem(i, item);
 | 
					 | 
				
			||||||
                                        }
 | 
					 | 
				
			||||||
                                    }
 | 
					 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                            player.getInventory().setArmorContents(null);
 | 
					 | 
				
			||||||
                            player.getInventory().clear();
 | 
					                            player.getInventory().clear();
 | 
				
			||||||
                        }else {
 | 
					                        }else {
 | 
				
			||||||
                            for(ItemStack item : player.getInventory().getContents())
 | 
					                            for(ItemStack item : player.getInventory().getContents())
 | 
				
			||||||
@@ -312,9 +299,7 @@ public class PrisonerManager {
 | 
				
			|||||||
                                    if(Util.isStringInsideList(item.getType().toString(), blacklist))
 | 
					                                    if(Util.isStringInsideList(item.getType().toString(), blacklist))
 | 
				
			||||||
                                        player.getInventory().remove(item);
 | 
					                                        player.getInventory().remove(item);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            String[] inv = Util.playerInventoryToBase64(player.getInventory());
 | 
					                            prisoner.setInventory(Util.toBase64(player.getInventory()));
 | 
				
			||||||
                            prisoner.setInventory(inv[0]);
 | 
					 | 
				
			||||||
                            prisoner.setArmor(inv[1]);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            player.getInventory().setArmorContents(null);
 | 
					                            player.getInventory().setArmorContents(null);
 | 
				
			||||||
                            player.getInventory().clear();
 | 
					                            player.getInventory().clear();
 | 
				
			||||||
@@ -344,9 +329,7 @@ public class PrisonerManager {
 | 
				
			|||||||
                                if(Util.isStringInsideList(item.getType().toString(), blacklist))
 | 
					                                if(Util.isStringInsideList(item.getType().toString(), blacklist))
 | 
				
			||||||
                                    player.getInventory().remove(item);
 | 
					                                    player.getInventory().remove(item);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        String[] inv = Util.playerInventoryToBase64(player.getInventory());
 | 
					                        prisoner.setInventory(Util.toBase64(player.getInventory()));
 | 
				
			||||||
                        prisoner.setInventory(inv[0]);
 | 
					 | 
				
			||||||
                        prisoner.setArmor(inv[1]);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        player.getInventory().setArmorContents(null);
 | 
					                        player.getInventory().setArmorContents(null);
 | 
				
			||||||
                        player.getInventory().clear();
 | 
					                        player.getInventory().clear();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,6 @@ import org.bukkit.Material;
 | 
				
			|||||||
import org.bukkit.entity.Player;
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
import org.bukkit.inventory.Inventory;
 | 
					import org.bukkit.inventory.Inventory;
 | 
				
			||||||
import org.bukkit.inventory.ItemStack;
 | 
					import org.bukkit.inventory.ItemStack;
 | 
				
			||||||
import org.bukkit.inventory.PlayerInventory;
 | 
					 | 
				
			||||||
import org.bukkit.inventory.meta.ItemMeta;
 | 
					import org.bukkit.inventory.meta.ItemMeta;
 | 
				
			||||||
import org.bukkit.util.Vector;
 | 
					import org.bukkit.util.Vector;
 | 
				
			||||||
import org.bukkit.util.io.BukkitObjectInputStream;
 | 
					import org.bukkit.util.io.BukkitObjectInputStream;
 | 
				
			||||||
@@ -345,21 +344,6 @@ public class Util {
 | 
				
			|||||||
        return unused;
 | 
					        return unused;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Converts the player inventory to a String array of Base64 strings. First string is the content and second string is the armor.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @param playerInventory to turn into an array of strings.
 | 
					 | 
				
			||||||
     * @return Array of strings: [ main content, armor content ]
 | 
					 | 
				
			||||||
     * @throws IllegalStateException if any of the {@link ItemStack}s couldn't be parsed
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    public static String[] playerInventoryToBase64(PlayerInventory playerInventory) throws IllegalStateException {
 | 
					 | 
				
			||||||
        //get the main content part, this doesn't return the armor
 | 
					 | 
				
			||||||
        String content = toBase64(playerInventory);
 | 
					 | 
				
			||||||
        String armor = itemStackArrayToBase64(playerInventory.getArmorContents());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return new String[] { content, armor };
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * A method to serialize an {@link ItemStack} array to Base64 String.
 | 
					     * A method to serialize an {@link ItemStack} array to Base64 String.
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user