Initial BungeeCord edition
This commit is contained in:
parent
4416d55173
commit
23e8e80191
75 changed files with 1931 additions and 396 deletions
|
|
@ -3,23 +3,25 @@ package net.frankheijden.serverutils.bukkit;
|
|||
import co.aikar.commands.BukkitCommandCompletionContext;
|
||||
import co.aikar.commands.CommandCompletions;
|
||||
import co.aikar.commands.PaperCommandManager;
|
||||
import java.io.File;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.commands.CommandPlugins;
|
||||
import net.frankheijden.serverutils.bukkit.commands.CommandServerUtils;
|
||||
import net.frankheijden.serverutils.bukkit.config.Config;
|
||||
import net.frankheijden.serverutils.bukkit.config.Messenger;
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitPlugin;
|
||||
import net.frankheijden.serverutils.bukkit.listeners.MainListener;
|
||||
import net.frankheijden.serverutils.bukkit.managers.VersionManager;
|
||||
import net.frankheijden.serverutils.bukkit.reflection.BukkitReflection;
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||
import net.frankheijden.serverutils.bukkit.reflection.RCommandMap;
|
||||
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.config.Config;
|
||||
import net.frankheijden.serverutils.common.config.Messenger;
|
||||
import net.frankheijden.serverutils.common.providers.PluginProvider;
|
||||
import org.bstats.bukkit.Metrics;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
|
|
@ -30,31 +32,33 @@ import org.bukkit.plugin.java.JavaPlugin;
|
|||
|
||||
public class ServerUtils extends JavaPlugin implements CommandExecutor {
|
||||
|
||||
private static final int BSTATS_METRICS_ID = 7790;
|
||||
|
||||
private static ServerUtils instance;
|
||||
private static final String CONFIG_RESOURCE = "bukkit-config.yml";
|
||||
private static final String MESSAGES_RESOURCE = "bukkit-messages.yml";
|
||||
|
||||
private BukkitPlugin plugin;
|
||||
private PaperCommandManager commandManager;
|
||||
private CommandPlugins commandPlugins;
|
||||
|
||||
public static ServerUtils getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
super.onEnable();
|
||||
instance = this;
|
||||
|
||||
new Metrics(this, BSTATS_METRICS_ID);
|
||||
this.plugin = new BukkitPlugin(this);
|
||||
ServerUtilsApp.init(plugin);
|
||||
|
||||
new Metrics(this, ServerUtilsApp.BSTATS_METRICS_ID);
|
||||
new BukkitReflection();
|
||||
|
||||
this.commandManager = new PaperCommandManager(this);
|
||||
commandManager.registerCommand(new CommandServerUtils());
|
||||
this.commandPlugins = null;
|
||||
|
||||
PluginProvider<Plugin> provider = plugin.getPluginProvider();
|
||||
CommandCompletions<BukkitCommandCompletionContext> completions = commandManager.getCommandCompletions();
|
||||
completions.registerAsyncCompletion("plugins", context -> getPluginNames());
|
||||
completions.registerAsyncCompletion("pluginJars", context -> getPluginFileNames());
|
||||
completions.registerAsyncCompletion("plugins", context -> provider.getPluginNames());
|
||||
completions.registerAsyncCompletion("pluginJars", context -> provider.getPluginFileNames());
|
||||
completions.registerAsyncCompletion("supportedConfigs ", context -> CommandServerUtils.getSupportedConfigs());
|
||||
completions.registerAsyncCompletion("commands", context -> {
|
||||
try {
|
||||
|
|
@ -72,24 +76,20 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
|
|||
checkForUpdates();
|
||||
}
|
||||
|
||||
public static ServerUtils getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public BukkitPlugin getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
super.onDisable();
|
||||
restoreBukkitPluginCommand();
|
||||
}
|
||||
|
||||
private List<String> getPluginNames() {
|
||||
return Arrays.stream(Bukkit.getPluginManager().getPlugins())
|
||||
.map(Plugin::getName)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private List<String> getPluginFileNames() {
|
||||
return Arrays.stream(getJars())
|
||||
.map(File::getName)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private void removeCommands(String... commands) {
|
||||
Map<String, Command> map;
|
||||
try {
|
||||
|
|
@ -118,10 +118,10 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
|
|||
restoreBukkitPluginCommand();
|
||||
}
|
||||
|
||||
new Config(copyResourceIfNotExists("config.yml", "bukkit-config.yml"));
|
||||
new Messenger(copyResourceIfNotExists("messages.yml", "bukkit-messages.yml"));
|
||||
new Config("config.yml", CONFIG_RESOURCE);
|
||||
new Messenger("messages.yml", MESSAGES_RESOURCE);
|
||||
|
||||
if (!Config.getInstance().getBoolean("settings.disable-plugins-command")) {
|
||||
if (!Config.getInstance().getConfig().getBoolean("settings.disable-plugins-command")) {
|
||||
this.removeCommands("pl", "plugins");
|
||||
this.commandPlugins = new CommandPlugins();
|
||||
commandManager.registerCommand(commandPlugins);
|
||||
|
|
@ -132,38 +132,9 @@ public class ServerUtils extends JavaPlugin implements CommandExecutor {
|
|||
return commandManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves all files with a jar extension in the plugins/ folder.
|
||||
* @return An array of jar files.
|
||||
*/
|
||||
public File[] getJars() {
|
||||
File parent = getDataFolder().getParentFile();
|
||||
if (parent == null) return new File[0];
|
||||
return parent.listFiles(f -> f.getName().endsWith(".jar"));
|
||||
}
|
||||
|
||||
private void createDataFolderIfNotExists() {
|
||||
if (!getDataFolder().exists()) {
|
||||
getDataFolder().mkdirs();
|
||||
}
|
||||
}
|
||||
|
||||
private File copyResourceIfNotExists(String targetName, String resource) {
|
||||
createDataFolderIfNotExists();
|
||||
|
||||
File file = new File(getDataFolder(), targetName);
|
||||
if (!file.exists()) {
|
||||
getLogger().info(String.format("'%s' not found, creating!", targetName));
|
||||
saveResource(resource, false);
|
||||
File copiedFile = new File(getDataFolder(), resource);
|
||||
copiedFile.renameTo(file);
|
||||
}
|
||||
return file;
|
||||
}
|
||||
|
||||
private void checkForUpdates() {
|
||||
if (Config.getInstance().getBoolean("settings.check-updates")) {
|
||||
UpdateCheckerTask.start(Bukkit.getConsoleSender(), true);
|
||||
if (Config.getInstance().getConfig().getBoolean("settings.check-updates")) {
|
||||
UpdateCheckerTask.start(BukkitUtils.wrap(Bukkit.getConsoleSender()), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,19 +6,20 @@ 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 java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import net.frankheijden.serverutils.bukkit.config.Messenger;
|
||||
import net.frankheijden.serverutils.common.utils.ListBuilder;
|
||||
import net.frankheijden.serverutils.common.utils.ListFormat;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
||||
import net.frankheijden.serverutils.bukkit.utils.BukkitUtils;
|
||||
import net.frankheijden.serverutils.common.commands.Plugins;
|
||||
import net.frankheijden.serverutils.common.config.Messenger;
|
||||
import net.frankheijden.serverutils.common.providers.PluginProvider;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
@CommandAlias("plugins|pl")
|
||||
public class CommandPlugins extends BaseCommand {
|
||||
|
||||
private static final PluginProvider<Plugin> provider = ServerUtils.getInstance().getPlugin().getPluginProvider();
|
||||
|
||||
/**
|
||||
* Sends the plugin list to the sender, without plugin version.
|
||||
* @param sender The sender of the command.
|
||||
|
|
@ -27,7 +28,7 @@ public class CommandPlugins extends BaseCommand {
|
|||
@CommandPermission("serverutils.plugins")
|
||||
@Description("Shows the plugins of this server.")
|
||||
public void onPlugins(CommandSender sender) {
|
||||
sendPlugins(sender, pl -> {
|
||||
Plugins.sendPlugins(BukkitUtils.wrap(sender), provider.getPluginsSorted(), pl -> {
|
||||
String format = "serverutils.plugins.format" + (pl.isEnabled() ? "" : "_disabled");
|
||||
return Messenger.getMessage(format, "%plugin%", pl.getName());
|
||||
});
|
||||
|
|
@ -41,30 +42,11 @@ public class CommandPlugins extends BaseCommand {
|
|||
@CommandPermission("serverutils.plugins.version")
|
||||
@Description("Shows the plugins of this server with version.")
|
||||
public void onPluginsWithVersion(CommandSender sender) {
|
||||
sendPlugins(sender, pl -> {
|
||||
Plugins.sendPlugins(BukkitUtils.wrap(sender), provider.getPluginsSorted(), pl -> {
|
||||
String format = "serverutils.plugins.format" + (pl.isEnabled() ? "" : "_disabled");
|
||||
String version = Messenger.getMessage("serverutils.plugins.version",
|
||||
"%version%", pl.getDescription().getVersion());
|
||||
return Messenger.getMessage(format, "%plugin%", pl.getName()) + version;
|
||||
});
|
||||
}
|
||||
|
||||
private static void sendPlugins(CommandSender sender, ListFormat<Plugin> pluginFormat) {
|
||||
Messenger.sendMessage(sender, "serverutils.plugins.header");
|
||||
List<Plugin> plugins = getPluginsSorted();
|
||||
String prefix = Messenger.getMessage("serverutils.plugins.prefix",
|
||||
"%count%", String.valueOf(plugins.size()));
|
||||
sender.sendMessage(Messenger.color(prefix + ListBuilder.create(plugins)
|
||||
.seperator(Messenger.getMessage("serverutils.plugins.seperator"))
|
||||
.lastSeperator(Messenger.getMessage("serverutils.plugins.last_seperator"))
|
||||
.format(pluginFormat)
|
||||
.toString()));
|
||||
Messenger.sendMessage(sender, "serverutils.plugins.footer");
|
||||
}
|
||||
|
||||
private static List<Plugin> getPluginsSorted() {
|
||||
List<Plugin> plugins = Arrays.asList(Bukkit.getPluginManager().getPlugins());
|
||||
plugins.sort(Comparator.comparing(Plugin::getName));
|
||||
return plugins;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package net.frankheijden.serverutils.bukkit.commands;
|
||||
|
||||
import static net.frankheijden.serverutils.bukkit.config.Messenger.sendMessage;
|
||||
import static net.frankheijden.serverutils.bukkit.reflection.BukkitReflection.MINOR;
|
||||
import static net.frankheijden.serverutils.bukkit.entities.BukkitReflection.MINOR;
|
||||
import static net.frankheijden.serverutils.common.config.Messenger.sendMessage;
|
||||
|
||||
import co.aikar.commands.BaseCommand;
|
||||
import co.aikar.commands.annotation.CommandAlias;
|
||||
|
|
@ -18,15 +18,17 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
||||
import net.frankheijden.serverutils.bukkit.config.Messenger;
|
||||
import net.frankheijden.serverutils.bukkit.managers.CloseableResult;
|
||||
import net.frankheijden.serverutils.bukkit.managers.LoadResult;
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitLoadResult;
|
||||
import net.frankheijden.serverutils.bukkit.managers.PluginManager;
|
||||
import net.frankheijden.serverutils.bukkit.managers.Result;
|
||||
import net.frankheijden.serverutils.bukkit.reflection.RCraftServer;
|
||||
import net.frankheijden.serverutils.bukkit.utils.FormatBuilder;
|
||||
import net.frankheijden.serverutils.bukkit.utils.ForwardFilter;
|
||||
import net.frankheijden.serverutils.bukkit.utils.BukkitUtils;
|
||||
import net.frankheijden.serverutils.bukkit.utils.ReloadHandler;
|
||||
import net.frankheijden.serverutils.common.config.Messenger;
|
||||
import net.frankheijden.serverutils.common.entities.CloseableResult;
|
||||
import net.frankheijden.serverutils.common.entities.Result;
|
||||
import net.frankheijden.serverutils.common.entities.ServerCommandSender;
|
||||
import net.frankheijden.serverutils.common.utils.FormatBuilder;
|
||||
import net.frankheijden.serverutils.common.utils.ForwardFilter;
|
||||
import net.frankheijden.serverutils.common.utils.ListBuilder;
|
||||
import net.frankheijden.serverutils.common.utils.ListFormat;
|
||||
import org.bukkit.Bukkit;
|
||||
|
|
@ -64,13 +66,14 @@ public class CommandServerUtils extends BaseCommand {
|
|||
|
||||
/**
|
||||
* Shows the help page to the sender.
|
||||
* @param sender The sender of the command.
|
||||
* @param commandSender The sender of the command.
|
||||
*/
|
||||
@Default
|
||||
@Subcommand("help")
|
||||
@CommandPermission("serverutils.help")
|
||||
@Description("Shows a help page with a few commands.")
|
||||
public void onHelp(CommandSender sender) {
|
||||
public void onHelp(CommandSender commandSender) {
|
||||
ServerCommandSender sender = BukkitUtils.wrap(commandSender);
|
||||
Messenger.sendMessage(sender, "serverutils.help.header");
|
||||
|
||||
FormatBuilder builder = FormatBuilder.create(Messenger.getMessage("serverutils.help.format"))
|
||||
|
|
@ -97,26 +100,27 @@ public class CommandServerUtils extends BaseCommand {
|
|||
@Description("Reloads the ServerUtils plugin.")
|
||||
public void onReload(CommandSender sender) {
|
||||
plugin.reload();
|
||||
sendMessage(sender, "serverutils.success",
|
||||
sendMessage(BukkitUtils.wrap(sender), "serverutils.success",
|
||||
"%action%", "reload",
|
||||
"%what%", "ServerUtils configurations");
|
||||
}
|
||||
|
||||
/**
|
||||
* Reloads a config from a set of configurations of the server.
|
||||
* @param sender The sender of the command.
|
||||
* @param commandSender The sender of the command.
|
||||
* @param config The configuration to reload.
|
||||
*/
|
||||
@Subcommand("reloadconfig")
|
||||
@CommandCompletion("@supportedConfigs")
|
||||
@CommandPermission("serverutils.reloadconfig")
|
||||
@Description("Reloads individual Server configurations.")
|
||||
public void onReloadCommands(CommandSender sender, String config) {
|
||||
public void onReloadCommands(CommandSender commandSender, String config) {
|
||||
ReloadHandler handler = supportedConfigs.get(config);
|
||||
if (handler == null) {
|
||||
this.doHelp(sender);
|
||||
this.doHelp(commandSender);
|
||||
return;
|
||||
}
|
||||
ServerCommandSender sender = BukkitUtils.wrap(commandSender);
|
||||
|
||||
String[] replacements = new String[]{ "%action%", "reload", "%what%", config };
|
||||
|
||||
|
|
@ -138,34 +142,38 @@ public class CommandServerUtils extends BaseCommand {
|
|||
|
||||
/**
|
||||
* Loads the specified plugin on the server.
|
||||
* @param sender The sender of the command.
|
||||
* @param commandSender The sender of the command.
|
||||
* @param jarFile The filename of the plugin in the plugins/ directory.
|
||||
*/
|
||||
@Subcommand("loadplugin")
|
||||
@CommandCompletion("@pluginJars")
|
||||
@CommandPermission("serverutils.loadplugin")
|
||||
@Description("Loads the specified jar file as a plugin.")
|
||||
public void onLoadPlugin(CommandSender sender, String jarFile) {
|
||||
LoadResult loadResult = PluginManager.loadPlugin(jarFile);
|
||||
public void onLoadPlugin(CommandSender commandSender, String jarFile) {
|
||||
ServerCommandSender sender = BukkitUtils.wrap(commandSender);
|
||||
|
||||
BukkitLoadResult loadResult = PluginManager.loadPlugin(jarFile);
|
||||
if (!loadResult.isSuccess()) {
|
||||
loadResult.getResult().sendTo(sender, "load", jarFile);
|
||||
return;
|
||||
}
|
||||
|
||||
Result result = PluginManager.enablePlugin(loadResult.getPlugin());
|
||||
Result result = PluginManager.enablePlugin(loadResult.get());
|
||||
result.sendTo(sender, "load", jarFile);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unloads the specified plugin from the server.
|
||||
* @param sender The sender of the command.
|
||||
* @param commandSender The sender of the command.
|
||||
* @param pluginName The plugin name.
|
||||
*/
|
||||
@Subcommand("unloadplugin")
|
||||
@CommandCompletion("@plugins")
|
||||
@CommandPermission("serverutils.unloadplugin")
|
||||
@Description("Disables and unloads the specified plugin.")
|
||||
public void onUnloadPlugin(CommandSender sender, String pluginName) {
|
||||
public void onUnloadPlugin(CommandSender commandSender, String pluginName) {
|
||||
ServerCommandSender sender = BukkitUtils.wrap(commandSender);
|
||||
|
||||
Result disableResult = PluginManager.disablePlugin(pluginName);
|
||||
if (disableResult != Result.SUCCESS && disableResult != Result.ALREADY_DISABLED) {
|
||||
disableResult.sendTo(sender, "disabl", pluginName);
|
||||
|
|
@ -188,7 +196,7 @@ public class CommandServerUtils extends BaseCommand {
|
|||
@Description("Reloads a specified plugin.")
|
||||
public void onReloadPlugin(CommandSender sender, String pluginName) {
|
||||
CloseableResult result = PluginManager.reloadPlugin(pluginName);
|
||||
result.getResult().sendTo(sender, "reload", pluginName);
|
||||
result.getResult().sendTo(BukkitUtils.wrap(sender), "reload", pluginName);
|
||||
result.tryClose();
|
||||
}
|
||||
|
||||
|
|
@ -203,7 +211,7 @@ public class CommandServerUtils extends BaseCommand {
|
|||
@Description("Enables the loaded plugin.")
|
||||
public void onEnablePlugin(CommandSender sender, String pluginName) {
|
||||
Result result = PluginManager.enablePlugin(pluginName);
|
||||
result.sendTo(sender, "enabl", pluginName);
|
||||
result.sendTo(BukkitUtils.wrap(sender), "enabl", pluginName);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -217,19 +225,21 @@ public class CommandServerUtils extends BaseCommand {
|
|||
@Description("Disables the specified plugin.")
|
||||
public void onDisablePlugin(CommandSender sender, String pluginName) {
|
||||
Result result = PluginManager.disablePlugin(pluginName);
|
||||
result.sendTo(sender, "disabl", pluginName);
|
||||
result.sendTo(BukkitUtils.wrap(sender), "disabl", pluginName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows information about the specified plugin.
|
||||
* @param sender The sender of the command.
|
||||
* @param commandSender The sender of the command.
|
||||
* @param pluginName The plugin name.
|
||||
*/
|
||||
@Subcommand("plugininfo")
|
||||
@CommandCompletion("@plugins")
|
||||
@CommandPermission("serverutils.plugininfo")
|
||||
@Description("Shows information about the specified plugin.")
|
||||
public void onPluginInfo(CommandSender sender, String pluginName) {
|
||||
public void onPluginInfo(CommandSender commandSender, String pluginName) {
|
||||
ServerCommandSender sender = BukkitUtils.wrap(commandSender);
|
||||
|
||||
Plugin plugin = Bukkit.getPluginManager().getPlugin(pluginName);
|
||||
if (plugin == null) {
|
||||
Result.NOT_EXISTS.sendTo(sender, "fetch", pluginName);
|
||||
|
|
@ -289,14 +299,16 @@ public class CommandServerUtils extends BaseCommand {
|
|||
|
||||
/**
|
||||
* Shows information about a provided command.
|
||||
* @param sender The sender of the command.
|
||||
* @param commandSender The sender of the command.
|
||||
* @param command The command to lookup.
|
||||
*/
|
||||
@Subcommand("commandinfo")
|
||||
@CommandCompletion("@commands")
|
||||
@CommandPermission("serverutils.commandinfo")
|
||||
@Description("Shows information about the specified command.")
|
||||
public void onCommandInfo(CommandSender sender, String command) {
|
||||
public void onCommandInfo(CommandSender commandSender, String command) {
|
||||
ServerCommandSender sender = BukkitUtils.wrap(commandSender);
|
||||
|
||||
Command cmd = PluginManager.getCommand(command);
|
||||
if (cmd == null) {
|
||||
Messenger.sendMessage(sender, "serverutils.commandinfo.not_exists");
|
||||
|
|
|
|||
|
|
@ -1,21 +0,0 @@
|
|||
package net.frankheijden.serverutils.bukkit.config;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class Config extends YamlResource {
|
||||
|
||||
private static Config instance;
|
||||
|
||||
public Config(File file) {
|
||||
super(file, "bukkit-config.yml");
|
||||
instance = this;
|
||||
}
|
||||
|
||||
public static Config getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public boolean getBoolean(String path) {
|
||||
return getConfiguration().getBoolean(path);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
package net.frankheijden.serverutils.bukkit.config;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class Messenger extends YamlResource {
|
||||
|
||||
private static final ServerUtils plugin = ServerUtils.getInstance();
|
||||
private static Messenger instance;
|
||||
|
||||
public Messenger(File file) {
|
||||
super(file, "bukkit-messages.yml");
|
||||
instance = this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a message from the config.
|
||||
* @param path The yml path to the message.
|
||||
* @param replacements The replacements to be taken into account.
|
||||
* @return The config message with translated placeholders.
|
||||
*/
|
||||
public static String getMessage(String path, String... replacements) {
|
||||
String message = instance.getConfiguration().getString(path);
|
||||
if (message != null) {
|
||||
return apply(message, replacements);
|
||||
} else {
|
||||
plugin.getLogger().severe("Missing locale in bukkit-messages.yml at path '" + path + "'!");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies placeholders to a message.
|
||||
* @param message The message.
|
||||
* @param replacements The replacements of the message. Expects input to be even and in a key-value like format.
|
||||
* Example: ["%player%", "Player"]
|
||||
* @return The message with translated placeholders.
|
||||
*/
|
||||
public static String apply(String message, String... replacements) {
|
||||
if (message == null || message.isEmpty()) return null;
|
||||
message = message.replace("\\n", "\n");
|
||||
for (int i = 0; i < replacements.length; i++, i++) {
|
||||
message = message.replace(replacements[i], replacements[i + 1]);
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a message to a player with translated placeholders.
|
||||
* @param sender The receiver.
|
||||
* @param msg The message to be sent.
|
||||
* @param replacements The replacements to be taken into account.
|
||||
*/
|
||||
public static void sendRawMessage(CommandSender sender, String msg, String... replacements) {
|
||||
String message = apply(msg, replacements);
|
||||
if (message != null) {
|
||||
sender.sendMessage(color(message));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a message from the specified config path to a player with translated placeholders.
|
||||
* @param sender The receiver.
|
||||
* @param path The yml path to the message.
|
||||
* @param replacements The replacements to be taken into account.
|
||||
*/
|
||||
public static void sendMessage(CommandSender sender, String path, String... replacements) {
|
||||
String message = getMessage(path, replacements);
|
||||
if (message != null) {
|
||||
sender.sendMessage(color(message));
|
||||
}
|
||||
}
|
||||
|
||||
public static String color(String str) {
|
||||
return ChatColor.translateAlternateColorCodes('&', str);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
package net.frankheijden.serverutils.bukkit.config;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
||||
import net.frankheijden.serverutils.bukkit.utils.YamlUtils;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
public abstract class YamlResource {
|
||||
|
||||
private static final ServerUtils plugin = ServerUtils.getInstance();
|
||||
|
||||
private final YamlConfiguration configuration;
|
||||
|
||||
/**
|
||||
* Creates a new YamlResource instance.
|
||||
* Loads the resource from the jar file.
|
||||
* @param file The destination file.
|
||||
* @param resource The resource from the jar file.
|
||||
*/
|
||||
public YamlResource(File file, String resource) {
|
||||
InputStream is = plugin.getResource(resource);
|
||||
YamlConfiguration def = YamlConfiguration.loadConfiguration(new InputStreamReader(is));
|
||||
configuration = YamlUtils.init(file, def);
|
||||
}
|
||||
|
||||
public YamlConfiguration getConfiguration() {
|
||||
return configuration;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package net.frankheijden.serverutils.bukkit.entities;
|
||||
|
||||
import net.frankheijden.serverutils.common.entities.ServerCommandSender;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class BukkitCommandSender implements ServerCommandSender {
|
||||
|
||||
private final CommandSender sender;
|
||||
|
||||
public BukkitCommandSender(CommandSender sender) {
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(String message) {
|
||||
sender.sendMessage(message);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package net.frankheijden.serverutils.bukkit.entities;
|
||||
|
||||
import net.frankheijden.serverutils.common.entities.LoadResult;
|
||||
import net.frankheijden.serverutils.common.entities.Result;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public class BukkitLoadResult extends LoadResult<Plugin> {
|
||||
|
||||
private BukkitLoadResult(Plugin obj, Result result) {
|
||||
super(obj, result);
|
||||
}
|
||||
|
||||
public BukkitLoadResult(Plugin obj) {
|
||||
this(obj, Result.SUCCESS);
|
||||
}
|
||||
|
||||
public BukkitLoadResult(Result result) {
|
||||
this(null, result);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
package net.frankheijden.serverutils.bukkit.entities;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.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.common.entities.ServerUtilsPlugin;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public class BukkitPlugin extends ServerUtilsPlugin {
|
||||
|
||||
private final ServerUtils plugin;
|
||||
private final PluginProvider<Plugin> pluginProvider;
|
||||
private final ResourceProvider resourceProvider;
|
||||
private final ColorProvider colorProvider;
|
||||
|
||||
/**
|
||||
* Creates a new BukkitPlugin instance of ServerUtils.
|
||||
* @param plugin The ServerUtils plugin.
|
||||
*/
|
||||
public BukkitPlugin(ServerUtils plugin) {
|
||||
this.plugin = plugin;
|
||||
this.pluginProvider = new BukkitPluginProvider(plugin);
|
||||
this.resourceProvider = new BukkitResourceProvider(plugin);
|
||||
this.colorProvider = new BukkitColorProvider();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public PluginProvider<Plugin> getPluginProvider() {
|
||||
return pluginProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceProvider getResourceProvider() {
|
||||
return resourceProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ColorProvider getColorProvider() {
|
||||
return colorProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Logger getLogger() {
|
||||
return plugin.getLogger();
|
||||
}
|
||||
|
||||
@Override
|
||||
public File getDataFolder() {
|
||||
return plugin.getDataFolder();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
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();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package net.frankheijden.serverutils.bukkit.reflection;
|
||||
package net.frankheijden.serverutils.bukkit.entities;
|
||||
|
||||
import net.frankheijden.serverutils.common.reflection.ReflectionUtils;
|
||||
import net.frankheijden.serverutils.common.reflection.VersionParam;
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package net.frankheijden.serverutils.bukkit.entities;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
||||
import net.frankheijden.serverutils.common.providers.ResourceProvider;
|
||||
import net.frankheijden.serverutils.common.config.YamlConfig;
|
||||
|
||||
public class BukkitResourceProvider implements ResourceProvider {
|
||||
|
||||
private final ServerUtils plugin;
|
||||
|
||||
public BukkitResourceProvider(ServerUtils plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getResource(String resource) {
|
||||
return plugin.getResource(resource);
|
||||
}
|
||||
|
||||
@Override
|
||||
public YamlConfig load(InputStream is) {
|
||||
return new BukkitYamlConfig(is);
|
||||
}
|
||||
|
||||
@Override
|
||||
public YamlConfig load(File file) {
|
||||
return new BukkitYamlConfig(file);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
package net.frankheijden.serverutils.bukkit.entities;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.Collection;
|
||||
|
||||
import net.frankheijden.serverutils.common.config.YamlConfig;
|
||||
import org.bukkit.configuration.MemorySection;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
public class BukkitYamlConfig implements YamlConfig {
|
||||
|
||||
private final MemorySection config;
|
||||
private File file = null;
|
||||
|
||||
public BukkitYamlConfig(File file) {
|
||||
this.config = YamlConfiguration.loadConfiguration(file);
|
||||
this.file = file;
|
||||
}
|
||||
|
||||
public BukkitYamlConfig(InputStream in) {
|
||||
this.config = YamlConfiguration.loadConfiguration(new InputStreamReader(in));
|
||||
}
|
||||
|
||||
public BukkitYamlConfig(MemorySection section) {
|
||||
this.config = section;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object get(String path) {
|
||||
Object obj = config.get(path);
|
||||
if (obj instanceof MemorySection) {
|
||||
return new BukkitYamlConfig((MemorySection) obj);
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(String path, Object value) {
|
||||
config.set(path, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getString(String path) {
|
||||
return config.getString(path);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getBoolean(String path) {
|
||||
return config.getBoolean(path);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<? extends String> getKeys() {
|
||||
return config.getKeys(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save() throws IOException {
|
||||
if (!(config instanceof YamlConfiguration)) throw new IllegalArgumentException("Not a YamlConfiguration!");
|
||||
YamlConfiguration yml = (YamlConfiguration) config;
|
||||
yml.save(file);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,9 @@
|
|||
package net.frankheijden.serverutils.bukkit.listeners;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.config.Config;
|
||||
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;
|
||||
|
|
@ -10,7 +12,7 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
|||
|
||||
public class MainListener implements Listener {
|
||||
|
||||
private static final Config config = Config.getInstance();
|
||||
private static final YamlConfig config = Config.getInstance().getConfig();
|
||||
|
||||
/**
|
||||
* Called when a player joins the server.
|
||||
|
|
@ -23,7 +25,7 @@ public class MainListener implements Listener {
|
|||
|
||||
Player player = event.getPlayer();
|
||||
if (player.hasPermission("serverutils.notification.update")) {
|
||||
UpdateCheckerTask.start(player);
|
||||
UpdateCheckerTask.start(BukkitUtils.wrap(player));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,56 +0,0 @@
|
|||
package net.frankheijden.serverutils.bukkit.managers;
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
|
||||
public class CloseableResult implements Closeable {
|
||||
|
||||
private Result result;
|
||||
private final Closeable closeable;
|
||||
|
||||
/**
|
||||
* Constructs a new closable result.
|
||||
* Used for unloading / reloading a plugin.
|
||||
* NB: The closable needs to be closed to fully ensure that the old plugin doesn't work anymore!
|
||||
* @param result The result of the procedure
|
||||
* @param closeable The closable of the procedure.
|
||||
*/
|
||||
public CloseableResult(Result result, Closeable closeable) {
|
||||
this.result = result;
|
||||
this.closeable = closeable;
|
||||
}
|
||||
|
||||
public CloseableResult(Result result) {
|
||||
this(result, null);
|
||||
}
|
||||
|
||||
public CloseableResult(Closeable closeable) {
|
||||
this(Result.SUCCESS, closeable);
|
||||
}
|
||||
|
||||
public Result getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public CloseableResult set(Result result) {
|
||||
this.result = result;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to close the closable, essentially wrapping it with try-catch.
|
||||
*/
|
||||
public void tryClose() {
|
||||
if (closeable == null) return;
|
||||
try {
|
||||
close();
|
||||
} catch (IOException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws IOException {
|
||||
closeable.close();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
package net.frankheijden.serverutils.bukkit.managers;
|
||||
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public class LoadResult {
|
||||
private final Plugin plugin;
|
||||
private final Result result;
|
||||
|
||||
private LoadResult(Plugin plugin, Result result) {
|
||||
this.plugin = plugin;
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
public LoadResult(Plugin plugin) {
|
||||
this(plugin, Result.SUCCESS);
|
||||
}
|
||||
|
||||
public LoadResult(Result result) {
|
||||
this(null, result);
|
||||
}
|
||||
|
||||
public Result getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public Plugin getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
public boolean isSuccess() {
|
||||
return plugin != null && result == Result.SUCCESS;
|
||||
}
|
||||
}
|
||||
|
|
@ -7,12 +7,15 @@ import java.util.regex.Matcher;
|
|||
import java.util.regex.Pattern;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitLoadResult;
|
||||
import net.frankheijden.serverutils.bukkit.reflection.RCommandMap;
|
||||
import net.frankheijden.serverutils.bukkit.reflection.RCraftServer;
|
||||
import net.frankheijden.serverutils.bukkit.reflection.RCraftingManager;
|
||||
import net.frankheijden.serverutils.bukkit.reflection.RJavaPlugin;
|
||||
import net.frankheijden.serverutils.bukkit.reflection.RPluginClassLoader;
|
||||
import net.frankheijden.serverutils.bukkit.reflection.RSimplePluginManager;
|
||||
import net.frankheijden.serverutils.common.entities.CloseableResult;
|
||||
import net.frankheijden.serverutils.common.entities.Result;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.PluginCommand;
|
||||
|
|
@ -30,7 +33,7 @@ public class PluginManager {
|
|||
* @param jarFile The name of the file in the plugins/ folder.
|
||||
* @return The result of the loading procedure.
|
||||
*/
|
||||
public static LoadResult loadPlugin(String jarFile) {
|
||||
public static BukkitLoadResult loadPlugin(String jarFile) {
|
||||
return loadPlugin(new File(ServerUtils.getInstance().getDataFolder().getParent(), jarFile));
|
||||
}
|
||||
|
||||
|
|
@ -39,33 +42,33 @@ public class PluginManager {
|
|||
* @param file The file to be loaded.
|
||||
* @return The result of the loading procedure.
|
||||
*/
|
||||
public static LoadResult loadPlugin(File file) {
|
||||
if (!file.exists()) return new LoadResult(Result.NOT_EXISTS);
|
||||
public static BukkitLoadResult loadPlugin(File file) {
|
||||
if (!file.exists()) return new BukkitLoadResult(Result.NOT_EXISTS);
|
||||
|
||||
Plugin loadedPlugin = getLoadedPlugin(file);
|
||||
if (loadedPlugin != null) return new LoadResult(Result.ALREADY_LOADED);
|
||||
if (loadedPlugin != null) return new BukkitLoadResult(Result.ALREADY_LOADED);
|
||||
|
||||
Plugin plugin;
|
||||
try {
|
||||
plugin = Bukkit.getPluginManager().loadPlugin(file);
|
||||
} catch (InvalidDescriptionException ex) {
|
||||
return new LoadResult(Result.INVALID_DESCRIPTION);
|
||||
return new BukkitLoadResult(Result.INVALID_DESCRIPTION);
|
||||
} catch (UnknownDependencyException ex) {
|
||||
return new LoadResult(Result.UNKNOWN_DEPENDENCY.arg(ex.getMessage()));
|
||||
return new BukkitLoadResult(Result.UNKNOWN_DEPENDENCY.arg(ex.getMessage()));
|
||||
} catch (InvalidPluginException ex) {
|
||||
if (ex.getCause() instanceof IllegalArgumentException) {
|
||||
IllegalArgumentException e = (IllegalArgumentException) ex.getCause();
|
||||
if (e.getMessage().equalsIgnoreCase("Plugin already initialized!")) {
|
||||
return new LoadResult(Result.ALREADY_ENABLED);
|
||||
return new BukkitLoadResult(Result.ALREADY_ENABLED);
|
||||
}
|
||||
}
|
||||
ex.printStackTrace();
|
||||
return new LoadResult(Result.ERROR);
|
||||
return new BukkitLoadResult(Result.ERROR);
|
||||
}
|
||||
|
||||
if (plugin == null) return new LoadResult(Result.INVALID_PLUGIN);
|
||||
if (plugin == null) return new BukkitLoadResult(Result.INVALID_PLUGIN);
|
||||
plugin.onLoad();
|
||||
return new LoadResult(plugin);
|
||||
return new BukkitLoadResult(plugin);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -176,9 +179,9 @@ public class PluginManager {
|
|||
File pluginFile = getPluginFile(plugin.getName());
|
||||
if (pluginFile == null) return result.set(Result.FILE_DELETED);
|
||||
|
||||
LoadResult loadResult = loadPlugin(pluginFile);
|
||||
BukkitLoadResult loadResult = loadPlugin(pluginFile);
|
||||
if (!loadResult.isSuccess()) return result.set(loadResult.getResult());
|
||||
return result.set(enablePlugin(loadResult.getPlugin()));
|
||||
return result.set(enablePlugin(loadResult.get()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -291,7 +294,7 @@ public class PluginManager {
|
|||
* @return The file, or null if invalid or not found.
|
||||
*/
|
||||
public static File getPluginFile(String pluginName) {
|
||||
for (File file : ServerUtils.getInstance().getJars()) {
|
||||
for (File file : ServerUtils.getInstance().getPlugin().getPluginProvider().getPluginJars()) {
|
||||
PluginDescriptionFile descriptionFile;
|
||||
try {
|
||||
descriptionFile = getPluginDescription(file);
|
||||
|
|
|
|||
|
|
@ -1,43 +0,0 @@
|
|||
package net.frankheijden.serverutils.bukkit.managers;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.config.Messenger;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public enum Result {
|
||||
NOT_EXISTS,
|
||||
NOT_ENABLED,
|
||||
ALREADY_LOADED,
|
||||
ALREADY_ENABLED,
|
||||
ALREADY_DISABLED,
|
||||
FILE_DELETED,
|
||||
INVALID_DESCRIPTION,
|
||||
INVALID_PLUGIN,
|
||||
UNKNOWN_DEPENDENCY,
|
||||
ERROR,
|
||||
SUCCESS;
|
||||
|
||||
private String arg;
|
||||
|
||||
Result() {
|
||||
this.arg = "";
|
||||
}
|
||||
|
||||
public Result arg(String arg) {
|
||||
this.arg = arg;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the associated message of the result
|
||||
* and sends it to a CommandSender.
|
||||
* @param sender The receiver.
|
||||
* @param action The action which let to the result.
|
||||
* @param what An associated variable.
|
||||
*/
|
||||
public void sendTo(CommandSender sender, String action, String what) {
|
||||
Messenger.sendMessage(sender, "serverutils." + this.name().toLowerCase(),
|
||||
"%action%", action,
|
||||
"%what%", what,
|
||||
"%arg%", arg);
|
||||
}
|
||||
}
|
||||
|
|
@ -20,6 +20,7 @@ import java.lang.reflect.InvocationTargetException;
|
|||
import java.lang.reflect.Method;
|
||||
import java.util.Map;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Warning;
|
||||
import org.bukkit.command.Command;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package net.frankheijden.serverutils.bukkit.reflection;
|
||||
|
||||
import static net.frankheijden.serverutils.bukkit.reflection.BukkitReflection.MINOR;
|
||||
import static net.frankheijden.serverutils.bukkit.entities.BukkitReflection.MINOR;
|
||||
import static net.frankheijden.serverutils.common.reflection.FieldParam.fieldOf;
|
||||
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.get;
|
||||
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllFields;
|
||||
|
|
@ -14,6 +14,7 @@ import java.util.Map;
|
|||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||
import net.frankheijden.serverutils.common.utils.MapUtils;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package net.frankheijden.serverutils.bukkit.reflection;
|
||||
|
||||
import static net.frankheijden.serverutils.bukkit.reflection.BukkitReflection.MINOR;
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||
|
||||
import static net.frankheijden.serverutils.bukkit.entities.BukkitReflection.MINOR;
|
||||
import static net.frankheijden.serverutils.common.reflection.FieldParam.fieldOf;
|
||||
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
|
||||
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.get;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package net.frankheijden.serverutils.bukkit.reflection;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||
|
||||
import static net.frankheijden.serverutils.common.reflection.FieldParam.fieldOf;
|
||||
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllFields;
|
||||
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package net.frankheijden.serverutils.bukkit.reflection;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||
|
||||
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
|
||||
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
|
||||
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package net.frankheijden.serverutils.bukkit.reflection;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||
|
||||
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
|
||||
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
|
||||
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.invoke;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package net.frankheijden.serverutils.bukkit.reflection;
|
||||
|
||||
import static net.frankheijden.serverutils.bukkit.reflection.BukkitReflection.MINOR;
|
||||
import static net.frankheijden.serverutils.bukkit.entities.BukkitReflection.MINOR;
|
||||
import static net.frankheijden.serverutils.common.reflection.FieldParam.fieldOf;
|
||||
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.get;
|
||||
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllFields;
|
||||
|
|
@ -13,6 +13,7 @@ import java.util.Map;
|
|||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public class RMinecraftKey {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package net.frankheijden.serverutils.bukkit.reflection;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||
|
||||
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
|
||||
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
|
||||
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package net.frankheijden.serverutils.bukkit.reflection;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||
|
||||
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
|
||||
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
|
||||
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package net.frankheijden.serverutils.bukkit.reflection;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||
|
||||
import static net.frankheijden.serverutils.common.reflection.MethodParam.methodOf;
|
||||
import static net.frankheijden.serverutils.common.reflection.ReflectionUtils.getAllMethods;
|
||||
import static net.frankheijden.serverutils.common.reflection.VersionParam.ALL_VERSIONS;
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import java.lang.reflect.Field;
|
|||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||
import net.frankheijden.serverutils.common.utils.MapUtils;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import java.lang.reflect.Field;
|
|||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitReflection;
|
||||
import net.frankheijden.serverutils.common.utils.MapUtils;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
|
|
|||
|
|
@ -14,22 +14,24 @@ import java.net.UnknownHostException;
|
|||
import java.util.logging.Level;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.ServerUtils;
|
||||
import net.frankheijden.serverutils.bukkit.config.Config;
|
||||
import net.frankheijden.serverutils.bukkit.config.Messenger;
|
||||
import net.frankheijden.serverutils.bukkit.managers.CloseableResult;
|
||||
import net.frankheijden.serverutils.bukkit.managers.PluginManager;
|
||||
import net.frankheijden.serverutils.bukkit.managers.VersionManager;
|
||||
import net.frankheijden.serverutils.common.config.Config;
|
||||
import net.frankheijden.serverutils.common.config.Messenger;
|
||||
import net.frankheijden.serverutils.common.config.YamlConfig;
|
||||
import net.frankheijden.serverutils.common.entities.CloseableResult;
|
||||
import net.frankheijden.serverutils.common.entities.ServerCommandSender;
|
||||
import net.frankheijden.serverutils.common.utils.FileUtils;
|
||||
import net.frankheijden.serverutils.common.utils.VersionUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class UpdateCheckerTask implements Runnable {
|
||||
|
||||
private static final ServerUtils plugin = ServerUtils.getInstance();
|
||||
private static final YamlConfig config = Config.getInstance().getConfig();
|
||||
private static final VersionManager versionManager = VersionManager.getInstance();
|
||||
private final CommandSender sender;
|
||||
private final ServerCommandSender sender;
|
||||
private final String currentVersion;
|
||||
private final boolean startup;
|
||||
|
||||
|
|
@ -47,17 +49,17 @@ public class UpdateCheckerTask implements Runnable {
|
|||
private static final String DOWNLOADED_RESTART = "Downloaded ServerUtils version v%s. Restarting plugin now...";
|
||||
private static final String UP_TO_DATE = "We are up-to-date!";
|
||||
|
||||
private UpdateCheckerTask(CommandSender sender, boolean startup) {
|
||||
private UpdateCheckerTask(ServerCommandSender sender, boolean startup) {
|
||||
this.sender = sender;
|
||||
this.currentVersion = plugin.getDescription().getVersion();
|
||||
this.startup = startup;
|
||||
}
|
||||
|
||||
public static void start(CommandSender sender) {
|
||||
public static void start(ServerCommandSender sender) {
|
||||
start(sender, false);
|
||||
}
|
||||
|
||||
public static void start(CommandSender sender, boolean startup) {
|
||||
public static void start(ServerCommandSender sender, boolean startup) {
|
||||
UpdateCheckerTask task = new UpdateCheckerTask(sender, startup);
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, task);
|
||||
}
|
||||
|
|
@ -143,8 +145,8 @@ public class UpdateCheckerTask implements Runnable {
|
|||
}
|
||||
|
||||
private boolean canDownloadPlugin() {
|
||||
if (isStartupCheck()) return Config.getInstance().getBoolean("settings.download-at-startup-and-update");
|
||||
return Config.getInstance().getBoolean("settings.download-updates");
|
||||
if (isStartupCheck()) return config.getBoolean("settings.download-at-startup-and-update");
|
||||
return config.getBoolean("settings.download-updates");
|
||||
}
|
||||
|
||||
private void downloadPlugin(String githubVersion, String downloadLink) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
package net.frankheijden.serverutils.bukkit.utils;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.entities.BukkitCommandSender;
|
||||
import net.frankheijden.serverutils.common.entities.ServerCommandSender;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class BukkitUtils {
|
||||
|
||||
public static ServerCommandSender wrap(CommandSender sender) {
|
||||
return new BukkitCommandSender(sender);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
package net.frankheijden.serverutils.bukkit.utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.frankheijden.serverutils.bukkit.config.Messenger;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class FormatBuilder {
|
||||
|
||||
private final String format;
|
||||
private final List<String[]> valueList;
|
||||
private String[] orderedKeys;
|
||||
private boolean alwaysSend;
|
||||
|
||||
private FormatBuilder(String format) {
|
||||
this.format = format;
|
||||
this.valueList = new ArrayList<>();
|
||||
this.orderedKeys = new String[0];
|
||||
this.alwaysSend = false;
|
||||
}
|
||||
|
||||
public static FormatBuilder create(String format) {
|
||||
return new FormatBuilder(format);
|
||||
}
|
||||
|
||||
public FormatBuilder orderedKeys(String... orderedKeys) {
|
||||
this.orderedKeys = orderedKeys;
|
||||
return this;
|
||||
}
|
||||
|
||||
public FormatBuilder add(String... values) {
|
||||
this.valueList.add(values);
|
||||
return this;
|
||||
}
|
||||
|
||||
public FormatBuilder alwaysSend(boolean alwaysSend) {
|
||||
this.alwaysSend = alwaysSend;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds the format and sends it to the CommandSender.
|
||||
* @param sender The receiver of the list.
|
||||
*/
|
||||
public void sendTo(CommandSender sender) {
|
||||
valueList.forEach(values -> {
|
||||
int length = Math.min(values.length, orderedKeys.length);
|
||||
String message = format;
|
||||
for (int i = 0; i < length; i++) {
|
||||
String value = values[i];
|
||||
if ((value == null || value.isEmpty()) && !alwaysSend) return;
|
||||
message = message.replace(orderedKeys[i], String.valueOf(value));
|
||||
}
|
||||
Messenger.sendRawMessage(sender, message);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
package net.frankheijden.serverutils.bukkit.utils;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.LogRecord;
|
||||
|
||||
import net.frankheijden.serverutils.common.utils.PredicateFilter;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class ForwardFilter extends PredicateFilter {
|
||||
|
||||
private boolean warnings;
|
||||
|
||||
/**
|
||||
* Creates a filter which forwards all output to the sender.
|
||||
* @param sender The sender to forward logs to.
|
||||
*/
|
||||
public ForwardFilter(CommandSender sender) {
|
||||
this.warnings = false;
|
||||
|
||||
setPredicate(rec -> {
|
||||
ChatColor color = getColor(rec.getLevel());
|
||||
if (color != ChatColor.GREEN) warnings = true;
|
||||
sender.sendMessage(color + format(rec));
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
public boolean hasWarnings() {
|
||||
return warnings;
|
||||
}
|
||||
|
||||
private static ChatColor getColor(Level level) {
|
||||
if (Level.SEVERE.equals(level)) {
|
||||
return ChatColor.RED;
|
||||
} else if (Level.WARNING.equals(level)) {
|
||||
return ChatColor.GOLD;
|
||||
}
|
||||
return ChatColor.GREEN;
|
||||
}
|
||||
|
||||
private static String format(LogRecord record) {
|
||||
String msg = record.getMessage();
|
||||
|
||||
Object[] params = record.getParameters();
|
||||
if (params == null) return msg;
|
||||
for (int i = 0; i < params.length; i++) {
|
||||
msg = msg.replace("{" + i + "}", String.valueOf(params[i]));
|
||||
}
|
||||
return msg;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
package net.frankheijden.serverutils.bukkit.utils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.bukkit.configuration.MemorySection;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
public class YamlUtils {
|
||||
|
||||
public static void addDefaults(MemorySection defaults, YamlConfiguration yml) {
|
||||
addDefaults(defaults, yml, "");
|
||||
}
|
||||
|
||||
private static void addDefaults(MemorySection defaults, YamlConfiguration yml, String root) {
|
||||
if (defaults == null) return;
|
||||
for (String key : defaults.getKeys(false)) {
|
||||
String newKey = (root.isEmpty() ? "" : root + ".") + key;
|
||||
Object value = defaults.get(key);
|
||||
if (value instanceof MemorySection) {
|
||||
addDefaults((MemorySection) value, yml, newKey);
|
||||
} else if (yml.get(newKey) == null) {
|
||||
yml.set(newKey, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initiates a YamlConfiguration from a file with associated defaults.
|
||||
* @param file The yml file.
|
||||
* @param def The default YamlConfiguration to be applied.
|
||||
* @return The loaded YamlConfiguration of the file with defaults.
|
||||
*/
|
||||
public static YamlConfiguration init(File file, YamlConfiguration def) {
|
||||
YamlConfiguration yml = YamlConfiguration.loadConfiguration(file);
|
||||
YamlUtils.addDefaults(def, yml);
|
||||
|
||||
try {
|
||||
// Idk somehow the order messes up
|
||||
// of the messages if we don't do this
|
||||
file.delete();
|
||||
file.createNewFile();
|
||||
|
||||
yml.save(file);
|
||||
} catch (IOException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
return yml;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue