diff options
Diffstat (limited to 'src/net/minecraft/VersionManager.java')
-rw-r--r-- | src/net/minecraft/VersionManager.java | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/net/minecraft/VersionManager.java b/src/net/minecraft/VersionManager.java new file mode 100644 index 0000000..1c7a114 --- /dev/null +++ b/src/net/minecraft/VersionManager.java @@ -0,0 +1,41 @@ +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<GameVersion> 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); + } + } +} |