More abstractions
- Abstracted UpdateCheckerTask - Merged PluginProvider into the PluginManagers
This commit is contained in:
parent
23e8e80191
commit
e67b20dee0
40 changed files with 546 additions and 347 deletions
|
|
@ -11,23 +11,19 @@ import java.util.Map;
|
||||||
import net.frankheijden.serverutils.bukkit.commands.CommandPlugins;
|
import net.frankheijden.serverutils.bukkit.commands.CommandPlugins;
|
||||||
import net.frankheijden.serverutils.bukkit.commands.CommandServerUtils;
|
import net.frankheijden.serverutils.bukkit.commands.CommandServerUtils;
|
||||||
import net.frankheijden.serverutils.bukkit.entities.BukkitPlugin;
|
import net.frankheijden.serverutils.bukkit.entities.BukkitPlugin;
|
||||||
import net.frankheijden.serverutils.bukkit.listeners.MainListener;
|
import net.frankheijden.serverutils.bukkit.listeners.BukkitListener;
|
||||||
import net.frankheijden.serverutils.bukkit.managers.VersionManager;
|
import net.frankheijden.serverutils.bukkit.managers.BukkitPluginManager;
|
||||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||||
import net.frankheijden.serverutils.bukkit.reflection.RCommandMap;
|
import net.frankheijden.serverutils.bukkit.reflection.RCommandMap;
|
||||||
import net.frankheijden.serverutils.bukkit.reflection.RCraftServer;
|
import net.frankheijden.serverutils.bukkit.reflection.RCraftServer;
|
||||||
import net.frankheijden.serverutils.bukkit.tasks.UpdateCheckerTask;
|
|
||||||
import net.frankheijden.serverutils.bukkit.utils.BukkitUtils;
|
|
||||||
import net.frankheijden.serverutils.common.ServerUtilsApp;
|
import net.frankheijden.serverutils.common.ServerUtilsApp;
|
||||||
import net.frankheijden.serverutils.common.config.Config;
|
import net.frankheijden.serverutils.common.config.Config;
|
||||||
import net.frankheijden.serverutils.common.config.Messenger;
|
import net.frankheijden.serverutils.common.config.Messenger;
|
||||||
import net.frankheijden.serverutils.common.providers.PluginProvider;
|
|
||||||
import org.bstats.bukkit.Metrics;
|
import org.bstats.bukkit.Metrics;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.defaults.PluginsCommand;
|
import org.bukkit.command.defaults.PluginsCommand;
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
public class ServerUtils extends JavaPlugin implements CommandExecutor {
|
public class ServerUtils extends JavaPlugin implements CommandExecutor {
|
||||||
|
|
@ -46,7 +42,7 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
|
||||||
instance = this;
|
instance = this;
|
||||||
|
|
||||||
this.plugin = new BukkitPlugin(this);
|
this.plugin = new BukkitPlugin(this);
|
||||||
ServerUtilsApp.init(plugin);
|
ServerUtilsApp.init(this, plugin);
|
||||||
|
|
||||||
new Metrics(this, ServerUtilsApp.BSTATS_METRICS_ID);
|
new Metrics(this, ServerUtilsApp.BSTATS_METRICS_ID);
|
||||||
new BukkitReflection();
|
new BukkitReflection();
|
||||||
|
|
@ -55,10 +51,10 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
|
||||||
commandManager.registerCommand(new CommandServerUtils());
|
commandManager.registerCommand(new CommandServerUtils());
|
||||||
this.commandPlugins = null;
|
this.commandPlugins = null;
|
||||||
|
|
||||||
PluginProvider<Plugin> provider = plugin.getPluginProvider();
|
BukkitPluginManager manager = plugin.getPluginManager();
|
||||||
CommandCompletions<BukkitCommandCompletionContext> completions = commandManager.getCommandCompletions();
|
CommandCompletions<BukkitCommandCompletionContext> completions = commandManager.getCommandCompletions();
|
||||||
completions.registerAsyncCompletion("plugins", context -> provider.getPluginNames());
|
completions.registerAsyncCompletion("plugins", context -> manager.getPluginNames());
|
||||||
completions.registerAsyncCompletion("pluginJars", context -> provider.getPluginFileNames());
|
completions.registerAsyncCompletion("pluginJars", context -> manager.getPluginFileNames());
|
||||||
completions.registerAsyncCompletion("supportedConfigs ", context -> CommandServerUtils.getSupportedConfigs());
|
completions.registerAsyncCompletion("supportedConfigs ", context -> CommandServerUtils.getSupportedConfigs());
|
||||||
completions.registerAsyncCompletion("commands", context -> {
|
completions.registerAsyncCompletion("commands", context -> {
|
||||||
try {
|
try {
|
||||||
|
|
@ -70,10 +66,9 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
|
||||||
});
|
});
|
||||||
reload();
|
reload();
|
||||||
|
|
||||||
Bukkit.getPluginManager().registerEvents(new MainListener(), this);
|
Bukkit.getPluginManager().registerEvents(new BukkitListener(), this);
|
||||||
|
|
||||||
new VersionManager();
|
ServerUtilsApp.checkForUpdates();
|
||||||
checkForUpdates();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ServerUtils getInstance() {
|
public static ServerUtils getInstance() {
|
||||||
|
|
@ -131,10 +126,4 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
|
||||||
public PaperCommandManager getCommandManager() {
|
public PaperCommandManager getCommandManager() {
|
||||||
return commandManager;
|
return commandManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkForUpdates() {
|
|
||||||
if (Config.getInstance().getConfig().getBoolean("settings.check-updates")) {
|
|
||||||
UpdateCheckerTask.start(BukkitUtils.wrap(Bukkit.getConsoleSender()), true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,18 +7,16 @@ import co.aikar.commands.annotation.Default;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Subcommand;
|
import co.aikar.commands.annotation.Subcommand;
|
||||||
|
|
||||||
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
import net.frankheijden.serverutils.bukkit.managers.BukkitPluginManager;
|
||||||
import net.frankheijden.serverutils.bukkit.utils.BukkitUtils;
|
import net.frankheijden.serverutils.bukkit.utils.BukkitUtils;
|
||||||
import net.frankheijden.serverutils.common.commands.Plugins;
|
import net.frankheijden.serverutils.common.commands.Plugins;
|
||||||
import net.frankheijden.serverutils.common.config.Messenger;
|
import net.frankheijden.serverutils.common.config.Messenger;
|
||||||
import net.frankheijden.serverutils.common.providers.PluginProvider;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
|
|
||||||
@CommandAlias("plugins|pl")
|
@CommandAlias("plugins|pl")
|
||||||
public class CommandPlugins extends BaseCommand {
|
public class CommandPlugins extends BaseCommand {
|
||||||
|
|
||||||
private static final PluginProvider<Plugin> provider = ServerUtils.getInstance().getPlugin().getPluginProvider();
|
private static final BukkitPluginManager manager = BukkitPluginManager.get();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the plugin list to the sender, without plugin version.
|
* Sends the plugin list to the sender, without plugin version.
|
||||||
|
|
@ -28,7 +26,7 @@ public class CommandPlugins extends BaseCommand {
|
||||||
@CommandPermission("serverutils.plugins")
|
@CommandPermission("serverutils.plugins")
|
||||||
@Description("Shows the plugins of this server.")
|
@Description("Shows the plugins of this server.")
|
||||||
public void onPlugins(CommandSender sender) {
|
public void onPlugins(CommandSender sender) {
|
||||||
Plugins.sendPlugins(BukkitUtils.wrap(sender), provider.getPluginsSorted(), pl -> {
|
Plugins.sendPlugins(BukkitUtils.wrap(sender), manager.getPluginsSorted(), pl -> {
|
||||||
String format = "serverutils.plugins.format" + (pl.isEnabled() ? "" : "_disabled");
|
String format = "serverutils.plugins.format" + (pl.isEnabled() ? "" : "_disabled");
|
||||||
return Messenger.getMessage(format, "%plugin%", pl.getName());
|
return Messenger.getMessage(format, "%plugin%", pl.getName());
|
||||||
});
|
});
|
||||||
|
|
@ -42,7 +40,7 @@ public class CommandPlugins extends BaseCommand {
|
||||||
@CommandPermission("serverutils.plugins.version")
|
@CommandPermission("serverutils.plugins.version")
|
||||||
@Description("Shows the plugins of this server with version.")
|
@Description("Shows the plugins of this server with version.")
|
||||||
public void onPluginsWithVersion(CommandSender sender) {
|
public void onPluginsWithVersion(CommandSender sender) {
|
||||||
Plugins.sendPlugins(BukkitUtils.wrap(sender), provider.getPluginsSorted(), pl -> {
|
Plugins.sendPlugins(BukkitUtils.wrap(sender), manager.getPluginsSorted(), pl -> {
|
||||||
String format = "serverutils.plugins.format" + (pl.isEnabled() ? "" : "_disabled");
|
String format = "serverutils.plugins.format" + (pl.isEnabled() ? "" : "_disabled");
|
||||||
String version = Messenger.getMessage("serverutils.plugins.version",
|
String version = Messenger.getMessage("serverutils.plugins.version",
|
||||||
"%version%", pl.getDescription().getVersion());
|
"%version%", pl.getDescription().getVersion());
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ import java.util.Set;
|
||||||
|
|
||||||
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
||||||
import net.frankheijden.serverutils.bukkit.entities.BukkitLoadResult;
|
import net.frankheijden.serverutils.bukkit.entities.BukkitLoadResult;
|
||||||
import net.frankheijden.serverutils.bukkit.managers.PluginManager;
|
import net.frankheijden.serverutils.bukkit.managers.BukkitPluginManager;
|
||||||
import net.frankheijden.serverutils.bukkit.reflection.RCraftServer;
|
import net.frankheijden.serverutils.bukkit.reflection.RCraftServer;
|
||||||
import net.frankheijden.serverutils.bukkit.utils.BukkitUtils;
|
import net.frankheijden.serverutils.bukkit.utils.BukkitUtils;
|
||||||
import net.frankheijden.serverutils.bukkit.utils.ReloadHandler;
|
import net.frankheijden.serverutils.bukkit.utils.ReloadHandler;
|
||||||
|
|
@ -152,13 +152,13 @@ public class CommandServerUtils extends BaseCommand {
|
||||||
public void onLoadPlugin(CommandSender commandSender, String jarFile) {
|
public void onLoadPlugin(CommandSender commandSender, String jarFile) {
|
||||||
ServerCommandSender sender = BukkitUtils.wrap(commandSender);
|
ServerCommandSender sender = BukkitUtils.wrap(commandSender);
|
||||||
|
|
||||||
BukkitLoadResult loadResult = PluginManager.loadPlugin(jarFile);
|
BukkitLoadResult loadResult = BukkitPluginManager.get().loadPlugin(jarFile);
|
||||||
if (!loadResult.isSuccess()) {
|
if (!loadResult.isSuccess()) {
|
||||||
loadResult.getResult().sendTo(sender, "load", jarFile);
|
loadResult.getResult().sendTo(sender, "load", jarFile);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result result = PluginManager.enablePlugin(loadResult.get());
|
Result result = BukkitPluginManager.get().enablePlugin(loadResult.get());
|
||||||
result.sendTo(sender, "load", jarFile);
|
result.sendTo(sender, "load", jarFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -174,13 +174,13 @@ public class CommandServerUtils extends BaseCommand {
|
||||||
public void onUnloadPlugin(CommandSender commandSender, String pluginName) {
|
public void onUnloadPlugin(CommandSender commandSender, String pluginName) {
|
||||||
ServerCommandSender sender = BukkitUtils.wrap(commandSender);
|
ServerCommandSender sender = BukkitUtils.wrap(commandSender);
|
||||||
|
|
||||||
Result disableResult = PluginManager.disablePlugin(pluginName);
|
Result disableResult = BukkitPluginManager.disablePlugin(pluginName);
|
||||||
if (disableResult != Result.SUCCESS && disableResult != Result.ALREADY_DISABLED) {
|
if (disableResult != Result.SUCCESS && disableResult != Result.ALREADY_DISABLED) {
|
||||||
disableResult.sendTo(sender, "disabl", pluginName);
|
disableResult.sendTo(sender, "disabl", pluginName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CloseableResult result = PluginManager.unloadPlugin(pluginName);
|
CloseableResult result = BukkitPluginManager.get().unloadPlugin(pluginName);
|
||||||
result.getResult().sendTo(sender, "unload", pluginName);
|
result.getResult().sendTo(sender, "unload", pluginName);
|
||||||
result.tryClose();
|
result.tryClose();
|
||||||
}
|
}
|
||||||
|
|
@ -195,7 +195,7 @@ public class CommandServerUtils extends BaseCommand {
|
||||||
@CommandPermission("serverutils.reloadplugin")
|
@CommandPermission("serverutils.reloadplugin")
|
||||||
@Description("Reloads a specified plugin.")
|
@Description("Reloads a specified plugin.")
|
||||||
public void onReloadPlugin(CommandSender sender, String pluginName) {
|
public void onReloadPlugin(CommandSender sender, String pluginName) {
|
||||||
CloseableResult result = PluginManager.reloadPlugin(pluginName);
|
CloseableResult result = BukkitPluginManager.get().reloadPlugin(pluginName);
|
||||||
result.getResult().sendTo(BukkitUtils.wrap(sender), "reload", pluginName);
|
result.getResult().sendTo(BukkitUtils.wrap(sender), "reload", pluginName);
|
||||||
result.tryClose();
|
result.tryClose();
|
||||||
}
|
}
|
||||||
|
|
@ -210,7 +210,7 @@ public class CommandServerUtils extends BaseCommand {
|
||||||
@CommandPermission("serverutils.enableplugin")
|
@CommandPermission("serverutils.enableplugin")
|
||||||
@Description("Enables the loaded plugin.")
|
@Description("Enables the loaded plugin.")
|
||||||
public void onEnablePlugin(CommandSender sender, String pluginName) {
|
public void onEnablePlugin(CommandSender sender, String pluginName) {
|
||||||
Result result = PluginManager.enablePlugin(pluginName);
|
Result result = BukkitPluginManager.get().enablePlugin(pluginName);
|
||||||
result.sendTo(BukkitUtils.wrap(sender), "enabl", pluginName);
|
result.sendTo(BukkitUtils.wrap(sender), "enabl", pluginName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -224,7 +224,7 @@ public class CommandServerUtils extends BaseCommand {
|
||||||
@CommandPermission("serverutils.disableplugin")
|
@CommandPermission("serverutils.disableplugin")
|
||||||
@Description("Disables the specified plugin.")
|
@Description("Disables the specified plugin.")
|
||||||
public void onDisablePlugin(CommandSender sender, String pluginName) {
|
public void onDisablePlugin(CommandSender sender, String pluginName) {
|
||||||
Result result = PluginManager.disablePlugin(pluginName);
|
Result result = BukkitPluginManager.disablePlugin(pluginName);
|
||||||
result.sendTo(BukkitUtils.wrap(sender), "disabl", pluginName);
|
result.sendTo(BukkitUtils.wrap(sender), "disabl", pluginName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -309,7 +309,7 @@ public class CommandServerUtils extends BaseCommand {
|
||||||
public void onCommandInfo(CommandSender commandSender, String command) {
|
public void onCommandInfo(CommandSender commandSender, String command) {
|
||||||
ServerCommandSender sender = BukkitUtils.wrap(commandSender);
|
ServerCommandSender sender = BukkitUtils.wrap(commandSender);
|
||||||
|
|
||||||
Command cmd = PluginManager.getCommand(command);
|
Command cmd = BukkitPluginManager.getCommand(command);
|
||||||
if (cmd == null) {
|
if (cmd == null) {
|
||||||
Messenger.sendMessage(sender, "serverutils.commandinfo.not_exists");
|
Messenger.sendMessage(sender, "serverutils.commandinfo.not_exists");
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
package net.frankheijden.serverutils.bukkit.entities;
|
||||||
|
|
||||||
|
import net.frankheijden.serverutils.bukkit.utils.BukkitUtils;
|
||||||
|
import net.frankheijden.serverutils.common.entities.ServerCommandSender;
|
||||||
|
import net.frankheijden.serverutils.common.providers.ChatProvider;
|
||||||
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
public class BukkitChatProvider extends ChatProvider {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ServerCommandSender getConsoleSender() {
|
||||||
|
return BukkitUtils.wrap(Bukkit.getConsoleSender());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String color(String str) {
|
||||||
|
return ChatColor.translateAlternateColorCodes('&', str);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void broadcast(String permission, String message) {
|
||||||
|
Bukkit.broadcast(message, permission);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
package net.frankheijden.serverutils.bukkit.entities;
|
|
||||||
|
|
||||||
import net.frankheijden.serverutils.common.providers.ColorProvider;
|
|
||||||
import net.md_5.bungee.api.ChatColor;
|
|
||||||
|
|
||||||
public class BukkitColorProvider implements ColorProvider {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String apply(String str) {
|
|
||||||
return ChatColor.translateAlternateColorCodes('&', str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -15,4 +15,9 @@ public class BukkitCommandSender implements ServerCommandSender {
|
||||||
public void sendMessage(String message) {
|
public void sendMessage(String message) {
|
||||||
sender.sendMessage(message);
|
sender.sendMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(String permission) {
|
||||||
|
return sender.hasPermission(permission);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,18 +4,19 @@ import java.io.File;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
||||||
import net.frankheijden.serverutils.common.providers.ColorProvider;
|
import net.frankheijden.serverutils.bukkit.managers.BukkitPluginManager;
|
||||||
import net.frankheijden.serverutils.common.providers.PluginProvider;
|
import net.frankheijden.serverutils.bukkit.managers.BukkitTaskManager;
|
||||||
import net.frankheijden.serverutils.common.providers.ResourceProvider;
|
import net.frankheijden.serverutils.bukkit.managers.BukkitVersionManager;
|
||||||
import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin;
|
import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin;
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
|
|
||||||
public class BukkitPlugin extends ServerUtilsPlugin {
|
public class BukkitPlugin extends ServerUtilsPlugin {
|
||||||
|
|
||||||
private final ServerUtils plugin;
|
private final ServerUtils plugin;
|
||||||
private final PluginProvider<Plugin> pluginProvider;
|
private final BukkitPluginManager pluginManager;
|
||||||
private final ResourceProvider resourceProvider;
|
private final BukkitTaskManager taskManager;
|
||||||
private final ColorProvider colorProvider;
|
private final BukkitResourceProvider resourceProvider;
|
||||||
|
private final BukkitChatProvider chatProvider;
|
||||||
|
private final BukkitVersionManager versionManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new BukkitPlugin instance of ServerUtils.
|
* Creates a new BukkitPlugin instance of ServerUtils.
|
||||||
|
|
@ -23,25 +24,37 @@ public class BukkitPlugin extends ServerUtilsPlugin {
|
||||||
*/
|
*/
|
||||||
public BukkitPlugin(ServerUtils plugin) {
|
public BukkitPlugin(ServerUtils plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
this.pluginProvider = new BukkitPluginProvider(plugin);
|
this.pluginManager = new BukkitPluginManager(plugin);
|
||||||
|
this.taskManager = new BukkitTaskManager();
|
||||||
this.resourceProvider = new BukkitResourceProvider(plugin);
|
this.resourceProvider = new BukkitResourceProvider(plugin);
|
||||||
this.colorProvider = new BukkitColorProvider();
|
this.chatProvider = new BukkitChatProvider();
|
||||||
|
this.versionManager = new BukkitVersionManager(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public PluginProvider<Plugin> getPluginProvider() {
|
public BukkitPluginManager getPluginManager() {
|
||||||
return pluginProvider;
|
return pluginManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResourceProvider getResourceProvider() {
|
public BukkitTaskManager getTaskManager() {
|
||||||
|
return taskManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BukkitResourceProvider getResourceProvider() {
|
||||||
return resourceProvider;
|
return resourceProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ColorProvider getColorProvider() {
|
public BukkitChatProvider getChatProvider() {
|
||||||
return colorProvider;
|
return chatProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BukkitVersionManager getVersionManager() {
|
||||||
|
return versionManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
package net.frankheijden.serverutils.bukkit.entities;
|
|
||||||
|
|
||||||
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
|
||||||
import net.frankheijden.serverutils.common.providers.PluginProvider;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class BukkitPluginProvider extends PluginProvider<Plugin> {
|
|
||||||
|
|
||||||
private final ServerUtils plugin;
|
|
||||||
|
|
||||||
public BukkitPluginProvider(ServerUtils plugin) {
|
|
||||||
this.plugin = plugin;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public File getPluginsFolder() {
|
|
||||||
return plugin.getDataFolder().getParentFile();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Plugin> getPlugins() {
|
|
||||||
return Arrays.asList(Bukkit.getPluginManager().getPlugins());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPluginName(Plugin plugin) {
|
|
||||||
return plugin.getName();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
package net.frankheijden.serverutils.bukkit.listeners;
|
||||||
|
|
||||||
|
import net.frankheijden.serverutils.common.listeners.ServerListener;
|
||||||
|
import net.frankheijden.serverutils.bukkit.utils.BukkitUtils;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
|
||||||
|
public class BukkitListener implements Listener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a player joins the server.
|
||||||
|
* Used for sending an update message to the player, if enabled and has permission.
|
||||||
|
* @param event The PlayerJoinEvent.
|
||||||
|
*/
|
||||||
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
|
ServerListener.handleUpdate(BukkitUtils.wrap(event.getPlayer()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
package net.frankheijden.serverutils.bukkit.listeners;
|
|
||||||
|
|
||||||
import net.frankheijden.serverutils.bukkit.tasks.UpdateCheckerTask;
|
|
||||||
import net.frankheijden.serverutils.bukkit.utils.BukkitUtils;
|
|
||||||
import net.frankheijden.serverutils.common.config.Config;
|
|
||||||
import net.frankheijden.serverutils.common.config.YamlConfig;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
|
||||||
|
|
||||||
public class MainListener implements Listener {
|
|
||||||
|
|
||||||
private static final YamlConfig config = Config.getInstance().getConfig();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when a player joins the server.
|
|
||||||
* Used for sending an update message to the player, if enabled and has permission.
|
|
||||||
* @param event The PlayerJoinEvent.
|
|
||||||
*/
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST)
|
|
||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
|
||||||
if (!config.getBoolean("settings.check-updates-login")) return;
|
|
||||||
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
if (player.hasPermission("serverutils.notification.update")) {
|
|
||||||
UpdateCheckerTask.start(BukkitUtils.wrap(player));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -2,6 +2,8 @@ package net.frankheijden.serverutils.bukkit.managers;
|
||||||
|
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
@ -14,6 +16,7 @@ import net.frankheijden.serverutils.bukkit.reflection.RCraftingManager;
|
||||||
import net.frankheijden.serverutils.bukkit.reflection.RJavaPlugin;
|
import net.frankheijden.serverutils.bukkit.reflection.RJavaPlugin;
|
||||||
import net.frankheijden.serverutils.bukkit.reflection.RPluginClassLoader;
|
import net.frankheijden.serverutils.bukkit.reflection.RPluginClassLoader;
|
||||||
import net.frankheijden.serverutils.bukkit.reflection.RSimplePluginManager;
|
import net.frankheijden.serverutils.bukkit.reflection.RSimplePluginManager;
|
||||||
|
import net.frankheijden.serverutils.common.managers.AbstractPluginManager;
|
||||||
import net.frankheijden.serverutils.common.entities.CloseableResult;
|
import net.frankheijden.serverutils.common.entities.CloseableResult;
|
||||||
import net.frankheijden.serverutils.common.entities.Result;
|
import net.frankheijden.serverutils.common.entities.Result;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
@ -26,14 +29,27 @@ import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
import org.bukkit.plugin.PluginLoader;
|
import org.bukkit.plugin.PluginLoader;
|
||||||
import org.bukkit.plugin.UnknownDependencyException;
|
import org.bukkit.plugin.UnknownDependencyException;
|
||||||
|
|
||||||
public class PluginManager {
|
public class BukkitPluginManager extends AbstractPluginManager<Plugin> {
|
||||||
|
|
||||||
|
private final ServerUtils plugin;
|
||||||
|
private static BukkitPluginManager instance;
|
||||||
|
|
||||||
|
public BukkitPluginManager(ServerUtils plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BukkitPluginManager get() {
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the specified file as a plugin.
|
* Loads the specified file as a plugin.
|
||||||
* @param jarFile The name of the file in the plugins/ folder.
|
* @param jarFile The name of the file in the plugins/ folder.
|
||||||
* @return The result of the loading procedure.
|
* @return The result of the loading procedure.
|
||||||
*/
|
*/
|
||||||
public static BukkitLoadResult loadPlugin(String jarFile) {
|
@Override
|
||||||
|
public BukkitLoadResult loadPlugin(String jarFile) {
|
||||||
return loadPlugin(new File(ServerUtils.getInstance().getDataFolder().getParent(), jarFile));
|
return loadPlugin(new File(ServerUtils.getInstance().getDataFolder().getParent(), jarFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -42,7 +58,8 @@ public class PluginManager {
|
||||||
* @param file The file to be loaded.
|
* @param file The file to be loaded.
|
||||||
* @return The result of the loading procedure.
|
* @return The result of the loading procedure.
|
||||||
*/
|
*/
|
||||||
public static BukkitLoadResult loadPlugin(File file) {
|
@Override
|
||||||
|
public BukkitLoadResult loadPlugin(File file) {
|
||||||
if (!file.exists()) return new BukkitLoadResult(Result.NOT_EXISTS);
|
if (!file.exists()) return new BukkitLoadResult(Result.NOT_EXISTS);
|
||||||
|
|
||||||
Plugin loadedPlugin = getLoadedPlugin(file);
|
Plugin loadedPlugin = getLoadedPlugin(file);
|
||||||
|
|
@ -104,7 +121,8 @@ public class PluginManager {
|
||||||
* @param pluginName The plugin to unload.
|
* @param pluginName The plugin to unload.
|
||||||
* @return The result of the unload.
|
* @return The result of the unload.
|
||||||
*/
|
*/
|
||||||
public static CloseableResult unloadPlugin(String pluginName) {
|
@Override
|
||||||
|
public CloseableResult unloadPlugin(String pluginName) {
|
||||||
return unloadPlugin(Bukkit.getPluginManager().getPlugin(pluginName));
|
return unloadPlugin(Bukkit.getPluginManager().getPlugin(pluginName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -113,7 +131,8 @@ public class PluginManager {
|
||||||
* @param plugin The plugin to unload.
|
* @param plugin The plugin to unload.
|
||||||
* @return The result of the unload.
|
* @return The result of the unload.
|
||||||
*/
|
*/
|
||||||
public static CloseableResult unloadPlugin(Plugin plugin) {
|
@Override
|
||||||
|
public CloseableResult unloadPlugin(Plugin plugin) {
|
||||||
if (plugin == null) return new CloseableResult(Result.NOT_EXISTS);
|
if (plugin == null) return new CloseableResult(Result.NOT_EXISTS);
|
||||||
Closeable closeable;
|
Closeable closeable;
|
||||||
try {
|
try {
|
||||||
|
|
@ -132,7 +151,7 @@ public class PluginManager {
|
||||||
* @param pluginName The plugin to enable.
|
* @param pluginName The plugin to enable.
|
||||||
* @return The result of the enabling.
|
* @return The result of the enabling.
|
||||||
*/
|
*/
|
||||||
public static Result enablePlugin(String pluginName) {
|
public Result enablePlugin(String pluginName) {
|
||||||
return enablePlugin(Bukkit.getPluginManager().getPlugin(pluginName));
|
return enablePlugin(Bukkit.getPluginManager().getPlugin(pluginName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -141,7 +160,8 @@ public class PluginManager {
|
||||||
* @param plugin The plugin to enable.
|
* @param plugin The plugin to enable.
|
||||||
* @return The result of the enabling.
|
* @return The result of the enabling.
|
||||||
*/
|
*/
|
||||||
public static Result enablePlugin(Plugin plugin) {
|
@Override
|
||||||
|
public Result enablePlugin(Plugin plugin) {
|
||||||
if (plugin == null) return Result.NOT_EXISTS;
|
if (plugin == null) return Result.NOT_EXISTS;
|
||||||
if (Bukkit.getPluginManager().isPluginEnabled(plugin.getName())) return Result.ALREADY_ENABLED;
|
if (Bukkit.getPluginManager().isPluginEnabled(plugin.getName())) return Result.ALREADY_ENABLED;
|
||||||
Bukkit.getPluginManager().enablePlugin(plugin);
|
Bukkit.getPluginManager().enablePlugin(plugin);
|
||||||
|
|
@ -156,7 +176,8 @@ public class PluginManager {
|
||||||
* @param pluginName The plugin to reload.
|
* @param pluginName The plugin to reload.
|
||||||
* @return The result of the reload.
|
* @return The result of the reload.
|
||||||
*/
|
*/
|
||||||
public static CloseableResult reloadPlugin(String pluginName) {
|
@Override
|
||||||
|
public CloseableResult reloadPlugin(String pluginName) {
|
||||||
Plugin plugin = Bukkit.getPluginManager().getPlugin(pluginName);
|
Plugin plugin = Bukkit.getPluginManager().getPlugin(pluginName);
|
||||||
if (plugin == null) return new CloseableResult(Result.NOT_EXISTS);
|
if (plugin == null) return new CloseableResult(Result.NOT_EXISTS);
|
||||||
return reloadPlugin(plugin);
|
return reloadPlugin(plugin);
|
||||||
|
|
@ -167,7 +188,8 @@ public class PluginManager {
|
||||||
* @param plugin The plugin to reload.
|
* @param plugin The plugin to reload.
|
||||||
* @return The result of the reload.
|
* @return The result of the reload.
|
||||||
*/
|
*/
|
||||||
public static CloseableResult reloadPlugin(Plugin plugin) {
|
@Override
|
||||||
|
public CloseableResult reloadPlugin(Plugin plugin) {
|
||||||
Result disableResult = disablePlugin(plugin);
|
Result disableResult = disablePlugin(plugin);
|
||||||
if (disableResult != Result.SUCCESS && disableResult != Result.ALREADY_DISABLED) {
|
if (disableResult != Result.SUCCESS && disableResult != Result.ALREADY_DISABLED) {
|
||||||
return new CloseableResult(disableResult);
|
return new CloseableResult(disableResult);
|
||||||
|
|
@ -293,8 +315,8 @@ public class PluginManager {
|
||||||
* @param pluginName The plugin name.
|
* @param pluginName The plugin name.
|
||||||
* @return The file, or null if invalid or not found.
|
* @return The file, or null if invalid or not found.
|
||||||
*/
|
*/
|
||||||
public static File getPluginFile(String pluginName) {
|
public File getPluginFile(String pluginName) {
|
||||||
for (File file : ServerUtils.getInstance().getPlugin().getPluginProvider().getPluginJars()) {
|
for (File file : getPluginJars()) {
|
||||||
PluginDescriptionFile descriptionFile;
|
PluginDescriptionFile descriptionFile;
|
||||||
try {
|
try {
|
||||||
descriptionFile = getPluginDescription(file);
|
descriptionFile = getPluginDescription(file);
|
||||||
|
|
@ -306,4 +328,28 @@ public class PluginManager {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public File getPluginsFolder() {
|
||||||
|
return plugin.getDataFolder().getParentFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Plugin> getPlugins() {
|
||||||
|
return Arrays.asList(Bukkit.getPluginManager().getPlugins());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPluginName(Plugin plugin) {
|
||||||
|
return plugin.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public File getPluginFile(Plugin plugin) {
|
||||||
|
try {
|
||||||
|
return RJavaPlugin.getFile(plugin);
|
||||||
|
} catch (ReflectiveOperationException ex) {
|
||||||
|
throw new RuntimeException("Error retrieving current plugin file", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
package net.frankheijden.serverutils.bukkit.managers;
|
||||||
|
|
||||||
|
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
||||||
|
import net.frankheijden.serverutils.common.managers.AbstractTaskManager;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
public class BukkitTaskManager extends AbstractTaskManager {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void runTaskAsynchronously(Runnable runnable) {
|
||||||
|
Bukkit.getScheduler().runTaskAsynchronously(ServerUtils.getInstance(), runnable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
package net.frankheijden.serverutils.bukkit.managers;
|
||||||
|
|
||||||
|
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
||||||
|
import net.frankheijden.serverutils.common.managers.AbstractVersionManager;
|
||||||
|
|
||||||
|
public class BukkitVersionManager extends AbstractVersionManager {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new VersionManager instance.
|
||||||
|
* Used for automatic updating.
|
||||||
|
*/
|
||||||
|
public BukkitVersionManager(ServerUtils plugin) {
|
||||||
|
super(plugin.getDescription().getVersion());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
package net.frankheijden.serverutils.bukkit.managers;
|
|
||||||
|
|
||||||
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
|
||||||
|
|
||||||
public class VersionManager {
|
|
||||||
|
|
||||||
private static VersionManager instance;
|
|
||||||
private final ServerUtils plugin = ServerUtils.getInstance();
|
|
||||||
private final String currentVersion;
|
|
||||||
private String downloadedVersion;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new VersionManager instance.
|
|
||||||
* Used for automatic updating.
|
|
||||||
*/
|
|
||||||
public VersionManager() {
|
|
||||||
instance = this;
|
|
||||||
this.currentVersion = plugin.getDescription().getVersion();
|
|
||||||
this.downloadedVersion = currentVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static VersionManager getInstance() {
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCurrentVersion() {
|
|
||||||
return currentVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDownloadedVersion() {
|
|
||||||
return downloadedVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasDownloaded() {
|
|
||||||
return !downloadedVersion.equals(currentVersion);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isDownloadedVersion(String version) {
|
|
||||||
return downloadedVersion.equals(version);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDownloadedVersion(String downloadedVersion) {
|
|
||||||
this.downloadedVersion = downloadedVersion;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -5,6 +5,7 @@ import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.get
|
||||||
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.invoke;
|
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.invoke;
|
||||||
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
|
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -20,7 +21,8 @@ public class RJavaPlugin {
|
||||||
try {
|
try {
|
||||||
javaPluginClass = JavaPlugin.class;
|
javaPluginClass = JavaPlugin.class;
|
||||||
methods = getAllMethods(javaPluginClass,
|
methods = getAllMethods(javaPluginClass,
|
||||||
methodOf("getClassLoader", ALL_VERSIONS));
|
methodOf("getClassLoader", ALL_VERSIONS),
|
||||||
|
methodOf("getFile", ALL_VERSIONS));
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
@ -29,4 +31,8 @@ public class RJavaPlugin {
|
||||||
public static ClassLoader getClassLoader(Object instance) throws InvocationTargetException, IllegalAccessException {
|
public static ClassLoader getClassLoader(Object instance) throws InvocationTargetException, IllegalAccessException {
|
||||||
return (ClassLoader) invoke(methods, instance, "getClassLoader");
|
return (ClassLoader) invoke(methods, instance, "getClassLoader");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static File getFile(Object instance) throws ReflectiveOperationException {
|
||||||
|
return (File) invoke(methods, instance, "getFile");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,11 @@ import net.frankheijden.serverutils.bungee.commands.CommandPlugins;
|
||||||
import net.frankheijden.serverutils.bungee.commands.CommandServerUtils;
|
import net.frankheijden.serverutils.bungee.commands.CommandServerUtils;
|
||||||
import net.frankheijden.serverutils.bungee.entities.BungeePlugin;
|
import net.frankheijden.serverutils.bungee.entities.BungeePlugin;
|
||||||
import net.frankheijden.serverutils.bungee.entities.BungeeReflection;
|
import net.frankheijden.serverutils.bungee.entities.BungeeReflection;
|
||||||
|
import net.frankheijden.serverutils.bungee.listeners.BungeeListener;
|
||||||
|
import net.frankheijden.serverutils.bungee.managers.BungeePluginManager;
|
||||||
import net.frankheijden.serverutils.common.ServerUtilsApp;
|
import net.frankheijden.serverutils.common.ServerUtilsApp;
|
||||||
import net.frankheijden.serverutils.common.config.Config;
|
import net.frankheijden.serverutils.common.config.Config;
|
||||||
import net.frankheijden.serverutils.common.config.Messenger;
|
import net.frankheijden.serverutils.common.config.Messenger;
|
||||||
import net.frankheijden.serverutils.common.providers.PluginProvider;
|
|
||||||
import net.md_5.bungee.api.plugin.Plugin;
|
import net.md_5.bungee.api.plugin.Plugin;
|
||||||
import org.bstats.bungeecord.Metrics;
|
import org.bstats.bungeecord.Metrics;
|
||||||
|
|
||||||
|
|
@ -29,7 +30,7 @@ public class ServerUtils extends Plugin {
|
||||||
instance = this;
|
instance = this;
|
||||||
|
|
||||||
this.plugin = new BungeePlugin(this);
|
this.plugin = new BungeePlugin(this);
|
||||||
ServerUtilsApp.init(plugin);
|
ServerUtilsApp.init(this, plugin);
|
||||||
|
|
||||||
new Metrics(this, ServerUtilsApp.BSTATS_METRICS_ID);
|
new Metrics(this, ServerUtilsApp.BSTATS_METRICS_ID);
|
||||||
new BungeeReflection();
|
new BungeeReflection();
|
||||||
|
|
@ -38,12 +39,15 @@ public class ServerUtils extends Plugin {
|
||||||
commandManager.registerCommand(new CommandPlugins());
|
commandManager.registerCommand(new CommandPlugins());
|
||||||
commandManager.registerCommand(new CommandServerUtils());
|
commandManager.registerCommand(new CommandServerUtils());
|
||||||
|
|
||||||
PluginProvider<Plugin> provider = plugin.getPluginProvider();
|
BungeePluginManager manager = plugin.getPluginManager();
|
||||||
CommandCompletions<BungeeCommandCompletionContext> commandCompletions = commandManager.getCommandCompletions();
|
CommandCompletions<BungeeCommandCompletionContext> commandCompletions = commandManager.getCommandCompletions();
|
||||||
commandCompletions.registerAsyncCompletion("plugins", context -> provider.getPluginNames());
|
commandCompletions.registerAsyncCompletion("plugins", context -> manager.getPluginNames());
|
||||||
commandCompletions.registerAsyncCompletion("pluginJars", context -> provider.getPluginFileNames());
|
commandCompletions.registerAsyncCompletion("pluginJars", context -> manager.getPluginFileNames());
|
||||||
|
|
||||||
reload();
|
reload();
|
||||||
|
getProxy().getPluginManager().registerListener(this, new BungeeListener());
|
||||||
|
|
||||||
|
ServerUtilsApp.checkForUpdates();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ServerUtils getInstance() {
|
public static ServerUtils getInstance() {
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,7 @@ import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Default;
|
import co.aikar.commands.annotation.Default;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Subcommand;
|
import net.frankheijden.serverutils.bungee.managers.BungeePluginManager;
|
||||||
import net.frankheijden.serverutils.bungee.ServerUtils;
|
|
||||||
import net.frankheijden.serverutils.bungee.entities.BungeePluginProvider;
|
|
||||||
import net.frankheijden.serverutils.bungee.utils.BungeeUtils;
|
import net.frankheijden.serverutils.bungee.utils.BungeeUtils;
|
||||||
import net.frankheijden.serverutils.common.commands.Plugins;
|
import net.frankheijden.serverutils.common.commands.Plugins;
|
||||||
import net.frankheijden.serverutils.common.config.Messenger;
|
import net.frankheijden.serverutils.common.config.Messenger;
|
||||||
|
|
@ -17,8 +15,7 @@ import net.md_5.bungee.api.CommandSender;
|
||||||
@CommandAlias("bpl|bplugins|bungeepl")
|
@CommandAlias("bpl|bplugins|bungeepl")
|
||||||
public class CommandPlugins extends BaseCommand {
|
public class CommandPlugins extends BaseCommand {
|
||||||
|
|
||||||
private static final ServerUtils plugin = ServerUtils.getInstance();
|
private static final BungeePluginManager manager = BungeePluginManager.get();
|
||||||
private static final BungeePluginProvider provider = (BungeePluginProvider) plugin.getPlugin().getPluginProvider();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the plugin list to the sender.
|
* Sends the plugin list to the sender.
|
||||||
|
|
@ -33,7 +30,7 @@ public class CommandPlugins extends BaseCommand {
|
||||||
public void onPlugins(CommandSender sender, String... args) {
|
public void onPlugins(CommandSender sender, String... args) {
|
||||||
boolean version = contains(args, "-v");
|
boolean version = contains(args, "-v");
|
||||||
boolean modules = contains(args, "-m");
|
boolean modules = contains(args, "-m");
|
||||||
Plugins.sendPlugins(BungeeUtils.wrap(sender), provider.getPluginsSorted(modules), pl -> {
|
Plugins.sendPlugins(BungeeUtils.wrap(sender), manager.getPluginsSorted(modules), pl -> {
|
||||||
String ver = version ? Messenger.getMessage("serverutils.plugins.version",
|
String ver = version ? Messenger.getMessage("serverutils.plugins.version",
|
||||||
"%version%", pl.getDescription().getVersion()) : "";
|
"%version%", pl.getDescription().getVersion()) : "";
|
||||||
return Messenger.getMessage("serverutils.plugins.format",
|
return Messenger.getMessage("serverutils.plugins.format",
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,15 @@
|
||||||
package net.frankheijden.serverutils.bungee.commands;
|
package net.frankheijden.serverutils.bungee.commands;
|
||||||
|
|
||||||
import co.aikar.commands.BaseCommand;
|
import co.aikar.commands.BaseCommand;
|
||||||
import co.aikar.commands.RegisteredCommand;
|
|
||||||
import co.aikar.commands.annotation.CommandAlias;
|
import co.aikar.commands.annotation.CommandAlias;
|
||||||
import co.aikar.commands.annotation.CommandCompletion;
|
import co.aikar.commands.annotation.CommandCompletion;
|
||||||
import co.aikar.commands.annotation.CommandPermission;
|
import co.aikar.commands.annotation.CommandPermission;
|
||||||
import co.aikar.commands.annotation.Default;
|
import co.aikar.commands.annotation.Default;
|
||||||
import co.aikar.commands.annotation.Description;
|
import co.aikar.commands.annotation.Description;
|
||||||
import co.aikar.commands.annotation.Subcommand;
|
import co.aikar.commands.annotation.Subcommand;
|
||||||
import com.google.common.collect.SetMultimap;
|
|
||||||
import net.frankheijden.serverutils.bungee.ServerUtils;
|
import net.frankheijden.serverutils.bungee.ServerUtils;
|
||||||
import net.frankheijden.serverutils.bungee.entities.BungeeLoadResult;
|
import net.frankheijden.serverutils.bungee.entities.BungeeLoadResult;
|
||||||
import net.frankheijden.serverutils.bungee.managers.PluginManager;
|
import net.frankheijden.serverutils.bungee.managers.BungeePluginManager;
|
||||||
import net.frankheijden.serverutils.bungee.reflection.RPluginManager;
|
import net.frankheijden.serverutils.bungee.reflection.RPluginManager;
|
||||||
import net.frankheijden.serverutils.bungee.utils.BungeeUtils;
|
import net.frankheijden.serverutils.bungee.utils.BungeeUtils;
|
||||||
import net.frankheijden.serverutils.common.config.Messenger;
|
import net.frankheijden.serverutils.common.config.Messenger;
|
||||||
|
|
@ -101,14 +99,14 @@ public class CommandServerUtils extends BaseCommand {
|
||||||
public void onLoadPlugin(CommandSender commandSender, String jarFile) {
|
public void onLoadPlugin(CommandSender commandSender, String jarFile) {
|
||||||
ServerCommandSender sender = BungeeUtils.wrap(commandSender);
|
ServerCommandSender sender = BungeeUtils.wrap(commandSender);
|
||||||
|
|
||||||
BungeeLoadResult loadResult = PluginManager.loadPlugin(jarFile);
|
BungeeLoadResult loadResult = BungeePluginManager.get().loadPlugin(jarFile);
|
||||||
if (!loadResult.isSuccess()) {
|
if (!loadResult.isSuccess()) {
|
||||||
loadResult.getResult().sendTo(sender, "load", jarFile);
|
loadResult.getResult().sendTo(sender, "load", jarFile);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Plugin plugin = loadResult.get();
|
Plugin plugin = loadResult.get();
|
||||||
Result result = PluginManager.enablePlugin(plugin);
|
Result result = BungeePluginManager.get().enablePlugin(plugin);
|
||||||
result.sendTo(sender, "load", plugin.getDescription().getName());
|
result.sendTo(sender, "load", plugin.getDescription().getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -122,7 +120,7 @@ public class CommandServerUtils extends BaseCommand {
|
||||||
@CommandPermission("serverutils.unloadplugin")
|
@CommandPermission("serverutils.unloadplugin")
|
||||||
@Description("Disables and unloads the specified plugin.")
|
@Description("Disables and unloads the specified plugin.")
|
||||||
public void onUnloadPlugin(CommandSender commandSender, String pluginName) {
|
public void onUnloadPlugin(CommandSender commandSender, String pluginName) {
|
||||||
CloseableResult result = PluginManager.unloadPlugin(pluginName);
|
CloseableResult result = BungeePluginManager.get().unloadPlugin(pluginName);
|
||||||
result.getResult().sendTo(BungeeUtils.wrap(commandSender), "unload", pluginName);
|
result.getResult().sendTo(BungeeUtils.wrap(commandSender), "unload", pluginName);
|
||||||
result.tryClose();
|
result.tryClose();
|
||||||
}
|
}
|
||||||
|
|
@ -137,7 +135,7 @@ public class CommandServerUtils extends BaseCommand {
|
||||||
@CommandPermission("serverutils.reloadplugin")
|
@CommandPermission("serverutils.reloadplugin")
|
||||||
@Description("Reloads a specified plugin.")
|
@Description("Reloads a specified plugin.")
|
||||||
public void onReloadPlugin(CommandSender sender, String pluginName) {
|
public void onReloadPlugin(CommandSender sender, String pluginName) {
|
||||||
CloseableResult result = PluginManager.reloadPlugin(pluginName);
|
CloseableResult result = BungeePluginManager.get().reloadPlugin(pluginName);
|
||||||
result.getResult().sendTo(BungeeUtils.wrap(sender), "reload", pluginName);
|
result.getResult().sendTo(BungeeUtils.wrap(sender), "reload", pluginName);
|
||||||
result.tryClose();
|
result.tryClose();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
package net.frankheijden.serverutils.bungee.entities;
|
||||||
|
|
||||||
|
import net.frankheijden.serverutils.bungee.utils.BungeeUtils;
|
||||||
|
import net.frankheijden.serverutils.common.entities.ServerCommandSender;
|
||||||
|
import net.frankheijden.serverutils.common.providers.ChatProvider;
|
||||||
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
|
|
||||||
|
public class BungeeChatProvider extends ChatProvider {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ServerCommandSender getConsoleSender() {
|
||||||
|
return BungeeUtils.wrap(ProxyServer.getInstance().getConsole());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String color(String str) {
|
||||||
|
return ChatColor.translateAlternateColorCodes('&', str);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void broadcast(String permission, String message) {
|
||||||
|
ProxyServer.getInstance().getPlayers().stream()
|
||||||
|
.filter(p -> p.hasPermission(permission))
|
||||||
|
.forEach(p -> p.sendMessage(message));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
package net.frankheijden.serverutils.bungee.entities;
|
|
||||||
|
|
||||||
import net.frankheijden.serverutils.common.providers.ColorProvider;
|
|
||||||
import net.md_5.bungee.api.ChatColor;
|
|
||||||
|
|
||||||
public class BungeeColorProvider implements ColorProvider {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String apply(String str) {
|
|
||||||
return ChatColor.translateAlternateColorCodes('&', str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -15,4 +15,9 @@ public class BungeeCommandSender implements ServerCommandSender {
|
||||||
public void sendMessage(String message) {
|
public void sendMessage(String message) {
|
||||||
sender.sendMessage(message);
|
sender.sendMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(String permission) {
|
||||||
|
return sender.hasPermission(permission);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,18 +4,19 @@ import java.io.File;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import net.frankheijden.serverutils.bungee.ServerUtils;
|
import net.frankheijden.serverutils.bungee.ServerUtils;
|
||||||
import net.frankheijden.serverutils.common.providers.ColorProvider;
|
import net.frankheijden.serverutils.bungee.managers.BungeePluginManager;
|
||||||
import net.frankheijden.serverutils.common.providers.PluginProvider;
|
import net.frankheijden.serverutils.bungee.managers.BungeeTaskManager;
|
||||||
import net.frankheijden.serverutils.common.providers.ResourceProvider;
|
import net.frankheijden.serverutils.bungee.managers.BungeeVersionManager;
|
||||||
import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin;
|
import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin;
|
||||||
import net.md_5.bungee.api.plugin.Plugin;
|
|
||||||
|
|
||||||
public class BungeePlugin extends ServerUtilsPlugin {
|
public class BungeePlugin extends ServerUtilsPlugin {
|
||||||
|
|
||||||
private final ServerUtils plugin;
|
private final ServerUtils plugin;
|
||||||
private final PluginProvider<Plugin> pluginProvider;
|
private final BungeePluginManager pluginManager;
|
||||||
private final ResourceProvider resourceProvider;
|
private final BungeeTaskManager taskManager;
|
||||||
private final ColorProvider colorProvider;
|
private final BungeeResourceProvider resourceProvider;
|
||||||
|
private final BungeeChatProvider chatProvider;
|
||||||
|
private final BungeeVersionManager versionManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new BungeePlugin instance of ServerUtils.
|
* Creates a new BungeePlugin instance of ServerUtils.
|
||||||
|
|
@ -23,25 +24,37 @@ public class BungeePlugin extends ServerUtilsPlugin {
|
||||||
*/
|
*/
|
||||||
public BungeePlugin(ServerUtils plugin) {
|
public BungeePlugin(ServerUtils plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
this.pluginProvider = new BungeePluginProvider(plugin);
|
this.pluginManager = new BungeePluginManager();
|
||||||
|
this.taskManager = new BungeeTaskManager();
|
||||||
this.resourceProvider = new BungeeResourceProvider(plugin);
|
this.resourceProvider = new BungeeResourceProvider(plugin);
|
||||||
this.colorProvider = new BungeeColorProvider();
|
this.chatProvider = new BungeeChatProvider();
|
||||||
|
this.versionManager = new BungeeVersionManager(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public PluginProvider<Plugin> getPluginProvider() {
|
public BungeePluginManager getPluginManager() {
|
||||||
return pluginProvider;
|
return pluginManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResourceProvider getResourceProvider() {
|
public BungeeTaskManager getTaskManager() {
|
||||||
|
return taskManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BungeeResourceProvider getResourceProvider() {
|
||||||
return resourceProvider;
|
return resourceProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ColorProvider getColorProvider() {
|
public BungeeChatProvider getChatProvider() {
|
||||||
return colorProvider;
|
return chatProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BungeeVersionManager getVersionManager() {
|
||||||
|
return versionManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
package net.frankheijden.serverutils.bungee.entities;
|
|
||||||
|
|
||||||
import net.frankheijden.serverutils.bungee.ServerUtils;
|
|
||||||
import net.frankheijden.serverutils.bungee.managers.PluginManager;
|
|
||||||
import net.frankheijden.serverutils.common.providers.PluginProvider;
|
|
||||||
import net.md_5.bungee.api.plugin.Plugin;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public class BungeePluginProvider extends PluginProvider<Plugin> {
|
|
||||||
|
|
||||||
private final ServerUtils plugin;
|
|
||||||
|
|
||||||
public BungeePluginProvider(ServerUtils plugin) {
|
|
||||||
this.plugin = plugin;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public File getPluginsFolder() {
|
|
||||||
return plugin.getProxy().getPluginsFolder();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Plugin> getPlugins() {
|
|
||||||
return getPlugins(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Plugin> getPlugins(boolean modules) {
|
|
||||||
Collection<Plugin> plugins = plugin.getProxy().getPluginManager().getPlugins();
|
|
||||||
if (modules) return new ArrayList<>(plugins);
|
|
||||||
return plugins.stream()
|
|
||||||
.filter(PluginManager::isPlugin)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPluginName(Plugin plugin) {
|
|
||||||
return plugin.getDataFolder().getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Plugin> getPluginsSorted(boolean modules) {
|
|
||||||
List<Plugin> plugins = getPlugins(modules);
|
|
||||||
plugins.sort(Comparator.comparing(this::getPluginName));
|
|
||||||
return plugins;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
package net.frankheijden.serverutils.bungee.listeners;
|
||||||
|
|
||||||
|
import net.frankheijden.serverutils.bungee.utils.BungeeUtils;
|
||||||
|
import net.frankheijden.serverutils.common.listeners.ServerListener;
|
||||||
|
import net.md_5.bungee.api.event.ServerConnectEvent;
|
||||||
|
import net.md_5.bungee.api.plugin.Listener;
|
||||||
|
import net.md_5.bungee.event.EventHandler;
|
||||||
|
|
||||||
|
public class BungeeListener implements Listener {
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onServerConnect(ServerConnectEvent event) {
|
||||||
|
if (event.getReason() != ServerConnectEvent.Reason.JOIN_PROXY) return;
|
||||||
|
ServerListener.handleUpdate(BungeeUtils.wrap(event.getPlayer()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,9 +3,9 @@ package net.frankheijden.serverutils.bungee.managers;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import net.frankheijden.serverutils.bungee.ServerUtils;
|
import net.frankheijden.serverutils.bungee.ServerUtils;
|
||||||
import net.frankheijden.serverutils.bungee.entities.BungeeLoadResult;
|
import net.frankheijden.serverutils.bungee.entities.BungeeLoadResult;
|
||||||
import net.frankheijden.serverutils.bungee.entities.BungeePluginProvider;
|
|
||||||
import net.frankheijden.serverutils.bungee.reflection.RPluginClassLoader;
|
import net.frankheijden.serverutils.bungee.reflection.RPluginClassLoader;
|
||||||
import net.frankheijden.serverutils.bungee.reflection.RPluginManager;
|
import net.frankheijden.serverutils.bungee.reflection.RPluginManager;
|
||||||
|
import net.frankheijden.serverutils.common.managers.AbstractPluginManager;
|
||||||
import net.frankheijden.serverutils.common.entities.CloseableResult;
|
import net.frankheijden.serverutils.common.entities.CloseableResult;
|
||||||
import net.frankheijden.serverutils.common.entities.Result;
|
import net.frankheijden.serverutils.common.entities.Result;
|
||||||
import net.md_5.bungee.api.ProxyServer;
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
|
|
@ -18,15 +18,29 @@ import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLClassLoader;
|
import java.net.URLClassLoader;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
import java.util.jar.JarEntry;
|
import java.util.jar.JarEntry;
|
||||||
import java.util.jar.JarFile;
|
import java.util.jar.JarFile;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class PluginManager {
|
public class BungeePluginManager extends AbstractPluginManager<Plugin> {
|
||||||
|
|
||||||
private static final ProxyServer proxy = ProxyServer.getInstance();
|
private static final ProxyServer proxy = ProxyServer.getInstance();
|
||||||
private static final ServerUtils plugin = ServerUtils.getInstance();
|
private static final ServerUtils plugin = ServerUtils.getInstance();
|
||||||
private static final BungeePluginProvider provider = (BungeePluginProvider) plugin.getPlugin().getPluginProvider();
|
|
||||||
|
private static BungeePluginManager instance;
|
||||||
|
|
||||||
|
public BungeePluginManager() {
|
||||||
|
instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BungeePluginManager get() {
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether a loaded plugin is a module.
|
* Checks whether a loaded plugin is a module.
|
||||||
|
|
@ -46,13 +60,15 @@ public class PluginManager {
|
||||||
return !isModule(plugin);
|
return !isModule(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BungeeLoadResult loadPlugin(String fileName) {
|
@Override
|
||||||
File file = getPluginFileExact(fileName);
|
public BungeeLoadResult loadPlugin(String pluginFile) {
|
||||||
|
File file = getPluginFileExact(pluginFile);
|
||||||
if (!file.exists()) return new BungeeLoadResult(Result.NOT_EXISTS);
|
if (!file.exists()) return new BungeeLoadResult(Result.NOT_EXISTS);
|
||||||
return loadPlugin(file);
|
return loadPlugin(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BungeeLoadResult loadPlugin(File file) {
|
@Override
|
||||||
|
public BungeeLoadResult loadPlugin(File file) {
|
||||||
PluginDescription desc;
|
PluginDescription desc;
|
||||||
try {
|
try {
|
||||||
desc = getPluginDescription(file);
|
desc = getPluginDescription(file);
|
||||||
|
|
@ -80,7 +96,8 @@ public class PluginManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Result enablePlugin(Plugin plugin) {
|
@Override
|
||||||
|
public Result enablePlugin(Plugin plugin) {
|
||||||
PluginDescription desc = plugin.getDescription();
|
PluginDescription desc = plugin.getDescription();
|
||||||
String name = desc.getName();
|
String name = desc.getName();
|
||||||
try {
|
try {
|
||||||
|
|
@ -95,13 +112,15 @@ public class PluginManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CloseableResult reloadPlugin(String pluginName) {
|
@Override
|
||||||
|
public CloseableResult reloadPlugin(String pluginName) {
|
||||||
Plugin plugin = proxy.getPluginManager().getPlugin(pluginName);
|
Plugin plugin = proxy.getPluginManager().getPlugin(pluginName);
|
||||||
if (plugin == null) return new CloseableResult(Result.NOT_ENABLED);
|
if (plugin == null) return new CloseableResult(Result.NOT_ENABLED);
|
||||||
return reloadPlugin(plugin);
|
return reloadPlugin(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CloseableResult reloadPlugin(Plugin plugin) {
|
@Override
|
||||||
|
public CloseableResult reloadPlugin(Plugin plugin) {
|
||||||
CloseableResult result = unloadPlugin(plugin);
|
CloseableResult result = unloadPlugin(plugin);
|
||||||
if (result.getResult() != Result.SUCCESS) return result;
|
if (result.getResult() != Result.SUCCESS) return result;
|
||||||
|
|
||||||
|
|
@ -114,13 +133,15 @@ public class PluginManager {
|
||||||
return result.set(enablePlugin(loadResult.get()));
|
return result.set(enablePlugin(loadResult.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CloseableResult unloadPlugin(String pluginName) {
|
@Override
|
||||||
|
public CloseableResult unloadPlugin(String pluginName) {
|
||||||
Plugin plugin = proxy.getPluginManager().getPlugin(pluginName);
|
Plugin plugin = proxy.getPluginManager().getPlugin(pluginName);
|
||||||
if (plugin == null) return new CloseableResult(Result.NOT_ENABLED);
|
if (plugin == null) return new CloseableResult(Result.NOT_ENABLED);
|
||||||
return unloadPlugin(plugin);
|
return unloadPlugin(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CloseableResult unloadPlugin(Plugin plugin) {
|
@Override
|
||||||
|
public CloseableResult unloadPlugin(Plugin plugin) {
|
||||||
plugin.onDisable();
|
plugin.onDisable();
|
||||||
proxy.getPluginManager().unregisterCommands(plugin);
|
proxy.getPluginManager().unregisterCommands(plugin);
|
||||||
proxy.getPluginManager().unregisterListeners(plugin);
|
proxy.getPluginManager().unregisterListeners(plugin);
|
||||||
|
|
@ -137,8 +158,8 @@ public class PluginManager {
|
||||||
return new File(proxy.getPluginsFolder(), fileName);
|
return new File(proxy.getPluginsFolder(), fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static File getPluginFile(String pluginName) {
|
public File getPluginFile(String pluginName) {
|
||||||
for (File file : provider.getPluginJars()) {
|
for (File file : getPluginJars()) {
|
||||||
PluginDescription desc;
|
PluginDescription desc;
|
||||||
try {
|
try {
|
||||||
desc = getPluginDescription(file);
|
desc = getPluginDescription(file);
|
||||||
|
|
@ -179,4 +200,38 @@ public class PluginManager {
|
||||||
if (loader instanceof Closeable) return (Closeable) loader;
|
if (loader instanceof Closeable) return (Closeable) loader;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public File getPluginsFolder() {
|
||||||
|
return plugin.getProxy().getPluginsFolder();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Plugin> getPlugins() {
|
||||||
|
return getPlugins(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Plugin> getPlugins(boolean modules) {
|
||||||
|
Collection<Plugin> plugins = plugin.getProxy().getPluginManager().getPlugins();
|
||||||
|
if (modules) return new ArrayList<>(plugins);
|
||||||
|
return plugins.stream()
|
||||||
|
.filter(BungeePluginManager::isPlugin)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPluginName(Plugin plugin) {
|
||||||
|
return plugin.getDataFolder().getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public File getPluginFile(Plugin plugin) {
|
||||||
|
return plugin.getFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Plugin> getPluginsSorted(boolean modules) {
|
||||||
|
List<Plugin> plugins = getPlugins(modules);
|
||||||
|
plugins.sort(Comparator.comparing(this::getPluginName));
|
||||||
|
return plugins;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
package net.frankheijden.serverutils.bungee.managers;
|
||||||
|
|
||||||
|
import net.frankheijden.serverutils.bungee.ServerUtils;
|
||||||
|
import net.frankheijden.serverutils.common.managers.AbstractTaskManager;
|
||||||
|
import net.md_5.bungee.api.ProxyServer;
|
||||||
|
|
||||||
|
public class BungeeTaskManager extends AbstractTaskManager {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void runTaskAsynchronously(Runnable runnable) {
|
||||||
|
ProxyServer.getInstance().getScheduler().runAsync(ServerUtils.getInstance(), runnable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
package net.frankheijden.serverutils.bungee.managers;
|
||||||
|
|
||||||
|
import net.frankheijden.serverutils.bungee.ServerUtils;
|
||||||
|
import net.frankheijden.serverutils.common.managers.AbstractVersionManager;
|
||||||
|
|
||||||
|
public class BungeeVersionManager extends AbstractVersionManager {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new VersionManager instance.
|
||||||
|
* Used for automatic updating.
|
||||||
|
*/
|
||||||
|
public BungeeVersionManager(ServerUtils plugin) {
|
||||||
|
super(plugin.getDescription().getVersion());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,17 +1,41 @@
|
||||||
package net.frankheijden.serverutils.common;
|
package net.frankheijden.serverutils.common;
|
||||||
|
|
||||||
|
import net.frankheijden.serverutils.common.config.Config;
|
||||||
import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin;
|
import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin;
|
||||||
|
import net.frankheijden.serverutils.common.tasks.UpdateCheckerTask;
|
||||||
|
|
||||||
public class ServerUtilsApp {
|
public class ServerUtilsApp<T> {
|
||||||
|
|
||||||
public static final int BSTATS_METRICS_ID = 7790;
|
public static final int BSTATS_METRICS_ID = 7790;
|
||||||
private static ServerUtilsPlugin plugin;
|
|
||||||
|
|
||||||
public static void init(ServerUtilsPlugin plugin) {
|
private final T platformPlugin;
|
||||||
ServerUtilsApp.plugin = plugin;
|
private final ServerUtilsPlugin plugin;
|
||||||
|
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
|
private static ServerUtilsApp instance;
|
||||||
|
|
||||||
|
private ServerUtilsApp(T platformPlugin, ServerUtilsPlugin plugin) {
|
||||||
|
this.platformPlugin = platformPlugin;
|
||||||
|
this.plugin = plugin;
|
||||||
|
instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> void init(T obj, ServerUtilsPlugin plugin) {
|
||||||
|
new ServerUtilsApp<>(obj, plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void checkForUpdates() {
|
||||||
|
if (Config.getInstance().getConfig().getBoolean("settings.check-updates")) {
|
||||||
|
UpdateCheckerTask.start(getPlugin().getChatProvider().getConsoleSender(), true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ServerUtilsPlugin getPlugin() {
|
public static ServerUtilsPlugin getPlugin() {
|
||||||
return plugin;
|
return instance.plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public static <T> T getPlatformPlugin() {
|
||||||
|
return (T) instance.platformPlugin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ public class Messenger extends YamlResource {
|
||||||
if (message != null) {
|
if (message != null) {
|
||||||
return StringUtils.apply(message, replacements);
|
return StringUtils.apply(message, replacements);
|
||||||
} else {
|
} else {
|
||||||
instance.plugin.getLogger().severe("Missing locale in messages.yml at path '" + path + "'!");
|
Messenger.plugin.getLogger().severe("Missing locale in messages.yml at path '" + path + "'!");
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
@ -44,7 +44,7 @@ public class Messenger extends YamlResource {
|
||||||
public static void sendRawMessage(ServerCommandSender sender, String msg, String... replacements) {
|
public static void sendRawMessage(ServerCommandSender sender, String msg, String... replacements) {
|
||||||
String message = StringUtils.apply(msg, replacements);
|
String message = StringUtils.apply(msg, replacements);
|
||||||
if (message != null) {
|
if (message != null) {
|
||||||
sender.sendMessage(instance.plugin.getColorProvider().apply(message));
|
sender.sendMessage(Messenger.plugin.getChatProvider().color(message));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -57,11 +57,11 @@ public class Messenger extends YamlResource {
|
||||||
public static void sendMessage(ServerCommandSender sender, String path, String... replacements) {
|
public static void sendMessage(ServerCommandSender sender, String path, String... replacements) {
|
||||||
String message = getMessage(path, replacements);
|
String message = getMessage(path, replacements);
|
||||||
if (message != null) {
|
if (message != null) {
|
||||||
sender.sendMessage(instance.plugin.getColorProvider().apply(message));
|
sender.sendMessage(Messenger.plugin.getChatProvider().color(message));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String color(String str) {
|
public static String color(String str) {
|
||||||
return instance.plugin.getColorProvider().apply(str);
|
return Messenger.plugin.getChatProvider().color(str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,4 +3,6 @@ package net.frankheijden.serverutils.common.entities;
|
||||||
public interface ServerCommandSender {
|
public interface ServerCommandSender {
|
||||||
|
|
||||||
void sendMessage(String message);
|
void sendMessage(String message);
|
||||||
|
|
||||||
|
boolean hasPermission(String permission);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,23 +2,26 @@ package net.frankheijden.serverutils.common.entities;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import net.frankheijden.serverutils.common.providers.ColorProvider;
|
import net.frankheijden.serverutils.common.managers.AbstractPluginManager;
|
||||||
import net.frankheijden.serverutils.common.providers.PluginProvider;
|
import net.frankheijden.serverutils.common.managers.AbstractTaskManager;
|
||||||
|
import net.frankheijden.serverutils.common.managers.AbstractVersionManager;
|
||||||
|
import net.frankheijden.serverutils.common.providers.ChatProvider;
|
||||||
import net.frankheijden.serverutils.common.providers.ResourceProvider;
|
import net.frankheijden.serverutils.common.providers.ResourceProvider;
|
||||||
import net.frankheijden.serverutils.common.utils.FileUtils;
|
import net.frankheijden.serverutils.common.utils.FileUtils;
|
||||||
|
|
||||||
public abstract class ServerUtilsPlugin {
|
public abstract class ServerUtilsPlugin {
|
||||||
|
|
||||||
public abstract <T> PluginProvider<T> getPluginProvider();
|
public abstract <T> AbstractPluginManager<T> getPluginManager();
|
||||||
|
|
||||||
|
public abstract AbstractTaskManager getTaskManager();
|
||||||
|
|
||||||
public abstract ResourceProvider getResourceProvider();
|
public abstract ResourceProvider getResourceProvider();
|
||||||
|
|
||||||
public abstract ColorProvider getColorProvider();
|
public abstract ChatProvider getChatProvider();
|
||||||
|
|
||||||
|
public abstract AbstractVersionManager getVersionManager();
|
||||||
|
|
||||||
public abstract Logger getLogger();
|
public abstract Logger getLogger();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
package net.frankheijden.serverutils.common.listeners;
|
||||||
|
|
||||||
|
import net.frankheijden.serverutils.common.config.Config;
|
||||||
|
import net.frankheijden.serverutils.common.config.YamlConfig;
|
||||||
|
import net.frankheijden.serverutils.common.entities.ServerCommandSender;
|
||||||
|
import net.frankheijden.serverutils.common.tasks.UpdateCheckerTask;
|
||||||
|
|
||||||
|
public class ServerListener {
|
||||||
|
|
||||||
|
private static final YamlConfig config = Config.getInstance().getConfig();
|
||||||
|
|
||||||
|
public static void handleUpdate(ServerCommandSender sender) {
|
||||||
|
if (!config.getBoolean("settings.check-updates-login")) return;
|
||||||
|
|
||||||
|
if (sender.hasPermission("serverutils.notification.update")) {
|
||||||
|
UpdateCheckerTask.start(sender);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
package net.frankheijden.serverutils.common.managers;
|
||||||
|
|
||||||
|
import net.frankheijden.serverutils.common.entities.CloseableResult;
|
||||||
|
import net.frankheijden.serverutils.common.entities.LoadResult;
|
||||||
|
import net.frankheijden.serverutils.common.entities.Result;
|
||||||
|
import net.frankheijden.serverutils.common.providers.PluginProvider;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public abstract class AbstractPluginManager<T> extends PluginProvider<T> {
|
||||||
|
|
||||||
|
public abstract LoadResult<T> loadPlugin(String pluginFile);
|
||||||
|
|
||||||
|
public abstract LoadResult<T> loadPlugin(File file);
|
||||||
|
|
||||||
|
public abstract Result enablePlugin(T plugin);
|
||||||
|
|
||||||
|
public abstract CloseableResult reloadPlugin(String pluginName);
|
||||||
|
|
||||||
|
public abstract CloseableResult reloadPlugin(T plugin);
|
||||||
|
|
||||||
|
public abstract CloseableResult unloadPlugin(String pluginName);
|
||||||
|
|
||||||
|
public abstract CloseableResult unloadPlugin(T plugin);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
package net.frankheijden.serverutils.common.managers;
|
||||||
|
|
||||||
|
public abstract class AbstractTaskManager {
|
||||||
|
|
||||||
|
public abstract void runTaskAsynchronously(Runnable runnable);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
package net.frankheijden.serverutils.common.managers;
|
||||||
|
|
||||||
|
public abstract class AbstractVersionManager {
|
||||||
|
|
||||||
|
private final String currentVersion;
|
||||||
|
private String downloadedVersion;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new VersionManager instance.
|
||||||
|
* Used for automatic updating.
|
||||||
|
* @param currentVersion The current version of the plugin.
|
||||||
|
*/
|
||||||
|
public AbstractVersionManager(String currentVersion) {
|
||||||
|
this.currentVersion = currentVersion;
|
||||||
|
this.downloadedVersion = currentVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCurrentVersion() {
|
||||||
|
return currentVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDownloadedVersion() {
|
||||||
|
return downloadedVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasDownloaded() {
|
||||||
|
return !downloadedVersion.equals(currentVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDownloaded(String version) {
|
||||||
|
return downloadedVersion.equals(version);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDownloaded(String version) {
|
||||||
|
this.downloadedVersion = version;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
package net.frankheijden.serverutils.common.providers;
|
||||||
|
|
||||||
|
import net.frankheijden.serverutils.common.entities.ServerCommandSender;
|
||||||
|
|
||||||
|
public abstract class ChatProvider {
|
||||||
|
|
||||||
|
public abstract ServerCommandSender getConsoleSender();
|
||||||
|
|
||||||
|
public abstract String color(String str);
|
||||||
|
|
||||||
|
public abstract void broadcast(String permission, String message);
|
||||||
|
}
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
package net.frankheijden.serverutils.common.providers;
|
|
||||||
|
|
||||||
public interface ColorProvider {
|
|
||||||
|
|
||||||
String apply(String str);
|
|
||||||
}
|
|
||||||
|
|
@ -14,6 +14,8 @@ public abstract class PluginProvider<T> {
|
||||||
|
|
||||||
public abstract String getPluginName(T plugin);
|
public abstract String getPluginName(T plugin);
|
||||||
|
|
||||||
|
public abstract File getPluginFile(T plugin);
|
||||||
|
|
||||||
public List<T> getPluginsSorted() {
|
public List<T> getPluginsSorted() {
|
||||||
List<T> plugins = getPlugins();
|
List<T> plugins = getPlugins();
|
||||||
plugins.sort(Comparator.comparing(this::getPluginName));
|
plugins.sort(Comparator.comparing(this::getPluginName));
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,19 @@
|
||||||
package net.frankheijden.serverutils.bukkit.tasks;
|
package net.frankheijden.serverutils.common.tasks;
|
||||||
|
|
||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.Method;
|
|
||||||
import java.net.ConnectException;
|
import java.net.ConnectException;
|
||||||
import java.net.SocketTimeoutException;
|
import java.net.SocketTimeoutException;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
import net.frankheijden.serverutils.common.ServerUtilsApp;
|
||||||
import net.frankheijden.serverutils.bukkit.managers.PluginManager;
|
import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin;
|
||||||
import net.frankheijden.serverutils.bukkit.managers.VersionManager;
|
import net.frankheijden.serverutils.common.managers.AbstractVersionManager;
|
||||||
import net.frankheijden.serverutils.common.config.Config;
|
import net.frankheijden.serverutils.common.config.Config;
|
||||||
import net.frankheijden.serverutils.common.config.Messenger;
|
import net.frankheijden.serverutils.common.config.Messenger;
|
||||||
import net.frankheijden.serverutils.common.config.YamlConfig;
|
import net.frankheijden.serverutils.common.config.YamlConfig;
|
||||||
|
|
@ -23,16 +21,14 @@ import net.frankheijden.serverutils.common.entities.CloseableResult;
|
||||||
import net.frankheijden.serverutils.common.entities.ServerCommandSender;
|
import net.frankheijden.serverutils.common.entities.ServerCommandSender;
|
||||||
import net.frankheijden.serverutils.common.utils.FileUtils;
|
import net.frankheijden.serverutils.common.utils.FileUtils;
|
||||||
import net.frankheijden.serverutils.common.utils.VersionUtils;
|
import net.frankheijden.serverutils.common.utils.VersionUtils;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
|
|
||||||
public class UpdateCheckerTask implements Runnable {
|
public class UpdateCheckerTask implements Runnable {
|
||||||
|
|
||||||
private static final ServerUtils plugin = ServerUtils.getInstance();
|
private static final ServerUtilsPlugin plugin = ServerUtilsApp.getPlugin();
|
||||||
private static final YamlConfig config = Config.getInstance().getConfig();
|
private static final YamlConfig config = Config.getInstance().getConfig();
|
||||||
private static final VersionManager versionManager = VersionManager.getInstance();
|
|
||||||
|
private final AbstractVersionManager versionManager;
|
||||||
private final ServerCommandSender sender;
|
private final ServerCommandSender sender;
|
||||||
private final String currentVersion;
|
|
||||||
private final boolean startup;
|
private final boolean startup;
|
||||||
|
|
||||||
private static final String GITHUB_LINK = "https://api.github.com/repos/FrankHeijden/ServerUtils/releases/latest";
|
private static final String GITHUB_LINK = "https://api.github.com/repos/FrankHeijden/ServerUtils/releases/latest";
|
||||||
|
|
@ -50,8 +46,8 @@ public class UpdateCheckerTask implements Runnable {
|
||||||
private static final String UP_TO_DATE = "We are up-to-date!";
|
private static final String UP_TO_DATE = "We are up-to-date!";
|
||||||
|
|
||||||
private UpdateCheckerTask(ServerCommandSender sender, boolean startup) {
|
private UpdateCheckerTask(ServerCommandSender sender, boolean startup) {
|
||||||
|
this.versionManager = plugin.getVersionManager();
|
||||||
this.sender = sender;
|
this.sender = sender;
|
||||||
this.currentVersion = plugin.getDescription().getVersion();
|
|
||||||
this.startup = startup;
|
this.startup = startup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -61,7 +57,7 @@ public class UpdateCheckerTask implements Runnable {
|
||||||
|
|
||||||
public static void start(ServerCommandSender sender, boolean startup) {
|
public static void start(ServerCommandSender sender, boolean startup) {
|
||||||
UpdateCheckerTask task = new UpdateCheckerTask(sender, startup);
|
UpdateCheckerTask task = new UpdateCheckerTask(sender, startup);
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, task);
|
plugin.getTaskManager().runTaskAsynchronously(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isStartupCheck() {
|
public boolean isStartupCheck() {
|
||||||
|
|
@ -102,7 +98,9 @@ public class UpdateCheckerTask implements Runnable {
|
||||||
String body = jsonObject.getAsJsonPrimitive("body").getAsString();
|
String body = jsonObject.getAsJsonPrimitive("body").getAsString();
|
||||||
String downloadUrl = getDownloadUrl(jsonObject);
|
String downloadUrl = getDownloadUrl(jsonObject);
|
||||||
|
|
||||||
if (VersionUtils.isNewVersion(currentVersion, githubVersion)) {
|
String downloaded = versionManager.getDownloadedVersion();
|
||||||
|
String current = versionManager.getCurrentVersion();
|
||||||
|
if (VersionUtils.isNewVersion(downloaded, githubVersion)) {
|
||||||
if (isStartupCheck()) {
|
if (isStartupCheck()) {
|
||||||
plugin.getLogger().info(String.format(UPDATE_AVAILABLE, githubVersion));
|
plugin.getLogger().info(String.format(UPDATE_AVAILABLE, githubVersion));
|
||||||
plugin.getLogger().info("Release info: " + body);
|
plugin.getLogger().info("Release info: " + body);
|
||||||
|
|
@ -112,7 +110,7 @@ public class UpdateCheckerTask implements Runnable {
|
||||||
plugin.getLogger().info(String.format(DOWNLOAD_START, downloadUrl));
|
plugin.getLogger().info(String.format(DOWNLOAD_START, downloadUrl));
|
||||||
} else {
|
} else {
|
||||||
Messenger.sendMessage(sender, "serverutils.update.downloading",
|
Messenger.sendMessage(sender, "serverutils.update.downloading",
|
||||||
"%old%", currentVersion,
|
"%old%", current,
|
||||||
"%new%", githubVersion,
|
"%new%", githubVersion,
|
||||||
"%info%", body);
|
"%info%", body);
|
||||||
}
|
}
|
||||||
|
|
@ -120,7 +118,7 @@ public class UpdateCheckerTask implements Runnable {
|
||||||
tryReloadPlugin();
|
tryReloadPlugin();
|
||||||
} else if (!isStartupCheck()) {
|
} else if (!isStartupCheck()) {
|
||||||
Messenger.sendMessage(sender, "serverutils.update.available",
|
Messenger.sendMessage(sender, "serverutils.update.available",
|
||||||
"%old%", currentVersion,
|
"%old%", current,
|
||||||
"%new%", githubVersion,
|
"%new%", githubVersion,
|
||||||
"%info%", body);
|
"%info%", body);
|
||||||
}
|
}
|
||||||
|
|
@ -150,7 +148,7 @@ public class UpdateCheckerTask implements Runnable {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void downloadPlugin(String githubVersion, String downloadLink) {
|
private void downloadPlugin(String githubVersion, String downloadLink) {
|
||||||
if (versionManager.isDownloadedVersion(githubVersion)) {
|
if (versionManager.isDownloaded(githubVersion)) {
|
||||||
broadcastDownloadStatus(githubVersion, false);
|
broadcastDownloadStatus(githubVersion, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -161,13 +159,13 @@ public class UpdateCheckerTask implements Runnable {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
FileUtils.download(downloadLink, getPluginFile());
|
FileUtils.download(downloadLink, plugin.getPluginManager().getPluginFile(ServerUtilsApp.getPlatformPlugin()));
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
broadcastDownloadStatus(githubVersion, true);
|
broadcastDownloadStatus(githubVersion, true);
|
||||||
throw new RuntimeException(DOWNLOAD_ERROR, ex);
|
throw new RuntimeException(DOWNLOAD_ERROR, ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
versionManager.setDownloadedVersion(githubVersion);
|
versionManager.setDownloaded(githubVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tryReloadPlugin() {
|
private void tryReloadPlugin() {
|
||||||
|
|
@ -175,7 +173,7 @@ public class UpdateCheckerTask implements Runnable {
|
||||||
|
|
||||||
if (isStartupCheck()) {
|
if (isStartupCheck()) {
|
||||||
plugin.getLogger().info(String.format(DOWNLOADED_RESTART, downloadedVersion));
|
plugin.getLogger().info(String.format(DOWNLOADED_RESTART, downloadedVersion));
|
||||||
CloseableResult result = PluginManager.reloadPlugin(plugin);
|
CloseableResult result = plugin.getPluginManager().reloadPlugin(ServerUtilsApp.getPlatformPlugin());
|
||||||
plugin.getLogger().info(String.format(UPGRADE_SUCCESS, downloadedVersion));
|
plugin.getLogger().info(String.format(UPGRADE_SUCCESS, downloadedVersion));
|
||||||
result.tryClose();
|
result.tryClose();
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -185,20 +183,7 @@ public class UpdateCheckerTask implements Runnable {
|
||||||
|
|
||||||
private void broadcastDownloadStatus(String githubVersion, boolean isError) {
|
private void broadcastDownloadStatus(String githubVersion, boolean isError) {
|
||||||
final String path = "serverutils.update." + (isError ? "failed" : "success");
|
final String path = "serverutils.update." + (isError ? "failed" : "success");
|
||||||
Bukkit.getOnlinePlayers().forEach((p) -> {
|
String message = Messenger.getMessage(path,"%new%", githubVersion);
|
||||||
if (p.hasPermission("serverutils.notification.update")) {
|
plugin.getChatProvider().broadcast("serverutils.notification.update", message);
|
||||||
Messenger.sendMessage(sender, path, "%new%", githubVersion);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private File getPluginFile() {
|
|
||||||
try {
|
|
||||||
Method method = JavaPlugin.class.getDeclaredMethod("getFile");
|
|
||||||
method.setAccessible(true);
|
|
||||||
return (File) method.invoke(plugin);
|
|
||||||
} catch (ReflectiveOperationException ex) {
|
|
||||||
throw new RuntimeException("Error retrieving current plugin file", ex);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -24,6 +24,7 @@ public class ListBuilder<T> {
|
||||||
return new ListBuilder<>(new ArrayList<>(list));
|
return new ListBuilder<>(new ArrayList<>(list));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SafeVarargs
|
||||||
public static <T> ListBuilder<T> create(T... elements) {
|
public static <T> ListBuilder<T> create(T... elements) {
|
||||||
return new ListBuilder<>(Arrays.asList(elements));
|
return new ListBuilder<>(Arrays.asList(elements));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue