public static Path getPath(Vector start, Vector t) {
		try {
			openList = new ArrayList<>();
			closedList = new ArrayList<>();
			
			target = t;
			
			Comparator<Node> comparator = new Comparator<Node>() {
				@Override
				public int compare(Node o1, Node o2) {
					if (o1 == null || o2 == null) CFG.p("nuuuuuuuuuuuuuuullllllllll");
					return Float.compare(o1.F, o2.F);
				}
			};
			
			openList.add(new Node(0, start.getDistance(target), start, null));
			
			Node activeNode = null;
			
			while (true) {
				if (openList.size() == 0) {
					return null; // no way
				}
				
				Collections.sort(openList, comparator);
				activeNode = openList.remove(0);
				
				closedList.add(activeNode);
				
				if (activeNode.H == 0) {
					break; // found way
				}
				
				handleAdjacentTiles(activeNode);
			}
			
			ArrayList<Node> path = new ArrayList<>();
			Node node = activeNode;
			path.add(node.clone());
			while (node.p != null) {
				path.add(node.p.clone());
				node = node.p;
			}
			
			Collections.reverse(path);
			return toPath(path);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}