Selaa lähdekoodia

telnet - cleanvoiditems

Nik 13 vuotta sitten
vanhempi
sitoutus
0f37a15b7d
1 muutettua tiedostoa jossa 25 lisäystä ja 0 poistoa
  1. 25 0
      L2J_Server_BETA/java/com/l2jserver/status/GameStatusThread.java

+ 25 - 0
L2J_Server_BETA/java/com/l2jserver/status/GameStatusThread.java

@@ -14,6 +14,8 @@
  */
 package com.l2jserver.status;
 
+import gnu.trove.TObjectProcedure;
+
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
@@ -64,6 +66,7 @@ import com.l2jserver.gameserver.instancemanager.QuestManager;
 import com.l2jserver.gameserver.instancemanager.RaidBossSpawnManager;
 import com.l2jserver.gameserver.instancemanager.ZoneManager;
 import com.l2jserver.gameserver.model.L2ItemInstance;
+import com.l2jserver.gameserver.model.L2ItemInstance.ItemLocation;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2World;
 import com.l2jserver.gameserver.model.TradeList;
@@ -286,6 +289,11 @@ public class GameStatusThread extends Thread
 					_print.print(this.getServerStatus());
 					_print.flush();
 				}
+				else if (_usrCommand.equals("cleanvoiditems"))
+				{
+					L2World.getInstance().forEachObject(new CleanVoidItems());
+					_print.flush();
+				}
 				else if (_usrCommand.equals("forcegc"))
 				{
 					System.gc();
@@ -1316,4 +1324,21 @@ public class GameStatusThread extends Thread
 		}
 		throw new IllegalStateException("Deadlocked Thread not found");
 	}
+	
+	private final class CleanVoidItems implements TObjectProcedure<L2Object>
+	{	
+		@Override
+		public final boolean execute(final L2Object obj)
+		{
+			L2ItemInstance item = null;
+			if (obj instanceof L2ItemInstance)
+				item = (L2ItemInstance) obj;
+			if (item != null && item.getLocation() == ItemLocation.VOID)
+			{
+				_print.println("Item: name="+item.getName()+" lastChange="+item.getLastChange()+" objId"+item.getObjectId()+";");
+				L2World.getInstance().removeObject(item);
+			}
+			return true;
+		}
+	}
 }