|
4 | 4 | import core.annotation.MethodsReturnNotNullByDefault; |
5 | 5 | import core.annotation.ParametersAreNotNullByDefault; |
6 | 6 | import core.annotation.TypesAreNotNullByDefault; |
7 | | -import core.version.HangarVersionChecker; |
8 | 7 | 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; |
11 | 12 | import org.bukkit.Bukkit; |
| 13 | +import org.bukkit.plugin.Plugin; |
| 14 | + |
| 15 | +import java.util.Objects; |
12 | 16 |
|
13 | 17 | /** |
14 | 18 | * The PaperHangarVersionChecker class is an abstract class that provides methods |
|
21 | 25 | @MethodsReturnNotNullByDefault |
22 | 26 | @ParametersAreNotNullByDefault |
23 | 27 | 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) { |
25 | 34 | 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 | + }); |
26 | 57 | } |
27 | 58 |
|
28 | 59 | @Override |
|
0 commit comments