|
@@ -14,6 +14,8 @@
|
|
*/
|
|
*/
|
|
package com.l2jserver.status;
|
|
package com.l2jserver.status;
|
|
|
|
|
|
|
|
+import gnu.trove.TObjectProcedure;
|
|
|
|
+
|
|
import java.io.BufferedReader;
|
|
import java.io.BufferedReader;
|
|
import java.io.File;
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
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.RaidBossSpawnManager;
|
|
import com.l2jserver.gameserver.instancemanager.ZoneManager;
|
|
import com.l2jserver.gameserver.instancemanager.ZoneManager;
|
|
import com.l2jserver.gameserver.model.L2ItemInstance;
|
|
import com.l2jserver.gameserver.model.L2ItemInstance;
|
|
|
|
+import com.l2jserver.gameserver.model.L2ItemInstance.ItemLocation;
|
|
import com.l2jserver.gameserver.model.L2Object;
|
|
import com.l2jserver.gameserver.model.L2Object;
|
|
import com.l2jserver.gameserver.model.L2World;
|
|
import com.l2jserver.gameserver.model.L2World;
|
|
import com.l2jserver.gameserver.model.TradeList;
|
|
import com.l2jserver.gameserver.model.TradeList;
|
|
@@ -286,6 +289,11 @@ public class GameStatusThread extends Thread
|
|
_print.print(this.getServerStatus());
|
|
_print.print(this.getServerStatus());
|
|
_print.flush();
|
|
_print.flush();
|
|
}
|
|
}
|
|
|
|
+ else if (_usrCommand.equals("cleanvoiditems"))
|
|
|
|
+ {
|
|
|
|
+ L2World.getInstance().forEachObject(new CleanVoidItems());
|
|
|
|
+ _print.flush();
|
|
|
|
+ }
|
|
else if (_usrCommand.equals("forcegc"))
|
|
else if (_usrCommand.equals("forcegc"))
|
|
{
|
|
{
|
|
System.gc();
|
|
System.gc();
|
|
@@ -1316,4 +1324,21 @@ public class GameStatusThread extends Thread
|
|
}
|
|
}
|
|
throw new IllegalStateException("Deadlocked Thread not found");
|
|
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;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|