Skip to content

Commit 9839c67

Browse files
author
david
committed
Add version check method for PaperHangarVersionChecker
Refactor constructor to include plugin and author. Implement `checkVersion` method to log update information and handle exceptions gracefully.
1 parent 53b8c23 commit 9839c67

File tree

1 file changed

+35
-4
lines changed

1 file changed

+35
-4
lines changed

paper/src/main/java/core/paper/version/PaperHangarVersionChecker.java

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@
44
import core.annotation.MethodsReturnNotNullByDefault;
55
import core.annotation.ParametersAreNotNullByDefault;
66
import core.annotation.TypesAreNotNullByDefault;
7-
import core.version.HangarVersionChecker;
87
import core.version.Version;
9-
import me.mrafonso.hangar4j.impl.Platform;
10-
import me.mrafonso.hangar4j.impl.version.HangarVersion;
8+
import core.version.hangar.HangarVersion;
9+
import core.version.hangar.HangarVersionChecker;
10+
import core.version.hangar.Platform;
11+
import lombok.Getter;
1112
import org.bukkit.Bukkit;
13+
import org.bukkit.plugin.Plugin;
14+
15+
import java.util.Objects;
1216

1317
/**
1418
* The PaperHangarVersionChecker class is an abstract class that provides methods
@@ -21,8 +25,35 @@
2125
@MethodsReturnNotNullByDefault
2226
@ParametersAreNotNullByDefault
2327
public abstract class PaperHangarVersionChecker<V extends Version> extends HangarVersionChecker<V> {
24-
public PaperHangarVersionChecker(String slug) {
28+
private final @Getter V versionRunning;
29+
private final @Getter String author;
30+
private final Plugin plugin;
31+
32+
@SuppressWarnings("UnstableApiUsage")
33+
public PaperHangarVersionChecker(Plugin plugin, String author, String slug) {
2534
super(slug);
35+
this.versionRunning = Objects.requireNonNull(
36+
parseVersion(plugin.getPluginMeta().getVersion()),
37+
"Failed to parse plugin version running"
38+
);
39+
this.author = author;
40+
this.plugin = plugin;
41+
}
42+
43+
public void checkVersion() {
44+
retrieveLatestSupportedVersion().thenAccept(version -> {
45+
var logger = plugin.getComponentLogger();
46+
if (version.equals(versionRunning)) {
47+
logger.info("You are running the latest version of {}", plugin.getName());
48+
} else if (version.compareTo(versionRunning) > 0) {
49+
logger.warn("An update for {} is available", plugin.getName());
50+
logger.warn("You are running version {}, the latest supported version is {}", versionRunning, version);
51+
logger.warn("Update at https://hangar.papermc.io/{}/{}", author, getSlug());
52+
} else logger.warn("You are running a snapshot version of {}", plugin.getName());
53+
}).exceptionally(throwable -> {
54+
plugin.getComponentLogger().error("Version check failed", throwable);
55+
return null;
56+
});
2657
}
2758

2859
@Override

0 commit comments

Comments
 (0)