From 0e61d3f9ddf600523ce51e95cd20a530b57e9753 Mon Sep 17 00:00:00 2001 From: david Date: Wed, 27 Aug 2025 17:49:05 +0200 Subject: [PATCH] Added `isConsidered` and `notifySnapshotReleases` methods Introduced new methods to enhance version filtering logic and added support for snapshot release notifications. --- .../paper/version/PaperHangarVersionChecker.java | 13 ++++++++++++- .../core/paper/version/PluginVersionChecker.java | 7 +++++++ .../src/main/java/core/version/VersionChecker.java | 10 ++++++++++ .../core/version/github/GitHubVersionChecker.java | 3 +++ .../core/version/hangar/HangarVersionChecker.java | 3 +++ .../version/modrinth/ModrinthVersionChecker.java | 3 +++ 6 files changed, 38 insertions(+), 1 deletion(-) diff --git a/paper/src/main/java/core/paper/version/PaperHangarVersionChecker.java b/paper/src/main/java/core/paper/version/PaperHangarVersionChecker.java index ef336d3..e45888e 100644 --- a/paper/src/main/java/core/paper/version/PaperHangarVersionChecker.java +++ b/paper/src/main/java/core/paper/version/PaperHangarVersionChecker.java @@ -86,7 +86,18 @@ private void printVersionInfo(V version) { @Override public boolean isSupported(HangarVersion version) { return version.platformDependencies().get(Platform.PAPER) - .contains(plugin.getServer().getMinecraftVersion()); + .contains(plugin.getServer().getMinecraftVersion()) + && (notifySnapshotReleases() || version.); + } + + @Override + public boolean notifySnapshotReleases() { + return versionRunning; + } + + @Override + public boolean isConsidered(V version) { + return notifySnapshotReleases() || version.preRelease() != null; } @Override diff --git a/paper/src/main/java/core/paper/version/PluginVersionChecker.java b/paper/src/main/java/core/paper/version/PluginVersionChecker.java index faaf95a..35b23d7 100644 --- a/paper/src/main/java/core/paper/version/PluginVersionChecker.java +++ b/paper/src/main/java/core/paper/version/PluginVersionChecker.java @@ -47,4 +47,11 @@ public interface PluginVersionChecker { * @see #checkLatestVersion() */ void checkVersion(); + + /** + * Determines whether snapshot releases should trigger notifications. + * + * @return {@code true} if snapshot releases should trigger notifications, otherwise {@code false} + */ + boolean notifySnapshotReleases(); } diff --git a/version-checker/src/main/java/core/version/VersionChecker.java b/version-checker/src/main/java/core/version/VersionChecker.java index a0436bf..7223240 100644 --- a/version-checker/src/main/java/core/version/VersionChecker.java +++ b/version-checker/src/main/java/core/version/VersionChecker.java @@ -39,6 +39,16 @@ public interface VersionChecker { */ boolean isSupported(N version); + /** + * Determines whether the provided version is considered acceptable based on specific criteria. + * + * @param version the version to evaluate + * @return true if the version meets the criteria, false otherwise + */ + default boolean isConsidered(V version) { + return true; + } + /** * Asynchronously retrieves the latest available version. * diff --git a/version-checker/src/main/java/core/version/github/GitHubVersionChecker.java b/version-checker/src/main/java/core/version/github/GitHubVersionChecker.java index 92f1ede..49740ac 100644 --- a/version-checker/src/main/java/core/version/github/GitHubVersionChecker.java +++ b/version-checker/src/main/java/core/version/github/GitHubVersionChecker.java @@ -79,6 +79,7 @@ public CompletableFuture> retrieveLatestSupportedVersion() { return retrieveGitHubReleases().thenApply(versions -> versions.stream() .filter(this::isSupported) .map(this::parseVersion) + .filter(this::isConsidered) .max(Version::compareTo)); } @@ -87,6 +88,7 @@ public Set getSupportedVersions() { return releases.stream() .filter(this::isSupported) .map(this::parseVersion) + .filter(this::isConsidered) .collect(Collectors.toUnmodifiableSet()); } @@ -101,6 +103,7 @@ public Optional getLatestSupportedVersion() { return releases.stream() .filter(this::isSupported) .map(this::parseVersion) + .filter(this::isConsidered) .max(Version::compareTo); } diff --git a/version-checker/src/main/java/core/version/hangar/HangarVersionChecker.java b/version-checker/src/main/java/core/version/hangar/HangarVersionChecker.java index 98044c0..b00e767 100644 --- a/version-checker/src/main/java/core/version/hangar/HangarVersionChecker.java +++ b/version-checker/src/main/java/core/version/hangar/HangarVersionChecker.java @@ -75,6 +75,7 @@ public CompletableFuture> retrieveLatestSupportedVersion() { return retrieveHangarVersions().thenApply(versions -> versions.stream() .filter(this::isSupported) .map(this::parseVersion) + .filter(this::isConsidered) .max(Version::compareTo)); } @@ -83,6 +84,7 @@ public Set getSupportedVersions() { return versions.stream() .filter(this::isSupported) .map(this::parseVersion) + .filter(this::isConsidered) .collect(Collectors.toUnmodifiableSet()); } @@ -97,6 +99,7 @@ public Optional getLatestSupportedVersion() { return versions.stream() .filter(this::isSupported) .map(this::parseVersion) + .filter(this::isConsidered) .max(Version::compareTo); } diff --git a/version-checker/src/main/java/core/version/modrinth/ModrinthVersionChecker.java b/version-checker/src/main/java/core/version/modrinth/ModrinthVersionChecker.java index 717d377..efd2026 100644 --- a/version-checker/src/main/java/core/version/modrinth/ModrinthVersionChecker.java +++ b/version-checker/src/main/java/core/version/modrinth/ModrinthVersionChecker.java @@ -73,6 +73,7 @@ public CompletableFuture> retrieveLatestSupportedVersion() { return retrieveModrinthVersions().thenApply(versions -> versions.stream() .filter(this::isSupported) .map(this::parseVersion) + .filter(this::isConsidered) .max(Version::compareTo)); } @@ -81,6 +82,7 @@ public Set getSupportedVersions() { return versions.stream() .filter(this::isSupported) .map(this::parseVersion) + .filter(this::isConsidered) .collect(Collectors.toUnmodifiableSet()); } @@ -95,6 +97,7 @@ public Optional getLatestSupportedVersion() { return versions.stream() .filter(this::isSupported) .map(this::parseVersion) + .filter(this::isConsidered) .max(Version::compareTo); }