mirror of
https://github.com/JamesPeters98/ChestsPlusPlus.git
synced 2025-01-07 08:57:34 +01:00
Update Checker
Added update checker and config to enable/disable it.
This commit is contained in:
parent
81410994cc
commit
4a33fae7b5
@ -6,8 +6,11 @@ import com.jamesdpeters.minecraft.chests.listeners.HopperListener;
|
|||||||
import com.jamesdpeters.minecraft.chests.listeners.InventoryListener;
|
import com.jamesdpeters.minecraft.chests.listeners.InventoryListener;
|
||||||
import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage;
|
import com.jamesdpeters.minecraft.chests.serialize.InventoryStorage;
|
||||||
import com.jamesdpeters.minecraft.chests.serialize.LinkedChest;
|
import com.jamesdpeters.minecraft.chests.serialize.LinkedChest;
|
||||||
|
import com.jamesdpeters.minecraft.chests.versionchecker.UpdateCheck;
|
||||||
import fr.minuskube.inv.InventoryManager;
|
import fr.minuskube.inv.InventoryManager;
|
||||||
import org.bstats.bukkit.Metrics;
|
import org.bstats.bukkit.Metrics;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.configuration.serialization.ConfigurationSerialization;
|
import org.bukkit.configuration.serialization.ConfigurationSerialization;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
@ -28,6 +31,8 @@ public class ChestsPlusPlus extends JavaPlugin {
|
|||||||
int pluginId = 7166;
|
int pluginId = 7166;
|
||||||
Metrics metrics = new Metrics(this, pluginId);
|
Metrics metrics = new Metrics(this, pluginId);
|
||||||
|
|
||||||
|
Settings.initConfig(this);
|
||||||
|
|
||||||
PLUGIN = this;
|
PLUGIN = this;
|
||||||
new RemoteChestCommand().register(this);
|
new RemoteChestCommand().register(this);
|
||||||
getServer().getPluginManager().registerEvents(new ChestLinkListener(),this);
|
getServer().getPluginManager().registerEvents(new ChestLinkListener(),this);
|
||||||
@ -39,6 +44,29 @@ public class ChestsPlusPlus extends JavaPlugin {
|
|||||||
INVENTORY_MANAGER = new InventoryManager(this);
|
INVENTORY_MANAGER = new InventoryManager(this);
|
||||||
INVENTORY_MANAGER.init();
|
INVENTORY_MANAGER.init();
|
||||||
|
|
||||||
|
if(Settings.isUpdateCheckEnabled()) {
|
||||||
|
String SPIGOT_URL = "https://www.spigotmc.org/resources/chests-chest-linking-hopper-filtering-remote-chests-menus.71355/";
|
||||||
|
UpdateCheck
|
||||||
|
.of(this)
|
||||||
|
.resourceId(71355)
|
||||||
|
.currentVersion("1.15 v1.2.2")
|
||||||
|
.handleResponse((versionResponse, version) -> {
|
||||||
|
switch (versionResponse) {
|
||||||
|
case FOUND_NEW:
|
||||||
|
getLogger().warning("New version of the plugin has been found: " + version);
|
||||||
|
getLogger().warning("Download at: https://www.spigotmc.org/resources/chests-chest-linking-hopper-filtering-remote-chests-menus.71355/");
|
||||||
|
Bukkit.broadcastMessage(ChatColor.RED + "[Chests++] New version of the plugin was found: " + version);
|
||||||
|
break;
|
||||||
|
case LATEST:
|
||||||
|
getLogger().info("Plugin is up to date! Thank you for supporting Chests++!");
|
||||||
|
break;
|
||||||
|
case UNAVAILABLE:
|
||||||
|
Bukkit.broadcastMessage("Unable to perform an update check.");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.check();
|
||||||
|
}
|
||||||
|
|
||||||
getLogger().info("Chests++ enabled!");
|
getLogger().info("Chests++ enabled!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
package com.jamesdpeters.minecraft.chests;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.Configuration;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.event.player.PlayerLoginEvent;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
public class Settings {
|
||||||
|
|
||||||
|
private static String CHECK_UPDATE = "update-checker";
|
||||||
|
|
||||||
|
private static Settings cf;
|
||||||
|
private FileConfiguration configuration;
|
||||||
|
private Plugin plugin;
|
||||||
|
|
||||||
|
public static void initConfig(Plugin plugin){
|
||||||
|
cf = new Settings();
|
||||||
|
cf.plugin = plugin;
|
||||||
|
cf.configuration = plugin.getConfig();
|
||||||
|
|
||||||
|
//DEFAULT VALUES
|
||||||
|
cf.configuration.addDefault(CHECK_UPDATE,true);
|
||||||
|
|
||||||
|
cf.configuration.options().copyDefaults(true);
|
||||||
|
cf.plugin.saveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void save(){
|
||||||
|
cf.plugin.saveConfig();;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void reloadConfig(){
|
||||||
|
cf.configuration = cf.plugin.getConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GETTERS AND SETTERS
|
||||||
|
*/
|
||||||
|
public static boolean isUpdateCheckEnabled() {
|
||||||
|
return cf.configuration.getBoolean(CHECK_UPDATE);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,74 @@
|
|||||||
|
package com.jamesdpeters.minecraft.chests.versionchecker;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
|
import com.google.common.io.Resources;
|
||||||
|
import com.google.common.net.HttpHeaders;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import javax.net.ssl.HttpsURLConnection;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
|
public class UpdateCheck {
|
||||||
|
|
||||||
|
private static final String SPIGOT_URL = "https://api.spigotmc.org/legacy/update.php?resource=%d";
|
||||||
|
|
||||||
|
private final JavaPlugin javaPlugin;
|
||||||
|
|
||||||
|
private String currentVersion;
|
||||||
|
private int resourceId = -1;
|
||||||
|
private BiConsumer<VersionResponse, String> versionResponse;
|
||||||
|
|
||||||
|
private UpdateCheck(JavaPlugin javaPlugin) {
|
||||||
|
this.javaPlugin = Objects.requireNonNull(javaPlugin, "javaPlugin");
|
||||||
|
this.currentVersion = javaPlugin.getDescription().getVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static UpdateCheck of(JavaPlugin javaPlugin) {
|
||||||
|
return new UpdateCheck(javaPlugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
public UpdateCheck currentVersion(String currentVersion) {
|
||||||
|
this.currentVersion = currentVersion;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UpdateCheck resourceId(int resourceId) {
|
||||||
|
this.resourceId = resourceId;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UpdateCheck handleResponse(BiConsumer<VersionResponse, String> versionResponse) {
|
||||||
|
this.versionResponse = versionResponse;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void check() {
|
||||||
|
Objects.requireNonNull(this.javaPlugin, "javaPlugin");
|
||||||
|
Objects.requireNonNull(this.currentVersion, "currentVersion");
|
||||||
|
Preconditions.checkState(this.resourceId != -1, "resource id not set");
|
||||||
|
Objects.requireNonNull(this.versionResponse, "versionResponse");
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTaskAsynchronously(this.javaPlugin, () -> {
|
||||||
|
try {
|
||||||
|
HttpURLConnection httpURLConnection = (HttpsURLConnection) new URL(String.format(SPIGOT_URL, this.resourceId)).openConnection();
|
||||||
|
httpURLConnection.setRequestMethod("GET");
|
||||||
|
httpURLConnection.setRequestProperty(HttpHeaders.USER_AGENT, "Mozilla/5.0");
|
||||||
|
|
||||||
|
String fetchedVersion = Resources.toString(httpURLConnection.getURL(), Charset.defaultCharset());
|
||||||
|
|
||||||
|
boolean latestVersion = fetchedVersion.equalsIgnoreCase(this.currentVersion);
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTask(this.javaPlugin, () -> this.versionResponse.accept(latestVersion ? VersionResponse.LATEST : VersionResponse.FOUND_NEW, latestVersion ? this.currentVersion : fetchedVersion));
|
||||||
|
} catch (IOException exception) {
|
||||||
|
exception.printStackTrace();
|
||||||
|
Bukkit.getScheduler().runTask(this.javaPlugin, () -> this.versionResponse.accept(VersionResponse.UNAVAILABLE, null));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.jamesdpeters.minecraft.chests.versionchecker;
|
||||||
|
|
||||||
|
public enum VersionResponse {
|
||||||
|
LATEST,
|
||||||
|
FOUND_NEW,
|
||||||
|
UNAVAILABLE
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user