458aa79f63
Upstream has released updates that appears to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing
Bukkit Changes:
451bd74e Use gson for decoding version command
CraftBukkit Changes:
51100db8
SPIGOT-4678: Fix placing signs in certain circumstances
155 Zeilen
6.4 KiB
Diff
155 Zeilen
6.4 KiB
Diff
From 1bc123f10d8aefd48085360b80c7daee9945ec04 Mon Sep 17 00:00:00 2001
|
|
From: Zach Brown <zach.brown@destroystokyo.com>
|
|
Date: Mon, 29 Feb 2016 17:58:01 -0600
|
|
Subject: [PATCH] Check Paper versions
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/command/defaults/VersionCommand.java b/src/main/java/org/bukkit/command/defaults/VersionCommand.java
|
|
index b8126985d..73d258763 100644
|
|
--- a/src/main/java/org/bukkit/command/defaults/VersionCommand.java
|
|
+++ b/src/main/java/org/bukkit/command/defaults/VersionCommand.java
|
|
@@ -28,6 +28,14 @@ import java.util.concurrent.locks.ReentrantLock;
|
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
+// Paper start
|
|
+import java.io.InputStreamReader;
|
|
+import java.net.HttpURLConnection;
|
|
+import org.json.simple.JSONObject;
|
|
+import org.json.simple.parser.JSONParser;
|
|
+import org.json.simple.parser.ParseException;
|
|
+// Paper end
|
|
+
|
|
public class VersionCommand extends BukkitCommand {
|
|
public VersionCommand(@NotNull String name) {
|
|
super(name);
|
|
@@ -153,7 +161,7 @@ public class VersionCommand extends BukkitCommand {
|
|
|
|
private void sendVersion(@NotNull CommandSender sender) {
|
|
if (hasVersion) {
|
|
- if (System.currentTimeMillis() - lastCheck > 21600000) {
|
|
+ if (System.currentTimeMillis() - lastCheck > 7200000) { // Paper - Lower to 2 hours
|
|
lastCheck = System.currentTimeMillis();
|
|
hasVersion = false;
|
|
} else {
|
|
@@ -184,24 +192,28 @@ public class VersionCommand extends BukkitCommand {
|
|
}
|
|
}
|
|
|
|
+ // Paper start
|
|
private void obtainVersion() {
|
|
String version = Bukkit.getVersion();
|
|
if (version == null) version = "Custom";
|
|
- if (version.startsWith("git-Spigot-")) {
|
|
- String[] parts = version.substring("git-Spigot-".length()).split("-");
|
|
- int cbVersions = getDistance("craftbukkit", parts[1].substring(0, parts[1].indexOf(' ')));
|
|
- int spigotVersions = getDistance("spigot", parts[0]);
|
|
- if (cbVersions == -1 || spigotVersions == -1) {
|
|
- setVersionMessage("Error obtaining version information");
|
|
- } else {
|
|
- if (cbVersions == 0 && spigotVersions == 0) {
|
|
+ if (version.startsWith("git-Paper-")) {
|
|
+ String[] parts = version.substring("git-Paper-".length()).split("[-\\s]");
|
|
+ int distance = getDistance(null, parts[0]);
|
|
+ switch (distance) {
|
|
+ case -1:
|
|
+ setVersionMessage("Error obtaining version information");
|
|
+ break;
|
|
+ case 0:
|
|
setVersionMessage("You are running the latest version");
|
|
- } else {
|
|
- setVersionMessage("You are " + (cbVersions + spigotVersions) + " version(s) behind");
|
|
- }
|
|
+ break;
|
|
+ case -2:
|
|
+ setVersionMessage("Unknown version");
|
|
+ break;
|
|
+ default:
|
|
+ setVersionMessage("You are " + distance + " version(s) behind");
|
|
}
|
|
-
|
|
} else if (version.startsWith("git-Bukkit-")) {
|
|
+ // Paper end
|
|
version = version.substring("git-Bukkit-".length());
|
|
int cbVersions = getDistance("craftbukkit", version.substring(0, version.indexOf(' ')));
|
|
if (cbVersions == -1) {
|
|
@@ -234,8 +246,16 @@ public class VersionCommand extends BukkitCommand {
|
|
}
|
|
}
|
|
|
|
- private static int getDistance(@NotNull String repo, @NotNull String hash) {
|
|
+ // Paper start
|
|
+ private static int getDistance(@NotNull String repo, @NotNull String verInfo) {
|
|
try {
|
|
+ int currentVer = Integer.decode(verInfo);
|
|
+ return getFromJenkins(currentVer);
|
|
+ } catch (NumberFormatException ex) {
|
|
+ verInfo = verInfo.replace("\"", "");
|
|
+ return getFromRepo("PaperMC/Paper", "master", verInfo);
|
|
+ }
|
|
+ /*
|
|
BufferedReader reader = Resources.asCharSource(
|
|
new URL("https://hub.spigotmc.org/stash/rest/api/1.0/projects/SPIGOT/repos/" + repo + "/commits?since=" + URLEncoder.encode(hash, "UTF-8") + "&withCounts=true"),
|
|
Charsets.UTF_8
|
|
@@ -249,9 +269,57 @@ public class VersionCommand extends BukkitCommand {
|
|
} finally {
|
|
reader.close();
|
|
}
|
|
+ */
|
|
+ }
|
|
+
|
|
+ private static int getFromJenkins(int currentVer) {
|
|
+ try {
|
|
+ BufferedReader reader = Resources.asCharSource(
|
|
+ new URL("https://ci.destroystokyo.com/job/Paper-1.13/lastSuccessfulBuild/buildNumber"), // Paper
|
|
+ Charsets.UTF_8
|
|
+ ).openBufferedStream();
|
|
+ try {
|
|
+ int newVer = Integer.decode(reader.readLine());
|
|
+ return newVer - currentVer;
|
|
+ } catch (NumberFormatException ex) {
|
|
+ ex.printStackTrace();
|
|
+ return -2;
|
|
+ } finally {
|
|
+ reader.close();
|
|
+ }
|
|
+ } catch (IOException e) {
|
|
+ e.printStackTrace();
|
|
+ return -1;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ // Contributed by Techcable <Techcable@outlook.com> in GH PR #65
|
|
+ private static int getFromRepo(String repo, String branch, String hash) {
|
|
+ try {
|
|
+ HttpURLConnection connection = (HttpURLConnection) new URL("https://api.github.com/repos/" + repo + "/compare/" + branch + "..." + hash).openConnection();
|
|
+ connection.connect();
|
|
+ if (connection.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) return -2; // Unknown commit
|
|
+ try (
|
|
+ BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charsets.UTF_8))
|
|
+ ) {
|
|
+ JSONObject obj = (JSONObject) new JSONParser().parse(reader);
|
|
+ String status = (String) obj.get("status");
|
|
+ switch (status) {
|
|
+ case "identical":
|
|
+ return 0;
|
|
+ case "behind":
|
|
+ return ((Number) obj.get("behind_by")).intValue();
|
|
+ default:
|
|
+ return -1;
|
|
+ }
|
|
+ } catch (ParseException | NumberFormatException e) {
|
|
+ e.printStackTrace();
|
|
+ return -1;
|
|
+ }
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
return -1;
|
|
}
|
|
}
|
|
+ // Paper end
|
|
}
|
|
--
|
|
2.21.0
|
|
|