Cleanup for World class.
This commit is contained in:
		| @@ -20,6 +20,7 @@ package org.l2jmobius.gameserver; | ||||
| import java.io.File; | ||||
| import java.io.FileInputStream; | ||||
| import java.io.IOException; | ||||
| import java.util.Collection; | ||||
| import java.util.StringTokenizer; | ||||
| import java.util.logging.Logger; | ||||
|  | ||||
| @@ -110,8 +111,7 @@ public class AdminCommands extends Thread | ||||
| 		} | ||||
| 		else if (command.equals("admin_announce_announcements")) | ||||
| 		{ | ||||
| 			PlayerInstance[] players = World.getInstance().getAllPlayers(); | ||||
| 			for (PlayerInstance player : players) | ||||
| 			for (PlayerInstance player : World.getInstance().getAllPlayers()) | ||||
| 			{ | ||||
| 				Announcements.getInstance().showAnnouncements(player); | ||||
| 			} | ||||
| @@ -460,12 +460,11 @@ public class AdminCommands extends Thread | ||||
| 	public void showMainPage(ClientThread client) | ||||
| 	{ | ||||
| 		PlayerInstance activeChar = client.getActiveChar(); | ||||
| 		PlayerInstance[] players = World.getInstance().getAllPlayers(); | ||||
| 		NpcHtmlMessage adminReply = new NpcHtmlMessage(5); | ||||
| 		StringBuffer replyMSG = new StringBuffer("<html><title>Server Status</title>"); | ||||
| 		replyMSG.append("<body>"); | ||||
| 		replyMSG.append("<table>"); | ||||
| 		replyMSG.append("<tr><td>Players Online: " + players.length + "</td></tr>"); | ||||
| 		replyMSG.append("<tr><td>Players Online: " + World.getInstance().getAllPlayers().size() + "</td></tr>"); | ||||
| 		replyMSG.append("<tr><td>Used Memory: " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())); | ||||
| 		replyMSG.append(" bytes</td></tr>"); | ||||
| 		replyMSG.append("</table>"); | ||||
| @@ -532,7 +531,8 @@ public class AdminCommands extends Thread | ||||
| 	private void listCharacters(ClientThread client, int page) | ||||
| 	{ | ||||
| 		PlayerInstance activeChar = client.getActiveChar(); | ||||
| 		PlayerInstance[] players = World.getInstance().getAllPlayers(); | ||||
| 		Collection<PlayerInstance> allWorldPlayers = World.getInstance().getAllPlayers(); | ||||
| 		PlayerInstance[] players = allWorldPlayers.toArray(new PlayerInstance[allWorldPlayers.size()]); | ||||
| 		int MaxCharactersPerPage = 20; | ||||
| 		int MaxPages = players.length / MaxCharactersPerPage; | ||||
| 		int modulus = players.length % MaxCharactersPerPage; | ||||
| @@ -823,7 +823,6 @@ public class AdminCommands extends Thread | ||||
| 	private void findCharacter(ClientThread client, String CharacterToFind) | ||||
| 	{ | ||||
| 		PlayerInstance activeChar = client.getActiveChar(); | ||||
| 		PlayerInstance[] players = World.getInstance().getAllPlayers(); | ||||
| 		NpcHtmlMessage adminReply = new NpcHtmlMessage(5); | ||||
| 		int CharactersFound = 0; | ||||
| 		StringBuffer replyMSG = new StringBuffer("<html><title>Character Search</title>"); | ||||
| @@ -831,7 +830,7 @@ public class AdminCommands extends Thread | ||||
| 		replyMSG.append("<br>"); | ||||
| 		replyMSG.append("<table>"); | ||||
| 		replyMSG.append("<tr><td>Name</td><td>Class</td><td>Level</td></tr>"); | ||||
| 		for (PlayerInstance player : players) | ||||
| 		for (PlayerInstance player : World.getInstance().getAllPlayers()) | ||||
| 		{ | ||||
| 			if (!player.getName().startsWith(CharacterToFind)) | ||||
| 			{ | ||||
| @@ -1002,8 +1001,7 @@ public class AdminCommands extends Thread | ||||
| 	 | ||||
| 	private int disconnectAllCharacters() | ||||
| 	{ | ||||
| 		PlayerInstance[] players = World.getInstance().getAllPlayers(); | ||||
| 		for (PlayerInstance player : players) | ||||
| 		for (PlayerInstance player : World.getInstance().getAllPlayers()) | ||||
| 		{ | ||||
| 			LeaveWorld ql = new LeaveWorld(); | ||||
| 			player.sendPacket(ql); | ||||
| @@ -1163,9 +1161,8 @@ public class AdminCommands extends Thread | ||||
| 	 | ||||
| 	public void broadcastToAll(String message) | ||||
| 	{ | ||||
| 		PlayerInstance[] players = World.getInstance().getAllPlayers(); | ||||
| 		CreatureSay cs = new CreatureSay(0, 9, "[Announcement]", message); | ||||
| 		for (PlayerInstance player : players) | ||||
| 		for (PlayerInstance player : World.getInstance().getAllPlayers()) | ||||
| 		{ | ||||
| 			player.sendPacket(cs); | ||||
| 		} | ||||
|   | ||||
| @@ -19,6 +19,7 @@ package org.l2jmobius.gameserver; | ||||
|  | ||||
| import java.text.SimpleDateFormat; | ||||
| import java.util.Calendar; | ||||
| import java.util.Collection; | ||||
| import java.util.StringTokenizer; | ||||
|  | ||||
| import org.l2jmobius.Config; | ||||
| @@ -52,7 +53,7 @@ public class CommunityBoard | ||||
| 			StringBuffer htmlCode = new StringBuffer("<html imgsrc=\"sek.cbui353\"><body><br><table border=0><tr><td FIXWIDTH=15></td><td align=center>L2J Community Board<img src=\"sek.cbui355\" width=610 height=1></td></tr><tr><td FIXWIDTH=15></td><td>"); | ||||
| 			if (command.equals("bbs_default")) | ||||
| 			{ | ||||
| 				PlayerInstance[] players = World.getInstance().getAllPlayers(); | ||||
| 				Collection<PlayerInstance> players = World.getInstance().getAllPlayers(); | ||||
| 				htmlCode.append("<table border=0>"); | ||||
| 				int t = GameTimeController.getInstance().getGameTime(); | ||||
| 				int h = t / 60; | ||||
| @@ -67,7 +68,7 @@ public class CommunityBoard | ||||
| 				htmlCode.append("<tr><td>Adena Rate: " + Config.RATE_ADENA + "</td></tr>"); | ||||
| 				htmlCode.append("<tr><td>Drop Rate: " + Config.RATE_DROP + "</td></tr>"); | ||||
| 				htmlCode.append("<tr><td><img src=\"sek.cbui355\" width=610 height=1><br></td></tr>"); | ||||
| 				htmlCode.append("<tr><td>" + players.length + " Player(s) Online:</td></tr><tr><td><table border=0><tr>"); | ||||
| 				htmlCode.append("<tr><td>" + players.size() + " Player(s) Online:</td></tr><tr><td><table border=0><tr>"); | ||||
| 				int n = 1; | ||||
| 				for (PlayerInstance player : players) | ||||
| 				{ | ||||
|   | ||||
| @@ -77,8 +77,7 @@ public class GameTimeController extends Thread | ||||
| 	 | ||||
| 	private void broadcastToPlayers(ServerBasePacket packet) | ||||
| 	{ | ||||
| 		PlayerInstance[] players = World.getInstance().getAllPlayers(); | ||||
| 		for (PlayerInstance player : players) | ||||
| 		for (PlayerInstance player : World.getInstance().getAllPlayers()) | ||||
| 		{ | ||||
| 			player.sendPacket(packet); | ||||
| 		} | ||||
|   | ||||
| @@ -18,11 +18,11 @@ | ||||
| package org.l2jmobius.gameserver.model; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.Collection; | ||||
| import java.util.Iterator; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.concurrent.ConcurrentHashMap; | ||||
| import java.util.logging.Logger; | ||||
|  | ||||
| import org.l2jmobius.gameserver.PlayerCountManager; | ||||
| import org.l2jmobius.gameserver.model.actor.instance.ItemInstance; | ||||
| @@ -31,8 +31,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; | ||||
|  | ||||
| public class World | ||||
| { | ||||
| 	private static Logger _log = Logger.getLogger(World.class.getName()); | ||||
| 	private final Map<String, WorldObject> _allPlayers = new ConcurrentHashMap<>(); | ||||
| 	private final Map<String, PlayerInstance> _allPlayers = new ConcurrentHashMap<>(); | ||||
| 	private final Map<Integer, WorldObject> _allObjects = new ConcurrentHashMap<>(); | ||||
| 	private final Map<Integer, WorldObject> _visibleObjects = new ConcurrentHashMap<>(); | ||||
| 	private static World _instance; | ||||
| @@ -69,10 +68,9 @@ public class World | ||||
| 	{ | ||||
| 		if (object instanceof PlayerInstance) | ||||
| 		{ | ||||
| 			_allPlayers.put(((PlayerInstance) object).getName().toLowerCase(), object); | ||||
| 			WorldObject[] visible = getVisibleObjects(object, 2000); | ||||
| 			_log.finest("Objects in range:" + visible.length); | ||||
| 			for (WorldObject element : visible) | ||||
| 			final PlayerInstance player = (PlayerInstance) object; | ||||
| 			_allPlayers.put(player.getName().toLowerCase(), player); | ||||
| 			for (WorldObject element : getVisibleObjects(object, 2000)) | ||||
| 			{ | ||||
| 				object.addKnownObject(element); | ||||
| 				if ((object instanceof ItemInstance) && element.getKnownObjects().contains(object)) | ||||
| @@ -88,11 +86,11 @@ public class World | ||||
| 			int x = object.getX(); | ||||
| 			int y = object.getY(); | ||||
| 			int sqRadius = 4000000; | ||||
| 			Iterator<WorldObject> iter = _allPlayers.values().iterator(); | ||||
| 			Iterator<PlayerInstance> iter = _allPlayers.values().iterator(); | ||||
| 			while (iter.hasNext()) | ||||
| 			{ | ||||
| 				long dy; | ||||
| 				PlayerInstance player = (PlayerInstance) iter.next(); | ||||
| 				PlayerInstance player = iter.next(); | ||||
| 				int x1 = player.getX(); | ||||
| 				long dx = x1 - x; | ||||
| 				long sqDist = (dx * dx) + ((dy = player.getY() - y) * dy); | ||||
| @@ -110,7 +108,6 @@ public class World | ||||
| 	public void removeVisibleObject(WorldObject object) | ||||
| 	{ | ||||
| 		_visibleObjects.remove(object.getObjectId()); | ||||
| 		// _log.fine("World has now " + this._visibleObjects.size() + " visible objects"); | ||||
| 		Object[] temp = object.getKnownObjects().toArray(); | ||||
| 		for (Object element : temp) | ||||
| 		{ | ||||
| @@ -128,40 +125,29 @@ public class World | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	public WorldObject[] getVisibleObjects(WorldObject object, int radius) | ||||
| 	public Collection<WorldObject> getVisibleObjects(WorldObject object, int radius) | ||||
| 	{ | ||||
| 		int x = object.getX(); | ||||
| 		int y = object.getY(); | ||||
| 		int sqRadius = radius * radius; | ||||
| 		List<WorldObject> result = new ArrayList<>(); | ||||
| 		Iterator<WorldObject> iter = _visibleObjects.values().iterator(); | ||||
| 		while (iter.hasNext()) | ||||
| 		for (WorldObject worldObject : _visibleObjects.values()) | ||||
| 		{ | ||||
| 			@SuppressWarnings("unused") | ||||
| 			int x1; | ||||
| 			@SuppressWarnings("unused") | ||||
| 			int y1; | ||||
| 			long dx; | ||||
| 			long dy; | ||||
| 			@SuppressWarnings("unused") | ||||
| 			long sqDist; | ||||
| 			WorldObject element = iter.next(); | ||||
| 			if (element.equals(object) || ((sqDist = ((dx = (x1 = element.getX()) - x) * dx) + ((dy = (y1 = element.getY()) - y) * dy)) >= sqRadius)) | ||||
| 			if ((worldObject == null) || worldObject.equals(object) || (Math.sqrt(Math.pow(x - worldObject.getX(), 2) + Math.pow(y - worldObject.getY(), 2)) > radius)) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 			result.add(element); | ||||
| 			result.add(worldObject); | ||||
| 		} | ||||
| 		return result.toArray(new WorldObject[result.size()]); | ||||
| 		return result; | ||||
| 	} | ||||
| 	 | ||||
| 	public PlayerInstance[] getAllPlayers() | ||||
| 	public Collection<PlayerInstance> getAllPlayers() | ||||
| 	{ | ||||
| 		return _allPlayers.values().toArray(new PlayerInstance[_allPlayers.size()]); | ||||
| 		return _allPlayers.values(); | ||||
| 	} | ||||
| 	 | ||||
| 	public PlayerInstance getPlayer(String name) | ||||
| 	{ | ||||
| 		return (PlayerInstance) _allPlayers.get(name.toLowerCase()); | ||||
| 		return _allPlayers.get(name.toLowerCase()); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -45,40 +45,38 @@ public class Appearing extends ClientBasePacket | ||||
| 		Connection con = client.getConnection(); | ||||
| 		UserInfo ui = new UserInfo(activeChar); | ||||
| 		con.sendPacket(ui); | ||||
| 		WorldObject[] visible = World.getInstance().getVisibleObjects(activeChar, 2000); | ||||
| 		_log.fine("npc in range:" + visible.length); | ||||
| 		for (int i = 0; i < visible.length; ++i) | ||||
| 		for (WorldObject worldObject : World.getInstance().getVisibleObjects(activeChar, 2000)) | ||||
| 		{ | ||||
| 			NpcInfo ni; | ||||
| 			Creature npc; | ||||
| 			activeChar.addKnownObject(visible[i]); | ||||
| 			if (visible[i] instanceof ItemInstance) | ||||
| 			activeChar.addKnownObject(worldObject); | ||||
| 			if (worldObject instanceof ItemInstance) | ||||
| 			{ | ||||
| 				SpawnItem si = new SpawnItem((ItemInstance) visible[i]); | ||||
| 				SpawnItem si = new SpawnItem((ItemInstance) worldObject); | ||||
| 				con.sendPacket(si); | ||||
| 				continue; | ||||
| 			} | ||||
| 			if (visible[i] instanceof NpcInstance) | ||||
| 			if (worldObject instanceof NpcInstance) | ||||
| 			{ | ||||
| 				ni = new NpcInfo((NpcInstance) visible[i]); | ||||
| 				ni = new NpcInfo((NpcInstance) worldObject); | ||||
| 				con.sendPacket(ni); | ||||
| 				npc = (NpcInstance) visible[i]; | ||||
| 				npc = (NpcInstance) worldObject; | ||||
| 				npc.addKnownObject(activeChar); | ||||
| 				continue; | ||||
| 			} | ||||
| 			if (visible[i] instanceof PetInstance) | ||||
| 			if (worldObject instanceof PetInstance) | ||||
| 			{ | ||||
| 				ni = new NpcInfo((PetInstance) visible[i]); | ||||
| 				ni = new NpcInfo((PetInstance) worldObject); | ||||
| 				con.sendPacket(ni); | ||||
| 				npc = (PetInstance) visible[i]; | ||||
| 				npc = (PetInstance) worldObject; | ||||
| 				npc.addKnownObject(activeChar); | ||||
| 				continue; | ||||
| 			} | ||||
| 			if (!(visible[i] instanceof PlayerInstance)) | ||||
| 			if (!(worldObject instanceof PlayerInstance)) | ||||
| 			{ | ||||
| 				continue; | ||||
| 			} | ||||
| 			PlayerInstance player = (PlayerInstance) visible[i]; | ||||
| 			PlayerInstance player = (PlayerInstance) worldObject; | ||||
| 			con.sendPacket(new CharInfo(player)); | ||||
| 			player.addKnownObject(activeChar); | ||||
| 			player.getNetConnection().sendPacket(new CharInfo(activeChar)); | ||||
|   | ||||
| @@ -21,7 +21,6 @@ import java.io.IOException; | ||||
|  | ||||
| import org.l2jmobius.gameserver.ClientThread; | ||||
| import org.l2jmobius.gameserver.model.World; | ||||
| import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; | ||||
| import org.l2jmobius.gameserver.network.serverpackets.PartyMatchList; | ||||
|  | ||||
| public class RequestPartyMatchList extends ClientBasePacket | ||||
| @@ -34,8 +33,7 @@ public class RequestPartyMatchList extends ClientBasePacket | ||||
| 		int status = readD(); | ||||
| 		if (status == 1) | ||||
| 		{ | ||||
| 			PlayerInstance[] allPlayers = World.getInstance().getAllPlayers(); | ||||
| 			PartyMatchList matchList = new PartyMatchList(allPlayers); | ||||
| 			PartyMatchList matchList = new PartyMatchList(World.getInstance().getAllPlayers()); | ||||
| 			client.getConnection().sendPacket(matchList); | ||||
| 		} | ||||
| 		else if (status == 3) | ||||
|   | ||||
| @@ -72,8 +72,7 @@ public class Say2 extends ClientBasePacket | ||||
| 		} | ||||
| 		else if ((type == 1) || (type == 8)) | ||||
| 		{ | ||||
| 			PlayerInstance[] players = World.getInstance().getAllPlayers(); | ||||
| 			for (PlayerInstance player : players) | ||||
| 			for (PlayerInstance player : World.getInstance().getAllPlayers()) | ||||
| 			{ | ||||
| 				player.sendPacket(cs); | ||||
| 			} | ||||
|   | ||||
| @@ -48,8 +48,7 @@ public class SendBypassBuildCmd extends ClientBasePacket | ||||
| 				{ | ||||
| 					String text = command.substring(9); | ||||
| 					CreatureSay cs = new CreatureSay(0, 10, activeChar.getName(), text); | ||||
| 					PlayerInstance[] players = World.getInstance().getAllPlayers(); | ||||
| 					for (PlayerInstance player : players) | ||||
| 					for (PlayerInstance player : World.getInstance().getAllPlayers()) | ||||
| 					{ | ||||
| 						player.sendPacket(cs); | ||||
| 					} | ||||
|   | ||||
| @@ -83,15 +83,14 @@ public class ValidatePosition extends ClientBasePacket | ||||
| 					_log.fine("deleted " + delete + " objects"); | ||||
| 				} | ||||
| 				int newObjects = 0; | ||||
| 				WorldObject[] visible = World.getInstance().getVisibleObjects(activeChar, 3000); | ||||
| 				for (WorldObject element : visible) | ||||
| 				for (WorldObject worldObject : World.getInstance().getVisibleObjects(activeChar, 3000)) | ||||
| 				{ | ||||
| 					if (activeChar.knownsObject(element)) | ||||
| 					if (activeChar.knownsObject(worldObject)) | ||||
| 					{ | ||||
| 						continue; | ||||
| 					} | ||||
| 					activeChar.addKnownObject(element); | ||||
| 					element.addKnownObject(activeChar); | ||||
| 					activeChar.addKnownObject(worldObject); | ||||
| 					worldObject.addKnownObject(activeChar); | ||||
| 					++newObjects; | ||||
| 				} | ||||
| 				if (newObjects > 0) | ||||
|   | ||||
| @@ -17,14 +17,16 @@ | ||||
|  */ | ||||
| package org.l2jmobius.gameserver.network.serverpackets; | ||||
|  | ||||
| import java.util.Collection; | ||||
|  | ||||
| import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; | ||||
|  | ||||
| public class PartyMatchList extends ServerBasePacket | ||||
| { | ||||
| 	private static final String _S__AF_PARTYMATCHLIST = "[S] AF PartyMatchList"; | ||||
| 	private final PlayerInstance[] _matchingPlayers; | ||||
| 	private final Collection<PlayerInstance> _matchingPlayers; | ||||
| 	 | ||||
| 	public PartyMatchList(PlayerInstance[] allPlayers) | ||||
| 	public PartyMatchList(Collection<PlayerInstance> allPlayers) | ||||
| 	{ | ||||
| 		_matchingPlayers = allPlayers; | ||||
| 	} | ||||
| @@ -33,24 +35,24 @@ public class PartyMatchList extends ServerBasePacket | ||||
| 	public byte[] getContent() | ||||
| 	{ | ||||
| 		writeC(175); | ||||
| 		int size = _matchingPlayers.length; | ||||
| 		int size = _matchingPlayers.size(); | ||||
| 		if (size > 40) | ||||
| 		{ | ||||
| 			size = 40; | ||||
| 		} | ||||
| 		writeD(size); | ||||
| 		for (int i = 0; i < size; ++i) | ||||
| 		for (PlayerInstance player : _matchingPlayers) | ||||
| 		{ | ||||
| 			writeD(_matchingPlayers[i].getObjectId()); | ||||
| 			writeS(_matchingPlayers[i].getName()); | ||||
| 			writeD(_matchingPlayers[i].getLevel()); | ||||
| 			writeD(_matchingPlayers[i].getClassId()); | ||||
| 			writeD(player.getObjectId()); | ||||
| 			writeS(player.getName()); | ||||
| 			writeD(player.getLevel()); | ||||
| 			writeD(player.getClassId()); | ||||
| 			writeD(0); | ||||
| 			writeD(_matchingPlayers[i].getClanId()); | ||||
| 			writeD(player.getClanId()); | ||||
| 			writeD(0); | ||||
| 			writeD(_matchingPlayers[i].getX()); | ||||
| 			writeD(_matchingPlayers[i].getY()); | ||||
| 			writeD(_matchingPlayers[i].getZ()); | ||||
| 			writeD(player.getX()); | ||||
| 			writeD(player.getY()); | ||||
| 			writeD(player.getZ()); | ||||
| 		} | ||||
| 		return getBytes(); | ||||
| 	} | ||||
|   | ||||
| @@ -116,7 +116,7 @@ public class SystemPanel extends JPanel | ||||
| 			@Override | ||||
| 			public void run() | ||||
| 			{ | ||||
| 				lblConnected.setText("Connected: " + World.getInstance().getAllPlayers().length); | ||||
| 				lblConnected.setText("Connected: " + World.getInstance().getAllPlayers().size()); | ||||
| 				lblMaxConnected.setText("Max connected: " + PlayerCountManager.getInstance().getMaxConnectedCount()); | ||||
| 				lblElapsedTime.setText("Elapsed: " + getDurationBreakdown(System.currentTimeMillis() - startTime)); | ||||
| 			} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDevelopment
					MobiusDevelopment