ZNPCsPlus/plugin/src/main/java/lol/pyr/znpcsplus/updater/UpdateChecker.java

60 lines
2 KiB
Java

package lol.pyr.znpcsplus.updater;
import me.robertlit.spigotresources.api.Resource;
import me.robertlit.spigotresources.api.SpigotResourcesAPI;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
public class UpdateChecker extends BukkitRunnable {
private final static Logger logger = Logger.getLogger("ZNPCsPlus Update Checker");
private final static int RESOURCE_ID = 109380;
public final static String DOWNLOAD_LINK = "https://www.spigotmc.org/resources/znpcsplus.109380/";
private final SpigotResourcesAPI api = new SpigotResourcesAPI(1, TimeUnit.MINUTES);
private final PluginDescriptionFile info;
private Status status = Status.UNKNOWN;
private String newestVersion = "N/A";
public UpdateChecker(PluginDescriptionFile info) {
this.info = info;
}
public void run() {
Resource resource = api.getResource(RESOURCE_ID).join();
if (resource == null) return;
newestVersion = resource.getVersion();
int current = versionToNumber(info.getVersion());
int newest = versionToNumber(newestVersion);
status = current >= newest ? Status.LATEST_VERSION : Status.UPDATE_NEEDED;
if (status == Status.UPDATE_NEEDED) notifyConsole();
}
private void notifyConsole() {
logger.warning("Version " + getLatestVersion() + " of " + info.getName() + " is available now!");
logger.warning("Download it at " + UpdateChecker.DOWNLOAD_LINK);
}
private int versionToNumber(String version) {
int num = Integer.parseInt(version.replaceAll("[^0-9]", ""));
if (version.toLowerCase().contains("snapshot")) num -= 1;
return num;
}
public Status getStatus() {
return status;
}
public String getLatestVersion() {
return newestVersion;
}
public enum Status {
UNKNOWN, LATEST_VERSION, UPDATE_NEEDED
}
}