Add Velocity Updater support

This commit is contained in:
Frank van der Heijden 2021-07-25 00:08:56 +02:00
parent 483e91bad1
commit cb78112cb3
No known key found for this signature in database
GPG key ID: B808721C2DD5B5B8
14 changed files with 151 additions and 41 deletions

View file

@ -1,42 +1,89 @@
package net.frankheijden.serverutils.common;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import net.frankheijden.serverutils.common.entities.CloseableResult;
import net.frankheijden.serverutils.common.entities.Result;
import net.frankheijden.serverutils.common.entities.ServerCommandSender;
import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin;
import net.frankheijden.serverutils.common.tasks.UpdateCheckerTask;
public class ServerUtilsApp<T> {
public class ServerUtilsApp<U extends ServerUtilsPlugin<P, T, C, S>, P, T, C extends ServerCommandSender<S>, S> {
public static final int BSTATS_METRICS_ID = 7790;
public static final String VERSION = "{version}";
private final T platformPlugin;
private final ServerUtilsPlugin plugin;
private final Object platformPlugin;
private final U plugin;
@SuppressWarnings("rawtypes")
private static ServerUtilsApp instance;
private ServerUtilsApp(T platformPlugin, ServerUtilsPlugin plugin) {
private ServerUtilsApp(Object platformPlugin, U plugin) {
this.platformPlugin = platformPlugin;
this.plugin = plugin;
instance = this;
}
public static <T> void init(T obj, ServerUtilsPlugin plugin) {
new ServerUtilsApp<>(obj, plugin);
public static <U extends ServerUtilsPlugin<P, T, C, S>, P, T, C extends ServerCommandSender<S>, S> void init(
Object platformPlugin,
U plugin
) {
instance = new ServerUtilsApp<>(platformPlugin, plugin);
}
/**
* Tries checking for updates if enabled by the config.
*/
public static void tryCheckForUpdates() {
UpdateCheckerTask.tryStart(getPlugin().getChatProvider().getConsoleSender(), "boot");
UpdateCheckerTask.tryStart(getPlugin(), getPlugin().getChatProvider().getConsoleSender(), "boot");
}
public static ServerUtilsPlugin getPlugin() {
return instance.plugin;
/**
* Unloads the ServerUtilsUpdater and deletes the file.
*/
public static <U extends ServerUtilsPlugin<P, T, C, S>, P, T, C extends ServerCommandSender<S>, S>
void unloadServerUtilsUpdater() {
U plugin = getPlugin();
plugin.getTaskManager().runTaskLater(() -> {
String updaterName = plugin.getPlatform() == ServerUtilsPlugin.Platform.VELOCITY
? "serverutilsupdater"
: "ServerUtilsUpdater";
P updaterPlugin = plugin.getPluginManager().getPlugin(updaterName);
if (updaterPlugin == null) return;
@SuppressWarnings("VariableDeclarationUsageDistance")
File file = plugin.getPluginManager().getPluginFile(updaterPlugin);
Result result = plugin.getPluginManager().disablePlugin(updaterPlugin);
if (result != Result.SUCCESS) {
result.sendTo(plugin.getChatProvider().getConsoleSender(), "disabl", updaterName);
return;
}
CloseableResult closeableResult = plugin.getPluginManager().unloadPlugin(updaterName);
if (closeableResult.getResult() != Result.SUCCESS) {
closeableResult.getResult().sendTo(plugin.getChatProvider().getConsoleSender(), "unload", updaterName);
}
closeableResult.tryClose();
if (Files.exists(file.toPath())) {
try {
Files.delete(file.toPath());
} catch (IOException ex) {
ex.printStackTrace();
}
}
}, 10);
}
public static Object getPlatformPlugin() {
return instance.platformPlugin;
}
@SuppressWarnings("unchecked")
public static <T> T getPlatformPlugin() {
return (T) instance.platformPlugin;
public static <U extends ServerUtilsPlugin<P, T, C, S>, P, T, C extends ServerCommandSender<S>, S>
U getPlugin() {
return (U) instance.plugin;
}
}