|  |  |  | @ -2274,7 +2274,6 @@ public class CharacterItemManager {@@ -2274,7 +2274,6 @@ public class CharacterItemManager { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (this.absCharacter.getObjectType().equals(GameObjectType.PlayerCharacter) == false) | 
			
		
	
		
			
				
					|  |  |  |  |             return; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         PlayerCharacter pc = (PlayerCharacter) this.absCharacter; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         UpdateInventoryMsg updateInventoryMsg = new UpdateInventoryMsg(inventory, this.getBank(), this.getGoldInventory(), add); | 
			
		
	
	
		
			
				
					|  |  |  | @ -2312,7 +2311,6 @@ public class CharacterItemManager {@@ -2312,7 +2311,6 @@ public class CharacterItemManager { | 
			
		
	
		
			
				
					|  |  |  |  |      * Update the player's inventory window by resending the entire contents. | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  |     public void updateInventory() { | 
			
		
	
		
			
				
					|  |  |  |  |         this.StackResources(); | 
			
		
	
		
			
				
					|  |  |  |  |         this.updateInventory(this.getInventory(), true); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -2617,55 +2615,42 @@ public class CharacterItemManager {@@ -2617,55 +2615,42 @@ public class CharacterItemManager { | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public void StackResources(){ | 
			
		
	
		
			
				
					|  |  |  |  |         if(this.getOwner().getObjectType().equals(GameObjectType.PlayerCharacter) == false) | 
			
		
	
		
			
				
					|  |  |  |  |         if(!this.getOwner().getObjectType().equals(GameObjectType.PlayerCharacter)) | 
			
		
	
		
			
				
					|  |  |  |  |             return; | 
			
		
	
		
			
				
					|  |  |  |  |         //create hashmap of all resources in inventory sorted by type
 | 
			
		
	
		
			
				
					|  |  |  |  |         HashMap<ItemBase,ArrayList<Item>> resources = new HashMap<>(); | 
			
		
	
		
			
				
					|  |  |  |  |         //populate resources hashmap with items currently in inventory
 | 
			
		
	
		
			
				
					|  |  |  |  |         ArrayList<Item> resources = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |         HashMap<Integer,Integer> newStacks = new HashMap<>(); | 
			
		
	
		
			
				
					|  |  |  |  |         for(Item item : this.getInventory()){ | 
			
		
	
		
			
				
					|  |  |  |  |             if(Warehouse.getMaxResources().get(item.getItemBaseID()) != null && Warehouse.getMaxResources().get(item.getItemBaseID()) != 0){ | 
			
		
	
		
			
				
					|  |  |  |  |                 if(resources.containsKey(item.getItemBase())){ | 
			
		
	
		
			
				
					|  |  |  |  |                     resources.get(item.getItemBase()).add(item); | 
			
		
	
		
			
				
					|  |  |  |  |                 } else{ | 
			
		
	
		
			
				
					|  |  |  |  |                     resources.put(item.getItemBase(),new ArrayList<>()); | 
			
		
	
		
			
				
					|  |  |  |  |             if(item.getItemBase().getType().equals(ItemType.RESOURCE)){ | 
			
		
	
		
			
				
					|  |  |  |  |                 resources.add(item); | 
			
		
	
		
			
				
					|  |  |  |  |                 if(newStacks.containsKey(item.getItemBaseID())){ | 
			
		
	
		
			
				
					|  |  |  |  |                     newStacks.put(item.getItemBaseID(),newStacks.get(item.getItemBaseID()) + item.getNumOfItems()); | 
			
		
	
		
			
				
					|  |  |  |  |                 }else{ | 
			
		
	
		
			
				
					|  |  |  |  |                     newStacks.put(item.getItemBaseID(),item.getNumOfItems()); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         //create a purge list to remove form inventory after we compile all the stacks together
 | 
			
		
	
		
			
				
					|  |  |  |  |         ArrayList<Item> purgeList = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |         ArrayList<Item> newStacks = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |         //now we have all our resources sorted, lets combine them into one single stack for each type
 | 
			
		
	
		
			
				
					|  |  |  |  |         for(ItemBase resourceBase : resources.keySet()){ | 
			
		
	
		
			
				
					|  |  |  |  |             int count = 0; | 
			
		
	
		
			
				
					|  |  |  |  |             for(Item resource : resources.get(resourceBase)){ | 
			
		
	
		
			
				
					|  |  |  |  |                 count += resource.getNumOfItems(); | 
			
		
	
		
			
				
					|  |  |  |  |                 purgeList.add(resource); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             Item item = new Item(resourceBase, this.getOwner().getObjectUUID(), | 
			
		
	
		
			
				
					|  |  |  |  |                     Enum.OwnerType.PlayerCharacter, (byte) 0, (byte) 0, (short) resourceBase.getDurability(), (short) resourceBase.getDurability(), | 
			
		
	
		
			
				
					|  |  |  |  |         //do stacking here
 | 
			
		
	
		
			
				
					|  |  |  |  |         PlayerCharacter pc = PlayerCharacter.getFromCache(this.getOwner().getObjectUUID()); | 
			
		
	
		
			
				
					|  |  |  |  |         for(Integer id : newStacks.keySet()){ | 
			
		
	
		
			
				
					|  |  |  |  |             ItemBase ib = ItemBase.getItemBase(id); | 
			
		
	
		
			
				
					|  |  |  |  |             Item item = new Item(ib, pc.getObjectUUID(), | 
			
		
	
		
			
				
					|  |  |  |  |                     Enum.OwnerType.PlayerCharacter, (byte) 0, (byte) 0, (short) ib.getDurability(), (short) ib.getDurability(), | 
			
		
	
		
			
				
					|  |  |  |  |                     true, false, Enum.ItemContainerType.INVENTORY, (byte) 0, | 
			
		
	
		
			
				
					|  |  |  |  |                     new ArrayList<>(), ""); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             item.setNumOfItems(count); | 
			
		
	
		
			
				
					|  |  |  |  |             newStacks.add(item); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         //create new stacks in database, add to inventory and update window
 | 
			
		
	
		
			
				
					|  |  |  |  |         for(Item item : newStacks){ | 
			
		
	
		
			
				
					|  |  |  |  |             try { | 
			
		
	
		
			
				
					|  |  |  |  |             item.setNumOfItems(newStacks.get(id)); | 
			
		
	
		
			
				
					|  |  |  |  |             try{ | 
			
		
	
		
			
				
					|  |  |  |  |                 item = DbManager.ItemQueries.ADD_ITEM(item); | 
			
		
	
		
			
				
					|  |  |  |  |                 if(item != null){ | 
			
		
	
		
			
				
					|  |  |  |  |                     this.addItemToInventory(item); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |  |                 ChatManager.chatSystemError((PlayerCharacter)this.getOwner(), "Resource Stack Error: Unable to create item. " + e.getMessage()); | 
			
		
	
		
			
				
					|  |  |  |  |                 this.addItemToInventory(item); | 
			
		
	
		
			
				
					|  |  |  |  |             }catch(Exception e){ | 
			
		
	
		
			
				
					|  |  |  |  |                 ChatManager.chatSystemError(pc, "Failed To Stack Resources"); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         for (Item purged : purgeList){ | 
			
		
	
		
			
				
					|  |  |  |  |             this.delete(purged); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         for(Item item : resources) | 
			
		
	
		
			
				
					|  |  |  |  |             this.delete(item); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         //this.updateInventory();
 | 
			
		
	
		
			
				
					|  |  |  |  |         this.updateInventory(); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |