package net.minecraft; import java.io.IOException; import java.net.URL; import java.time.Instant; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Scanner; public class VersionManager { public final List versions = new ArrayList<>(); public VersionManager() { try { downloadVersionList(); } catch (IOException e) { throw new RuntimeException(e); } } public GameVersion getVersionForInstant(Instant instant) { return versions.stream() .filter(v -> !v.isPreleaseOrDemo()) .filter(v -> v.releasedOn.isBefore(instant)) .max(Comparator.comparing((GameVersion a) -> a.releasedOn)) .orElse(null); } private void downloadVersionList() throws IOException { URL versionListURL = new URL("http://files.betacraft.uk/launcher/assets/version_list.txt"); Scanner scanner = new Scanner(versionListURL.openStream(), "UTF-8"); while (scanner.hasNextLine()) { String[] versionInfo = scanner.nextLine().split("`"); long compileTimestamp = Long.parseLong(versionInfo[2]); long releaseTimestamp = Long.parseLong(versionInfo[3]); GameVersion version = new GameVersion(versionInfo[0], versionInfo[1], compileTimestamp, releaseTimestamp); versions.add(version); } } }