Procházet zdrojové kódy

Fixing delete items at Mail

Reported by: u3games, epu, @davion00
Thanks to: @Sdw-
Zoey76 před 10 roky
rodič
revize
f9936bb9ce

+ 15 - 10
L2J_Server/java/com/l2jserver/gameserver/model/itemcontainer/Mail.java

@@ -25,6 +25,7 @@ import java.util.logging.Level;
 
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.enums.ItemLocation;
+import com.l2jserver.gameserver.idfactory.IdFactory;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
@@ -108,19 +109,10 @@ public class Mail extends ItemContainer
 		item.setItemLocation(getBaseLocation(), _messageId);
 	}
 	
-	/*
-	 * Allow saving of the items without owner
-	 */
 	@Override
 	public void updateDatabase()
 	{
-		for (L2ItemInstance item : _items)
-		{
-			if (item != null)
-			{
-				item.updateDatabase(true);
-			}
-		}
+		_items.forEach(i -> i.updateDatabase(true));
 	}
 	
 	@Override
@@ -168,4 +160,17 @@ public class Mail extends ItemContainer
 	{
 		return _ownerId;
 	}
+	
+	@Override
+	public void deleteMe()
+	{
+		_items.forEach(i ->
+		{
+			i.updateDatabase(true);
+			i.deleteMe();
+			L2World.getInstance().removeObject(i);
+			IdFactory.getInstance().releaseId(i.getObjectId());
+		});
+		_items.clear();
+	}
 }

+ 1 - 1
L2J_Server/java/com/l2jserver/gameserver/model/items/instance/L2ItemInstance.java

@@ -1438,7 +1438,7 @@ public final class L2ItemInstance extends L2Object
 	
 	/**
 	 * Updates the database.<BR>
-	 * @param force if the update should necessarilly be done.
+	 * @param force if the update should necessarily be done.
 	 */
 	public void updateDatabase(boolean force)
 	{