Fix #118, armor being duplicated.

This commit is contained in:
graywolf336 2016-04-02 13:40:18 -05:00
parent 92e6f5e641
commit 9452bcb5a3
2 changed files with 3 additions and 36 deletions

View File

@ -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) {
@ -287,19 +286,7 @@ 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();

View File

@ -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.