diff --git a/leaf-server/paper-patches/features/0001-Rebrand.patch b/leaf-server/paper-patches/features/0001-Rebrand.patch index cc18eb38..5d465258 100644 --- a/leaf-server/paper-patches/features/0001-Rebrand.patch +++ b/leaf-server/paper-patches/features/0001-Rebrand.patch @@ -220,7 +220,7 @@ index 94a9ed024d3859793618152ea559a168bbcbb5e2..e60008693e017bec1b4eb49c84be3898 -. +. diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -index d0554ed6631535815e5932930911e3fe1dee8710..07b4e19ea672b38b8127da30b4111e903274f944 100644 +index d0554ed6631535815e5932930911e3fe1dee8710..b307827f6ae1da2151edb89adccd4d36df544963 100644 --- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java +++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java @@ -9,6 +9,7 @@ import com.google.gson.JsonObject; @@ -239,7 +239,7 @@ index d0554ed6631535815e5932930911e3fe1dee8710..07b4e19ea672b38b8127da30b4111e90 import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.format.NamedTextColor; -@@ -30,60 +32,36 @@ import org.slf4j.Logger; +@@ -30,117 +32,22 @@ import org.slf4j.Logger; import static net.kyori.adventure.text.Component.text; import static net.kyori.adventure.text.format.TextColor.color; @@ -254,22 +254,13 @@ index d0554ed6631535815e5932930911e3fe1dee8710..07b4e19ea672b38b8127da30b4111e90 - private static final int DISTANCE_ERROR = -1; - private static final int DISTANCE_UNKNOWN = -2; - private static final String DOWNLOAD_PAGE = "https://papermc.io/downloads/paper"; -+public class PaperVersionFetcher extends org.galemc.gale.version.AbstractPaperVersionFetcher { - +- - @Override - public long getCacheTime() { - return 720000; -+ public PaperVersionFetcher() { -+ super( -+ "https://papermc.io/downloads/paper", -+ "PaperMC", -+ "Paper", -+ "PaperMC", -+ "Paper" -+ ); - } - - @Override +- } +- +- @Override - public Component getVersionMessage() { - final Component updateMessage; - final ServerBuildInfo build = ServerBuildInfo.buildInfo(); @@ -281,10 +272,8 @@ index d0554ed6631535815e5932930911e3fe1dee8710..07b4e19ea672b38b8127da30b4111e90 - final @Nullable Component history = this.getHistory(); - - return history != null ? Component.textOfChildren(updateMessage, Component.newline(), history) : updateMessage; -+ protected boolean canFetchDistanceFromSiteApi() { -+ return true; - } - +- } +- - private static Component getUpdateStatusMessage(final String repo, final ServerBuildInfo build) { - int distance = DISTANCE_ERROR; - @@ -310,21 +299,30 @@ index d0554ed6631535815e5932930911e3fe1dee8710..07b4e19ea672b38b8127da30b4111e90 - .hoverEvent(text("Click to open", NamedTextColor.WHITE)) - .clickEvent(ClickEvent.openUrl(DOWNLOAD_PAGE)))); - }; -+ @Override -+ protected int fetchDistanceFromSiteApi(int jenkinsBuild) { -+ return fetchDistanceFromPaperApi(ServerBuildInfo.buildInfo(), jenkinsBuild); - } -+ // Gale end - branding changes - version fetcher - +- } +- - private static int fetchDistanceFromSiteApi(final ServerBuildInfo build, final int jenkinsBuild) { -+ private static int fetchDistanceFromPaperApi(final ServerBuildInfo build, final int jenkinsBuild) { - try { - try (final BufferedReader reader = Resources.asCharSource( - URI.create("https://api.papermc.io/v2/projects/paper/versions/" + build.minecraftVersionId()).toURL(), -@@ -105,42 +83,4 @@ public class PaperVersionFetcher implements VersionFetcher { - return DISTANCE_ERROR; - } - } +- try { +- try (final BufferedReader reader = Resources.asCharSource( +- URI.create("https://api.papermc.io/v2/projects/paper/versions/" + build.minecraftVersionId()).toURL(), +- StandardCharsets.UTF_8 +- ).openBufferedStream()) { +- final JsonObject json = new Gson().fromJson(reader, JsonObject.class); +- final JsonArray builds = json.getAsJsonArray("builds"); +- final int latest = StreamSupport.stream(builds.spliterator(), false) +- .mapToInt(JsonElement::getAsInt) +- .max() +- .orElseThrow(); +- return latest - jenkinsBuild; +- } catch (final JsonSyntaxException ex) { +- LOGGER.error("Error parsing json from Paper's downloads API", ex); +- return DISTANCE_ERROR; +- } +- } catch (final IOException e) { +- LOGGER.error("Error while parsing version", e); +- return DISTANCE_ERROR; +- } +- } - - // Contributed by Techcable in GH-65 - private static int fetchDistanceFromGitHub(final String repo, final String branch, final String hash) { @@ -362,7 +360,18 @@ index d0554ed6631535815e5932930911e3fe1dee8710..07b4e19ea672b38b8127da30b4111e90 - } - - return text("Previous version: " + oldVersion, NamedTextColor.GRAY, TextDecoration.ITALIC); -- } ++public class PaperVersionFetcher extends org.galemc.gale.version.AbstractPaperVersionFetcher { ++ ++ public PaperVersionFetcher() { ++ super( ++ "https://papermc.io/downloads/paper", ++ "PaperMC", ++ "Paper", ++ "PaperMC", ++ "Paper" ++ ); + } ++ // Gale end - branding changes - version fetcher } diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java index 6ee39b534b8d992655bc0cef3c299d12cbae0034..f59879ae7d3c73cd4c4233d30667988bf22f12f1 100644 diff --git a/leaf-server/src/main/java/org/dreeam/leaf/version/LeafVersionFetcher.java b/leaf-server/src/main/java/org/dreeam/leaf/version/LeafVersionFetcher.java index 1ef8fe73..4cfb2f1f 100644 --- a/leaf-server/src/main/java/org/dreeam/leaf/version/LeafVersionFetcher.java +++ b/leaf-server/src/main/java/org/dreeam/leaf/version/LeafVersionFetcher.java @@ -13,6 +13,8 @@ import java.io.BufferedReader; import java.io.IOException; import java.net.URI; import java.nio.charset.StandardCharsets; +import java.util.Optional; +import java.util.OptionalInt; import java.util.stream.StreamSupport; public class LeafVersionFetcher extends AbstractPaperVersionFetcher { @@ -28,16 +30,20 @@ public class LeafVersionFetcher extends AbstractPaperVersionFetcher { } @Override - protected boolean canFetchDistanceFromSiteApi() { - return true; + protected int fetchDistanceFromAPI(final String repo, final ServerBuildInfo build) { + int distance = DISTANCE_ERROR; + + final Optional gitBranch = build.gitBranch(); + final Optional gitCommit = build.gitCommit(); + final OptionalInt buildNumber = build.buildNumber(); + if (gitBranch.isPresent() && gitCommit.isPresent() && buildNumber.isPresent()) { + distance = fetchDistanceFromLeafApi(build, buildNumber.getAsInt()); + } + + return distance; } - @Override - protected int fetchDistanceFromSiteApi(int jenkinsBuild) { - return fetchDistanceFromLeafApi(ServerBuildInfo.buildInfo(), jenkinsBuild); - } - - private static int fetchDistanceFromLeafApi(final ServerBuildInfo build, final int jenkinsBuild) { + private static int fetchDistanceFromLeafApi(final ServerBuildInfo build, final int current) { try { try (final BufferedReader reader = Resources.asCharSource( URI.create("https://api.leafmc.one/v2/projects/leaf/versions/" + build.minecraftVersionId()).toURL(), @@ -49,7 +55,7 @@ public class LeafVersionFetcher extends AbstractPaperVersionFetcher { .mapToInt(JsonElement::getAsInt) .max() .orElseThrow(); - return latest - jenkinsBuild; + return latest - current; } catch (final JsonSyntaxException ex) { LOGGER.error("Error parsing json from Leaf's downloads API", ex); return DISTANCE_ERROR; diff --git a/leaf-server/src/main/java/org/galemc/gale/version/AbstractPaperVersionFetcher.java b/leaf-server/src/main/java/org/galemc/gale/version/AbstractPaperVersionFetcher.java index 4c69c10f..a79035b5 100644 --- a/leaf-server/src/main/java/org/galemc/gale/version/AbstractPaperVersionFetcher.java +++ b/leaf-server/src/main/java/org/galemc/gale/version/AbstractPaperVersionFetcher.java @@ -77,16 +77,7 @@ public abstract class AbstractPaperVersionFetcher implements VersionFetcher { } // Gale start - branding changes - version fetcher - protected boolean canFetchDistanceFromSiteApi() { - return false; - } - - protected int fetchDistanceFromSiteApi(int jenkinsBuild) { - return -1; - } - // Gale end - branding changes - version fetcher - - private Component getUpdateStatusMessage(final String repo, final ServerBuildInfo build) { + protected int fetchDistanceFromAPI(final String repo, final ServerBuildInfo build) { int distance = DISTANCE_ERROR; // Gale start - branding changes - version fetcher @@ -95,7 +86,13 @@ public abstract class AbstractPaperVersionFetcher implements VersionFetcher { if (gitBranch.isPresent() && gitCommit.isPresent()) { distance = fetchDistanceFromGitHub(repo, gitBranch.get(), gitCommit.get()); } - // Gale end - branding changes - version fetcher + + return distance; + } + // Gale end - branding changes - version fetcher + + private Component getUpdateStatusMessage(final String repo, final ServerBuildInfo build) { + int distance = fetchDistanceFromAPI(repo, build); // Gale - branding changes - version fetcher return switch (distance) { case DISTANCE_ERROR -> text("* Error obtaining version information", NamedTextColor.RED); // Purpur - Rebrand