public Player(Socket inSocket, DuskEngine inEngine) {
		try {
			QUE_MSG = new FifoQueue();
			SendThread st = new SendThread(this);
			THR_SEND = new Thread(st);
			THR_SEND.start();
			bytObjType = (byte)0;
			Type = 0;
			Game = inEngine;
			ID = Game.getID();
			SCK_CONN = inSocket;
			SCK_CONN.setSoTimeout(600000); //10 minute timeout
			SCK_CONN.setSoLinger(false,0); //Do not linger on disconnect
			BUF_SCK_IN = new BufferedReader(new InputStreamReader(SCK_CONN.getInputStream()));
			OUT = new DataOutputStream(SCK_CONN.getOutputStream());
			Game.LOG.printMessage(Log.INFO, SCK_CONN.toString());
			BATTLE = null;
			BLN_SLEEP = false;
			if (Game.MAX_CONN != 0 && Game.vctSockets.size() >= Game.MAX_CONN) {
				chatMessage("Sorry, the server has reached it's connection limit. Try again later.\n");
				SCK_CONN.close();
				return;
			}
			// Game is shutting down
			if (Game.BLN_SHUTDOWN) {
				chatMessage("Sorry, the server is not accepting new connections. It is either being shutdown or worked on.  Try again later.\n");
				SCK_CONN.close();
				return;
			}
			if (!Game.isGoodIP(SCK_CONN.getInetAddress().toString()))
			{
				chatMessage("Connections from your machine are no longer being accepted.\n");
				return;
			}
			// IP Filter
			if (Game.BLN_IPF) {
				for (int i = 0;i < Game.vctSockets.size();i++) {
					String IP = ((Entity)Game.vctSockets.elementAt(i)).SCK_CONN.getInetAddress().toString();
					if (IP.equalsIgnoreCase(SCK_CONN.getInetAddress().toString())) {
		    			chatMessage("There's already a player connected from your IP address.\n");
						closeNosavePlayer();
						return;
					}
				}
			}
			// End IPF
		} catch(Exception e) {
			Game.LOG.printError("Player():Creating a new player object", e);	
		}
	}