All pastes #47632 Raw Edit

ForceInventoryUpdate

public java v1 · immutable
#47632 ·published 2006-03-30 22:24 UTC
rendered paste body
Index: /java/config/server.properties===================================================================--- /java/config/server.properties	(revision 1695)+++ /java/config/server.properties	(working copy)@@ -206,6 +206,10 @@ # Show L2Monster level and aggro, ServerSideNpcName must be enabled ServerSideNpcNameWithLvl = False +# Forces full item inventory packet to be sent for any item change+# Note: This can increase network traffic +ForceInventoryUpdate = False+ AutoDeleteInvalidQuestData = False  # Day/Night StatusIndex: /java/net/sf/l2j/Config.java===================================================================--- /java/net/sf/l2j/Config.java	(revision 1695)+++ /java/net/sf/l2j/Config.java	(working copy)@@ -341,6 +341,7 @@     public static String        NEW_NODE_TYPE;     public static boolean SERVER_SIDE_NPC_NAME;     public static boolean SERVER_SIDE_NPC_NAME_WITH_LVL;+    public static boolean FORCE_INVENTORY_UPDATE;     public static boolean ALLOW_GUARDS; 	public static boolean ALLOW_CLASS_MASTERS; 	public static int IP_UPDATE_TIME;@@ -646,6 +647,8 @@ 	             	            SERVER_SIDE_NPC_NAME            = Boolean.valueOf(serverSettings.getProperty("ServerSideNpcName", "False")); 	            SERVER_SIDE_NPC_NAME_WITH_LVL   = Boolean.valueOf(serverSettings.getProperty("ServerSideNpcNameWithLvl", "False"));+	            +	            FORCE_INVENTORY_UPDATE          = Boolean.valueOf(serverSettings.getProperty("ForceInventoryUpdate", "False"));  	            AUTODELETE_INVALID_QUEST_DATA   = Boolean.valueOf(serverSettings.getProperty("AutoDeleteInvalidQuestData", "False")); 	            THREAD_P_HIGH                   = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeHigh", "4"));@@ -1164,6 +1167,8 @@         else if (pName.equalsIgnoreCase("ServerSideNpcName")) SERVER_SIDE_NPC_NAME = Boolean.valueOf(pValue);         else if (pName.equalsIgnoreCase("ServerSideNpcNameWithLvl")) SERVER_SIDE_NPC_NAME_WITH_LVL = Boolean.valueOf(pValue); +        else if (pName.equalsIgnoreCase("ForceInventoryUpdate")) FORCE_INVENTORY_UPDATE = Boolean.valueOf(pValue);+         else if (pName.equalsIgnoreCase("AutoDeleteInvalidQuestData")) AUTODELETE_INVALID_QUEST_DATA = Boolean.valueOf(pValue);          else if (pName.equalsIgnoreCase("MaximumOnlineUsers")) MAXIMUM_ONLINE_USERS = Integer.parseInt(pValue);Index: /java/net/sf/l2j/gameserver/clientpackets/RequestSellItem.java===================================================================--- /java/net/sf/l2j/gameserver/clientpackets/RequestSellItem.java	(revision 1695)+++ /java/net/sf/l2j/gameserver/clientpackets/RequestSellItem.java	(working copy)@@ -31,6 +31,7 @@ import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.ActionFailed; import net.sf.l2j.gameserver.serverpackets.InventoryUpdate;+import net.sf.l2j.gameserver.serverpackets.ItemList; import net.sf.l2j.gameserver.serverpackets.StatusUpdate; import net.sf.l2j.gameserver.serverpackets.SystemMessage; import net.sf.l2j.gameserver.util.Util;@@ -115,7 +116,7 @@ 		 		long totalPrice = 0; 		// Proceed the sell-		InventoryUpdate playerIU = new InventoryUpdate();+		InventoryUpdate playerIU = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate(); 		for (int i = 0; i < _count; i++) 		{ 			int objectId = _items[i * 3 + 0];@@ -141,7 +142,7 @@             }  			item = player.getInventory().destroyItem("Sell", objectId, count, player, null);-	    	playerIU.addItem(item);+			if (playerIU != null) playerIU.addItem(item); 			 /* TODO: Disabled until Leaseholders are rewritten ;-) 			int price = item.getReferencePrice()*(int)count/2;@@ -167,7 +168,8 @@ 		player.addAdena("Sell", (int)totalPrice, merchant, false);      	// Send inventory update packet-    	sendPacket(playerIU);+		if (playerIU != null) player.sendPacket(playerIU);+		else player.sendPacket(new ItemList(player, false));      	// Update current load as well 		StatusUpdate su = new StatusUpdate(player.getObjectId());Index: /java/net/sf/l2j/gameserver/clientpackets/RequestCrystallizeItem.java===================================================================--- /java/net/sf/l2j/gameserver/clientpackets/RequestCrystallizeItem.java	(revision 1695)+++ /java/net/sf/l2j/gameserver/clientpackets/RequestCrystallizeItem.java	(working copy)@@ -21,6 +21,7 @@ import java.nio.ByteBuffer; import java.util.logging.Logger; +import net.sf.l2j.Config; import net.sf.l2j.gameserver.ClientThread; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.L2Skill;@@ -29,6 +30,7 @@ import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.ActionFailed; import net.sf.l2j.gameserver.serverpackets.InventoryUpdate;+import net.sf.l2j.gameserver.serverpackets.ItemList; import net.sf.l2j.gameserver.serverpackets.StatusUpdate; import net.sf.l2j.gameserver.serverpackets.SystemMessage; import net.sf.l2j.gameserver.templates.L2Item;@@ -178,20 +180,19 @@ 		L2ItemInstance createditem = activeChar.getInventory().addItem("Crystalize", crystalId, crystalAmount, activeChar, itemToRemove);  		//send inventory update-		InventoryUpdate iu = new InventoryUpdate();-		if (removedItem.getCount() == 0) {-			iu.addRemovedItem(removedItem);-		} else {-			iu.addModifiedItem(removedItem);+		if (!Config.FORCE_INVENTORY_UPDATE)+		{+			InventoryUpdate iu = new InventoryUpdate();+			if (removedItem.getCount() == 0) iu.addRemovedItem(removedItem);+			else iu.addModifiedItem(removedItem);+			+			if (createditem.getCount() != crystalAmount) iu.addModifiedItem(createditem);+			else iu.addNewItem(createditem);	++			activeChar.sendPacket(iu); 		}-		-		if (createditem.getCount() != crystalAmount) {-			iu.addModifiedItem(createditem);-		} else {-			iu.addNewItem(createditem);	-		}-		activeChar.sendPacket(iu);-		+		else activeChar.sendPacket(new ItemList(activeChar, false));+ 		//status & user info 		StatusUpdate su = new StatusUpdate(activeChar.getObjectId()); 		su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());Index: /java/net/sf/l2j/gameserver/clientpackets/SendWareHouseDepositList.java===================================================================--- /java/net/sf/l2j/gameserver/clientpackets/SendWareHouseDepositList.java	(revision 1695)+++ /java/net/sf/l2j/gameserver/clientpackets/SendWareHouseDepositList.java	(working copy)@@ -31,6 +31,7 @@ import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.InventoryUpdate;+import net.sf.l2j.gameserver.serverpackets.ItemList; import net.sf.l2j.gameserver.serverpackets.StatusUpdate; import net.sf.l2j.gameserver.serverpackets.SystemMessage; @@ -124,7 +125,7 @@         }          // Proceed to the transfer-		InventoryUpdate playerIU = new InventoryUpdate();+		InventoryUpdate playerIU = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate(); 		for (int i = 0; i < _count; i++) 		{ 			int objectId = _items[i * 2 + 0];@@ -138,12 +139,16 @@             	continue;             } -			if (oldItem.getCount() > 0 && oldItem != newItem) playerIU.addModifiedItem(oldItem);-	    	else playerIU.addRemovedItem(oldItem);+            if (playerIU != null)+            {+            	if (oldItem.getCount() > 0 && oldItem != newItem) playerIU.addModifiedItem(oldItem);+            	else playerIU.addRemovedItem(oldItem);+            } 		}          // Send updated item list to the player-		player.sendPacket(playerIU);+		if (playerIU != null) player.sendPacket(playerIU);+		else player.sendPacket(new ItemList(player, false)); 		 		// Update current load status on player 		StatusUpdate su = new StatusUpdate(player.getObjectId());Index: /java/net/sf/l2j/gameserver/clientpackets/SendWareHouseWithDrawList.java===================================================================--- /java/net/sf/l2j/gameserver/clientpackets/SendWareHouseWithDrawList.java	(revision 1695)+++ /java/net/sf/l2j/gameserver/clientpackets/SendWareHouseWithDrawList.java	(working copy)@@ -32,6 +32,7 @@ import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.InventoryUpdate;+import net.sf.l2j.gameserver.serverpackets.ItemList; import net.sf.l2j.gameserver.serverpackets.StatusUpdate; import net.sf.l2j.gameserver.serverpackets.SystemMessage; @@ -119,7 +120,7 @@         }                  // Proceed to the transfer-		InventoryUpdate playerIU = new InventoryUpdate();+		InventoryUpdate playerIU = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate(); 		for (int i = 0; i < _count; i++) 		{ 			int objectId = _items[i * 2 + 0];@@ -135,12 +136,16 @@             	continue;             } -    		if (newItem.getCount() > count) playerIU.addModifiedItem(newItem);-        	else playerIU.addNewItem(newItem);+            if (playerIU != null)+            {+	    		if (newItem.getCount() > count) playerIU.addModifiedItem(newItem);+	        	else playerIU.addNewItem(newItem);+            } 		}          // Send updated item list to the player-		player.sendPacket(playerIU);+		if (playerIU != null) player.sendPacket(playerIU);+		else player.sendPacket(new ItemList(player, false)); 		 		// Update current load status on player 		StatusUpdate su = new StatusUpdate(player.getObjectId());Index: /java/net/sf/l2j/gameserver/clientpackets/RequestDestroyItem.java===================================================================--- /java/net/sf/l2j/gameserver/clientpackets/RequestDestroyItem.java	(revision 1695)+++ /java/net/sf/l2j/gameserver/clientpackets/RequestDestroyItem.java	(working copy)@@ -24,6 +24,7 @@ import java.util.logging.Level; import java.util.logging.Logger; +import net.sf.l2j.Config; import net.sf.l2j.L2DatabaseFactory; import net.sf.l2j.gameserver.ClientThread; import net.sf.l2j.gameserver.model.L2ItemInstance;@@ -162,21 +163,17 @@ 		 		L2ItemInstance removedItem = activeChar.getInventory().destroyItem("Destroy", _objectId, count, activeChar, null); 		-		InventoryUpdate iu = new InventoryUpdate();-		if (removedItem.getCount() == 0)+		if (!Config.FORCE_INVENTORY_UPDATE) 		{-			iu.addRemovedItem(removedItem);+			InventoryUpdate iu = new InventoryUpdate();+			if (removedItem.getCount() == 0) iu.addRemovedItem(removedItem);+			else iu.addModifiedItem(removedItem);+	+			//client.getConnection().sendPacket(iu);+			activeChar.sendPacket(iu); 		}-		else-		{-			iu.addModifiedItem(removedItem);-		}-		//client.getConnection().sendPacket(iu);-		activeChar.sendPacket(iu);+		else sendPacket(new ItemList(activeChar, true));		 		-		ItemList il = new ItemList(activeChar, true);-		sendPacket(il);		-		 		StatusUpdate su = new StatusUpdate(activeChar.getObjectId()); 		su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad()); 		activeChar.sendPacket(su);Index: /java/net/sf/l2j/gameserver/clientpackets/RequestBuyItem.java===================================================================--- /java/net/sf/l2j/gameserver/clientpackets/RequestBuyItem.java	(revision 1696)+++ /java/net/sf/l2j/gameserver/clientpackets/RequestBuyItem.java	(working copy)@@ -34,6 +34,7 @@ import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.ActionFailed; import net.sf.l2j.gameserver.serverpackets.InventoryUpdate;+import net.sf.l2j.gameserver.serverpackets.ItemList; import net.sf.l2j.gameserver.serverpackets.StatusUpdate; import net.sf.l2j.gameserver.serverpackets.SystemMessage; import net.sf.l2j.gameserver.templates.L2Item;@@ -210,7 +211,7 @@ 		    merchant.getCastle().addToTreasury(tax);  		// Proceed the purchase-		InventoryUpdate playerIU = new InventoryUpdate();+		InventoryUpdate playerIU = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate(); 		for (int i=0; i < _count; i++) 		{ 			int itemId = _items[i * 2 + 0];@@ -219,8 +220,11 @@  			// Add item to Inventory and adjust update packet 			L2ItemInstance item = player.getInventory().addItem("Buy", itemId, count, player, merchant);-			if (item.getCount() > count) playerIU.addModifiedItem(item);-			else playerIU.addNewItem(item);+			if (playerIU != null)+			{+				if (item.getCount() > count) playerIU.addModifiedItem(item);+				else playerIU.addNewItem(item);+			}  /* TODO: Disabled until Leaseholders are rewritten ;-) 			// Update Leaseholder list@@ -244,7 +248,8 @@ */ 		} 		// Send update packets-		player.sendPacket(playerIU);+		if (playerIU != null) player.sendPacket(playerIU);+		else player.sendPacket(new ItemList(player, false)); 		 		StatusUpdate su = new StatusUpdate(player.getObjectId()); 		su.addAttribute(StatusUpdate.CUR_LOAD, player.getCurrentLoad());Index: /java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java===================================================================--- /java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java	(revision 1695)+++ /java/net/sf/l2j/gameserver/clientpackets/RequestEnchantItem.java	(working copy)@@ -181,32 +181,31 @@ 			 	activeChar.broadcastUserInfo(); 			} 			-			L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null);-			-			InventoryUpdate iu = new InventoryUpdate();-			if (destroyItem.getCount() == 0)-			{-				iu.addRemovedItem(destroyItem);-			}-			else-			{-				iu.addModifiedItem(destroyItem);-			}-			activeChar.sendPacket(iu);-			 			// Add 10% to crystal count for each enchant level (starting at 67% for enchant lvl 3) 			int count = item.getItem().getCrystalCount() * (37 + 10*item.getEnchantLevel()) / 100; 			if (count < 1) count = 1; +			L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null);+			if (destroyItem == null) return;+			 			L2ItemInstance crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem);+		             SystemMessage sm2 = new SystemMessage(SystemMessage.EARNED_S2_S1_s);             sm2.addItemName(crystals.getItemId());             sm2.addNumber(count);             activeChar.sendPacket(sm2);++            if (!Config.FORCE_INVENTORY_UPDATE)+			{+				InventoryUpdate iu = new InventoryUpdate();+				if (destroyItem.getCount() == 0) iu.addRemovedItem(destroyItem);+				else iu.addModifiedItem(destroyItem);+				iu.addItem(crystals);+				+				activeChar.sendPacket(iu);+			}+			else activeChar.sendPacket(new ItemList(activeChar, true)); 		-            ItemList il = new ItemList(activeChar, true);-            sendPacket(il);-		             StatusUpdate su = new StatusUpdate(activeChar.getObjectId());             su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());             activeChar.sendPacket(su);Index: /java/net/sf/l2j/gameserver/model/TradeList.java===================================================================--- /java/net/sf/l2j/gameserver/model/TradeList.java	(revision 1695)+++ /java/net/sf/l2j/gameserver/model/TradeList.java	(working copy)@@ -23,6 +23,7 @@  import javolution.util.FastList; +import net.sf.l2j.Config; import net.sf.l2j.gameserver.ItemTable; import net.sf.l2j.gameserver.BasePacket.ItemRequest; import net.sf.l2j.gameserver.model.L2ItemInstance;@@ -30,6 +31,7 @@ import net.sf.l2j.gameserver.model.L2World; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.InventoryUpdate;+import net.sf.l2j.gameserver.serverpackets.ItemList; import net.sf.l2j.gameserver.serverpackets.StatusUpdate; import net.sf.l2j.gameserver.serverpackets.SystemMessage; import net.sf.l2j.gameserver.templates.L2Item;@@ -448,11 +450,17 @@ 			if (newItem == null) return false; 			 			// Add changes to inventory update packets-	    	if (oldItem.getCount() > 0 && oldItem != newItem) ownerIU.addModifiedItem(oldItem);-	    	else ownerIU.addRemovedItem(oldItem);+	    	if (ownerIU != null)+	    	{+				if (oldItem.getCount() > 0 && oldItem != newItem) ownerIU.addModifiedItem(oldItem);+		    	else ownerIU.addRemovedItem(oldItem);+	    	} -	    	if (newItem.getCount() > titem.getCount()) partnerIU.addModifiedItem(newItem);-        	else partnerIU.addNewItem(newItem);+	    	if (partnerIU != null)+	    	{+		    	if (newItem.getCount() > titem.getCount()) partnerIU.addModifiedItem(newItem);+	        	else partnerIU.addNewItem(newItem);+	    	} 		} 		return true; 	}@@ -463,17 +471,21 @@ 	private void doExchange(TradeList partnerList) 	{     	// Prepare inventory update packet-		InventoryUpdate ownerIU = new InventoryUpdate();-		InventoryUpdate partnerIU = new InventoryUpdate();+		InventoryUpdate ownerIU = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate();+		InventoryUpdate partnerIU = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate();  		// Transfer items 		partnerList.TransferItems(this.getOwner(), partnerIU, ownerIU); 		this.TransferItems(partnerList.getOwner(), ownerIU, partnerIU);      	// Send inventory update packet-		_owner.sendPacket(ownerIU);-		_partner.sendPacket(partnerIU);+        if (ownerIU != null) _owner.sendPacket(ownerIU);+		else _owner.sendPacket(new ItemList(_owner, false)); 		+        if (partnerIU != null) _partner.sendPacket(partnerIU);+		else _partner.sendPacket(new ItemList(_partner, false));+		+		 		// Update current load as well 		StatusUpdate playerSU = new StatusUpdate(_owner.getObjectId()); 		playerSU.addAttribute(StatusUpdate.CUR_LOAD, _owner.getCurrentLoad());Index: /java/net/sf/l2j/gameserver/handler/itemhandlers/Harvester.java===================================================================--- /java/net/sf/l2j/gameserver/handler/itemhandlers/Harvester.java	(revision 1695)+++ /java/net/sf/l2j/gameserver/handler/itemhandlers/Harvester.java	(working copy)@@ -2,6 +2,7 @@  import java.util.Random; +import net.sf.l2j.Config; import net.sf.l2j.gameserver.handler.IItemHandler; import net.sf.l2j.gameserver.model.L2Attackable; import net.sf.l2j.gameserver.model.L2ItemInstance;@@ -9,6 +10,7 @@ import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance; import net.sf.l2j.gameserver.serverpackets.InventoryUpdate;+import net.sf.l2j.gameserver.serverpackets.ItemList; import net.sf.l2j.gameserver.serverpackets.SystemMessage;  public class Harvester implements IItemHandler@@ -19,7 +21,7 @@          public void useItem(L2PlayableInstance playable, L2ItemInstance _item)     {-        InventoryUpdate iu = new InventoryUpdate();+        InventoryUpdate iu = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate();         player = (L2PcInstance)playable;          if(player.getTarget() == null || !(player.getTarget() instanceof L2MonsterInstance))@@ -45,7 +47,7 @@                     else                     {                         L2ItemInstance item = player.getInventory().addItem("Manor", ritem.getItemId(), ritem.getCount(), player, target);-                        iu.addItem(item);+                        if (iu != null) iu.addItem(item);                         send = true;                         total += ritem.getCount();                     }@@ -56,7 +58,9 @@                     smsg.addNumber(total);                     smsg.addItemName(cropId);                     player.sendPacket(smsg);-                    player.sendPacket(iu);++                    if (iu != null) player.sendPacket(iu);+            		else player.sendPacket(new ItemList(player, false));                 }             }         }Index: /java/net/sf/l2j/gameserver/handler/skillhandlers/Sweep.java===================================================================--- /java/net/sf/l2j/gameserver/handler/skillhandlers/Sweep.java	(revision 1695)+++ /java/net/sf/l2j/gameserver/handler/skillhandlers/Sweep.java	(working copy)@@ -18,6 +18,7 @@  */ package net.sf.l2j.gameserver.handler.skillhandlers;  +import net.sf.l2j.Config; import net.sf.l2j.gameserver.handler.ISkillHandler; import net.sf.l2j.gameserver.model.L2Attackable; import net.sf.l2j.gameserver.model.L2Character;@@ -27,6 +28,7 @@ import net.sf.l2j.gameserver.model.L2Skill.SkillType; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.serverpackets.InventoryUpdate;+import net.sf.l2j.gameserver.serverpackets.ItemList; import net.sf.l2j.gameserver.serverpackets.SystemMessage;  /** @@ -48,7 +50,7 @@         }                  L2PcInstance player = (L2PcInstance)activeChar;-		InventoryUpdate iu = new InventoryUpdate();+		InventoryUpdate iu = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate(); 		boolean send = false; 		         for(int index = 0;index < targets.length;index++) @@ -67,7 +69,7 @@ 					else 					{ 						L2ItemInstance item = player.getInventory().addItem("Sweep", ritem.getItemId(), ritem.getCount(), player, target);-						iu.addItem(item);+						if (iu != null) iu.addItem(item); 						send = true;  						SystemMessage smsg = new SystemMessage(SystemMessage.YOU_PICKED_UP_S1_S2); // you picked up $s1$s2@@ -80,7 +82,11 @@             target.endDecayTask();         } 		-		if (send) player.sendPacket(iu);+		if (send)+		{+            if (iu != null) player.sendPacket(iu);+    		else player.sendPacket(new ItemList(player, false));+		}     }           public SkillType[] getSkillIds()