From 1a1e124db2bd5e6d71ecb5fcaba4c26e576d70ea Mon Sep 17 00:00:00 2001 From: cflip Date: Thu, 24 Aug 2023 19:31:05 -0600 Subject: Get versions and jar URL from BetaCraft's version_list.txt --- src/net/minecraft/VersionManager.java | 41 +++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/net/minecraft/VersionManager.java (limited to 'src/net/minecraft/VersionManager.java') 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 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); + } + } +} -- cgit v1.2.3