summaryrefslogtreecommitdiff
path: root/src/net/minecraft/GameVersion.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/minecraft/GameVersion.java')
-rw-r--r--src/net/minecraft/GameVersion.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/net/minecraft/GameVersion.java b/src/net/minecraft/GameVersion.java
new file mode 100644
index 0000000..7698b5d
--- /dev/null
+++ b/src/net/minecraft/GameVersion.java
@@ -0,0 +1,79 @@
+package net.minecraft;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.time.Instant;
+import java.util.Scanner;
+
+public class GameVersion {
+ public String name;
+ public String desc;
+ public Instant compiledOn;
+ public Instant releasedOn;
+
+ public URL gameJarUrl;
+ public String proxyArgs;
+
+ private boolean infoDownloaded = false;
+
+ public GameVersion(String name, String desc, long compileTimestamp, long releaseTimestamp) {
+ this.name = name;
+ this.desc = desc;
+ this.compiledOn = Instant.ofEpochMilli(compileTimestamp);
+ this.releasedOn = Instant.ofEpochMilli(releaseTimestamp);
+ }
+
+ public void downloadInfo() throws IOException {
+ URL infoUrl = new URL("http://files.betacraft.uk/launcher/assets/jsons/" + name + ".info");
+ Scanner scanner = new Scanner(infoUrl.openStream(), "UTF-8");
+ while (scanner.hasNextLine()) {
+ String[] keyValueList = scanner.nextLine().split(":", 2);
+
+ if (keyValueList.length < 2)
+ continue;
+
+ String key = keyValueList[0];
+ String value = keyValueList[1];
+
+ switch (key) {
+ case "url":
+ gameJarUrl = new URL(value);
+ break;
+ case "proxy-args":
+ proxyArgs = value;
+ break;
+ }
+ }
+ infoDownloaded = true;
+ }
+
+ public boolean hasFullInfo() {
+ return infoDownloaded;
+ }
+
+ public boolean isPreleaseOrDemo() {
+ boolean isDemo = name.contains("demo");
+ boolean isPrerelease = name.contains("pre") || name.contains("test") || name.contains("w");
+ boolean isClassic = name.startsWith("c");
+ return isDemo || isPrerelease || isClassic;
+ }
+
+ public boolean isSameVersion(File versionFile) throws IOException {
+ DataInputStream dis = new DataInputStream(Files.newInputStream(versionFile.toPath()));
+ String version = dis.readUTF();
+ dis.close();
+
+ long versionTimestamp = Long.parseLong(version);
+ return releasedOn.getEpochSecond() == versionTimestamp;
+ }
+
+ public void writeVersionFile(File file) throws IOException {
+ DataOutputStream dos = new DataOutputStream(Files.newOutputStream(file.toPath()));
+ dos.writeUTF(String.valueOf(releasedOn.getEpochSecond()));
+ dos.close();
+ }
+}