public static ArrayList<Entity> loadEntities(Game game, int id, int mapHeight)
	{
		ArrayList<Entity> entities = new ArrayList<Entity>();
		
		try
		{
			BufferedReader reader = new BufferedReader(new InputStreamReader(Assets.class.getResourceAsStream("/ca/josephroque/ld30/_resources/text/level" + id + "_entity.txt")));
			String line = reader.readLine();
			String input = "";
			while (line != null)
			{
				input += line + "\n";
				line = reader.readLine();
			}
			
			String[] entityList = input.split("\n");
			for (int i = 0; i < entityList.length; i++)
			{
				String entityName = entityList[i].substring(0, entityList[i].indexOf(":"));
				String[] stats = entityList[i].substring(entityList[i].indexOf(":") + 1).split(",");
				switch(entityName)
				{
				case "PLAYER":
					game.getPlayer(true).setPosition(Integer.parseInt(stats[0]), Integer.parseInt(stats[1]));
					game.getPlayer(false).setPosition(Integer.parseInt(stats[0]), mapHeight / 2 + (mapHeight / 2 - game.getPlayer(true).getY() - game.getPlayer(true).getHeight()));
					break;
				case "GUARD_OVER":
					entities.add(new Guard(Integer.parseInt(stats[0]), Integer.parseInt(stats[1]), Integer.parseInt(stats[2]), Integer.parseInt(stats[3]), true));
					break;
				case "GUARD_UNDER":
					entities.add(new Guard(Integer.parseInt(stats[0]), Integer.parseInt(stats[1]), Integer.parseInt(stats[2]), Integer.parseInt(stats[3]), false));
					break;
				case "DOOR_OVER":
					entities.add(new Door(Integer.parseInt(stats[0]), Integer.parseInt(stats[1]), true, Boolean.parseBoolean(stats[2])));
					break;
				case "DOOR_UNDER":
					entities.add(new Door(Integer.parseInt(stats[0]), Integer.parseInt(stats[1]), false, Boolean.parseBoolean(stats[2])));
					break;
				}
			}
		} catch (IOException io)
		{
			if (Constants.shouldPrintToConsole)
			{
				io.printStackTrace();
			}
		}
		
		return entities;
	}