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
|
|
@ -7,10 +7,11 @@ import net.frankheijden.serverutils.bungee.commands.CommandPlugins;
|
|||
import net.frankheijden.serverutils.bungee.commands.CommandServerUtils;
|
||||
import net.frankheijden.serverutils.bungee.entities.BungeePlugin;
|
||||
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.config.Config;
|
||||
import net.frankheijden.serverutils.common.config.Messenger;
|
||||
import net.frankheijden.serverutils.common.providers.PluginProvider;
|
||||
import net.md_5.bungee.api.plugin.Plugin;
|
||||
import org.bstats.bungeecord.Metrics;
|
||||
|
||||
|
|
@ -29,7 +30,7 @@ public class ServerUtils extends Plugin {
|
|||
instance = this;
|
||||
|
||||
this.plugin = new BungeePlugin(this);
|
||||
ServerUtilsApp.init(plugin);
|
||||
ServerUtilsApp.init(this, plugin);
|
||||
|
||||
new Metrics(this, ServerUtilsApp.BSTATS_METRICS_ID);
|
||||
new BungeeReflection();
|
||||
|
|
@ -38,12 +39,15 @@ public class ServerUtils extends Plugin {
|
|||
commandManager.registerCommand(new CommandPlugins());
|
||||
commandManager.registerCommand(new CommandServerUtils());
|
||||
|
||||
PluginProvider<Plugin> provider = plugin.getPluginProvider();
|
||||
BungeePluginManager manager = plugin.getPluginManager();
|
||||
CommandCompletions<BungeeCommandCompletionContext> commandCompletions = commandManager.getCommandCompletions();
|
||||
commandCompletions.registerAsyncCompletion("plugins", context -> provider.getPluginNames());
|
||||
commandCompletions.registerAsyncCompletion("pluginJars", context -> provider.getPluginFileNames());
|
||||
commandCompletions.registerAsyncCompletion("plugins", context -> manager.getPluginNames());
|
||||
commandCompletions.registerAsyncCompletion("pluginJars", context -> manager.getPluginFileNames());
|
||||
|
||||
reload();
|
||||
getProxy().getPluginManager().registerListener(this, new BungeeListener());
|
||||
|
||||
ServerUtilsApp.checkForUpdates();
|
||||
}
|
||||
|
||||
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.Default;
|
||||
import co.aikar.commands.annotation.Description;
|
||||
import co.aikar.commands.annotation.Subcommand;
|
||||
import net.frankheijden.serverutils.bungee.ServerUtils;
|
||||
import net.frankheijden.serverutils.bungee.entities.BungeePluginProvider;
|
||||
import net.frankheijden.serverutils.bungee.managers.BungeePluginManager;
|
||||
import net.frankheijden.serverutils.bungee.utils.BungeeUtils;
|
||||
import net.frankheijden.serverutils.common.commands.Plugins;
|
||||
import net.frankheijden.serverutils.common.config.Messenger;
|
||||
|
|
@ -17,8 +15,7 @@ import net.md_5.bungee.api.CommandSender;
|
|||
@CommandAlias("bpl|bplugins|bungeepl")
|
||||
public class CommandPlugins extends BaseCommand {
|
||||
|
||||
private static final ServerUtils plugin = ServerUtils.getInstance();
|
||||
private static final BungeePluginProvider provider = (BungeePluginProvider) plugin.getPlugin().getPluginProvider();
|
||||
private static final BungeePluginManager manager = BungeePluginManager.get();
|
||||
|
||||
/**
|
||||
* Sends the plugin list to the sender.
|
||||
|
|
@ -33,7 +30,7 @@ public class CommandPlugins extends BaseCommand {
|
|||
public void onPlugins(CommandSender sender, String... args) {
|
||||
boolean version = contains(args, "-v");
|
||||
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",
|
||||
"%version%", pl.getDescription().getVersion()) : "";
|
||||
return Messenger.getMessage("serverutils.plugins.format",
|
||||
|
|
|
|||
|
|
@ -1,17 +1,15 @@
|
|||
package net.frankheijden.serverutils.bungee.commands;
|
||||
|
||||
import co.aikar.commands.BaseCommand;
|
||||
import co.aikar.commands.RegisteredCommand;
|
||||
import co.aikar.commands.annotation.CommandAlias;
|
||||
import co.aikar.commands.annotation.CommandCompletion;
|
||||
import co.aikar.commands.annotation.CommandPermission;
|
||||
import co.aikar.commands.annotation.Default;
|
||||
import co.aikar.commands.annotation.Description;
|
||||
import co.aikar.commands.annotation.Subcommand;
|
||||
import com.google.common.collect.SetMultimap;
|
||||
import net.frankheijden.serverutils.bungee.ServerUtils;
|
||||
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.utils.BungeeUtils;
|
||||
import net.frankheijden.serverutils.common.config.Messenger;
|
||||
|
|
@ -101,14 +99,14 @@ public class CommandServerUtils extends BaseCommand {
|
|||
public void onLoadPlugin(CommandSender commandSender, String jarFile) {
|
||||
ServerCommandSender sender = BungeeUtils.wrap(commandSender);
|
||||
|
||||
BungeeLoadResult loadResult = PluginManager.loadPlugin(jarFile);
|
||||
BungeeLoadResult loadResult = BungeePluginManager.get().loadPlugin(jarFile);
|
||||
if (!loadResult.isSuccess()) {
|
||||
loadResult.getResult().sendTo(sender, "load", jarFile);
|
||||
return;
|
||||
}
|
||||
|
||||
Plugin plugin = loadResult.get();
|
||||
Result result = PluginManager.enablePlugin(plugin);
|
||||
Result result = BungeePluginManager.get().enablePlugin(plugin);
|
||||
result.sendTo(sender, "load", plugin.getDescription().getName());
|
||||
}
|
||||
|
||||
|
|
@ -122,7 +120,7 @@ public class CommandServerUtils extends BaseCommand {
|
|||
@CommandPermission("serverutils.unloadplugin")
|
||||
@Description("Disables and unloads the specified plugin.")
|
||||
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.tryClose();
|
||||
}
|
||||
|
|
@ -137,7 +135,7 @@ public class CommandServerUtils extends BaseCommand {
|
|||
@CommandPermission("serverutils.reloadplugin")
|
||||
@Description("Reloads a specified plugin.")
|
||||
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.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) {
|
||||
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 net.frankheijden.serverutils.bungee.ServerUtils;
|
||||
import net.frankheijden.serverutils.common.providers.ColorProvider;
|
||||
import net.frankheijden.serverutils.common.providers.PluginProvider;
|
||||
import net.frankheijden.serverutils.common.providers.ResourceProvider;
|
||||
import net.frankheijden.serverutils.bungee.managers.BungeePluginManager;
|
||||
import net.frankheijden.serverutils.bungee.managers.BungeeTaskManager;
|
||||
import net.frankheijden.serverutils.bungee.managers.BungeeVersionManager;
|
||||
import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin;
|
||||
import net.md_5.bungee.api.plugin.Plugin;
|
||||
|
||||
public class BungeePlugin extends ServerUtilsPlugin {
|
||||
|
||||
private final ServerUtils plugin;
|
||||
private final PluginProvider<Plugin> pluginProvider;
|
||||
private final ResourceProvider resourceProvider;
|
||||
private final ColorProvider colorProvider;
|
||||
private final BungeePluginManager pluginManager;
|
||||
private final BungeeTaskManager taskManager;
|
||||
private final BungeeResourceProvider resourceProvider;
|
||||
private final BungeeChatProvider chatProvider;
|
||||
private final BungeeVersionManager versionManager;
|
||||
|
||||
/**
|
||||
* Creates a new BungeePlugin instance of ServerUtils.
|
||||
|
|
@ -23,25 +24,37 @@ public class BungeePlugin extends ServerUtilsPlugin {
|
|||
*/
|
||||
public BungeePlugin(ServerUtils plugin) {
|
||||
this.plugin = plugin;
|
||||
this.pluginProvider = new BungeePluginProvider(plugin);
|
||||
this.pluginManager = new BungeePluginManager();
|
||||
this.taskManager = new BungeeTaskManager();
|
||||
this.resourceProvider = new BungeeResourceProvider(plugin);
|
||||
this.colorProvider = new BungeeColorProvider();
|
||||
this.chatProvider = new BungeeChatProvider();
|
||||
this.versionManager = new BungeeVersionManager(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public PluginProvider<Plugin> getPluginProvider() {
|
||||
return pluginProvider;
|
||||
public BungeePluginManager getPluginManager() {
|
||||
return pluginManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceProvider getResourceProvider() {
|
||||
public BungeeTaskManager getTaskManager() {
|
||||
return taskManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BungeeResourceProvider getResourceProvider() {
|
||||
return resourceProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ColorProvider getColorProvider() {
|
||||
return colorProvider;
|
||||
public BungeeChatProvider getChatProvider() {
|
||||
return chatProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BungeeVersionManager getVersionManager() {
|
||||
return versionManager;
|
||||
}
|
||||
|
||||
@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 net.frankheijden.serverutils.bungee.ServerUtils;
|
||||
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.RPluginManager;
|
||||
import net.frankheijden.serverutils.common.managers.AbstractPluginManager;
|
||||
import net.frankheijden.serverutils.common.entities.CloseableResult;
|
||||
import net.frankheijden.serverutils.common.entities.Result;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
|
|
@ -18,15 +18,29 @@ import java.io.File;
|
|||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
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.JarFile;
|
||||
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 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.
|
||||
|
|
@ -46,13 +60,15 @@ public class PluginManager {
|
|||
return !isModule(plugin);
|
||||
}
|
||||
|
||||
public static BungeeLoadResult loadPlugin(String fileName) {
|
||||
File file = getPluginFileExact(fileName);
|
||||
@Override
|
||||
public BungeeLoadResult loadPlugin(String pluginFile) {
|
||||
File file = getPluginFileExact(pluginFile);
|
||||
if (!file.exists()) return new BungeeLoadResult(Result.NOT_EXISTS);
|
||||
return loadPlugin(file);
|
||||
}
|
||||
|
||||
public static BungeeLoadResult loadPlugin(File file) {
|
||||
@Override
|
||||
public BungeeLoadResult loadPlugin(File file) {
|
||||
PluginDescription desc;
|
||||
try {
|
||||
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();
|
||||
String name = desc.getName();
|
||||
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);
|
||||
if (plugin == null) return new CloseableResult(Result.NOT_ENABLED);
|
||||
return reloadPlugin(plugin);
|
||||
}
|
||||
|
||||
public static CloseableResult reloadPlugin(Plugin plugin) {
|
||||
@Override
|
||||
public CloseableResult reloadPlugin(Plugin plugin) {
|
||||
CloseableResult result = unloadPlugin(plugin);
|
||||
if (result.getResult() != Result.SUCCESS) return result;
|
||||
|
||||
|
|
@ -114,13 +133,15 @@ public class PluginManager {
|
|||
return result.set(enablePlugin(loadResult.get()));
|
||||
}
|
||||
|
||||
public static CloseableResult unloadPlugin(String pluginName) {
|
||||
@Override
|
||||
public CloseableResult unloadPlugin(String pluginName) {
|
||||
Plugin plugin = proxy.getPluginManager().getPlugin(pluginName);
|
||||
if (plugin == null) return new CloseableResult(Result.NOT_ENABLED);
|
||||
return unloadPlugin(plugin);
|
||||
}
|
||||
|
||||
public static CloseableResult unloadPlugin(Plugin plugin) {
|
||||
@Override
|
||||
public CloseableResult unloadPlugin(Plugin plugin) {
|
||||
plugin.onDisable();
|
||||
proxy.getPluginManager().unregisterCommands(plugin);
|
||||
proxy.getPluginManager().unregisterListeners(plugin);
|
||||
|
|
@ -137,8 +158,8 @@ public class PluginManager {
|
|||
return new File(proxy.getPluginsFolder(), fileName);
|
||||
}
|
||||
|
||||
public static File getPluginFile(String pluginName) {
|
||||
for (File file : provider.getPluginJars()) {
|
||||
public File getPluginFile(String pluginName) {
|
||||
for (File file : getPluginJars()) {
|
||||
PluginDescription desc;
|
||||
try {
|
||||
desc = getPluginDescription(file);
|
||||
|
|
@ -179,4 +200,38 @@ public class PluginManager {
|
|||
if (loader instanceof Closeable) return (Closeable) loader;
|
||||
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());
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue