mirror of
				https://e.coding.net/circlecloud/Yum.git
				synced 2025-11-04 13:16:02 +00:00 
			
		
		
		
	add autoupdate and plugin add des...
This commit is contained in:
		@@ -24,20 +24,21 @@ public class Yum extends JavaPlugin {
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void onEnable() {
 | 
			
		||||
		CommandHandler cmdhandler = new CommandHandler(this);
 | 
			
		||||
		this.getCommand("yum").setExecutor(cmdhandler);
 | 
			
		||||
		this.getCommand("yum").setTabCompleter(cmdhandler);
 | 
			
		||||
		plugman = new PluginsManager(this);
 | 
			
		||||
		download = new DownloadManager(this);
 | 
			
		||||
		repo = new RepositoryManager(this);
 | 
			
		||||
		config = new FileConfig(this, "config.yml");
 | 
			
		||||
		repo.jsonToCache(config.getString("cache"));
 | 
			
		||||
		CommandHandler cmdhandler = new CommandHandler(this);
 | 
			
		||||
		this.getCommand("yum").setExecutor(cmdhandler);
 | 
			
		||||
		this.getCommand("yum").setTabCompleter(cmdhandler);
 | 
			
		||||
		this.getPluginLoader();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void onDisable() {
 | 
			
		||||
		config.set("cache", repo.cacheToJson());
 | 
			
		||||
		if (config != null)
 | 
			
		||||
			config.set("cache", repo.cacheToJson());
 | 
			
		||||
		config.save();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@
 | 
			
		||||
package cn.citycraft.Yum.commands;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@@ -34,7 +35,7 @@ public class CommandHandler implements CommandExecutor, TabCompleter {
 | 
			
		||||
	 */
 | 
			
		||||
	public static String[] moveStrings(String[] args, int start) {
 | 
			
		||||
		String[] ret = new String[args.length - start];
 | 
			
		||||
		System.arraycopy(args, args.length - start, ret, 0, ret.length);
 | 
			
		||||
		System.arraycopy(args, start, ret, 0, ret.length);
 | 
			
		||||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -128,7 +129,17 @@ public class CommandHandler implements CommandExecutor, TabCompleter {
 | 
			
		||||
			}
 | 
			
		||||
			if (args.length == 2) {
 | 
			
		||||
				String partialPlugin = args[1];
 | 
			
		||||
				List<String> plugins = main.plugman.getPluginNames(false);
 | 
			
		||||
				List<String> plugins = null;
 | 
			
		||||
				if (args[0].equalsIgnoreCase("install"))
 | 
			
		||||
					plugins = main.repo.getAllPluginName();
 | 
			
		||||
				else if (args[0].equalsIgnoreCase("repo"))
 | 
			
		||||
					plugins = Arrays.asList(new String[] {
 | 
			
		||||
							"add",
 | 
			
		||||
							"list",
 | 
			
		||||
							"clean"
 | 
			
		||||
					});
 | 
			
		||||
				else
 | 
			
		||||
					plugins = main.plugman.getPluginNames(false);
 | 
			
		||||
				StringUtil.copyPartialMatches(partialPlugin, plugins, completions);
 | 
			
		||||
			}
 | 
			
		||||
			Collections.sort(completions);
 | 
			
		||||
 
 | 
			
		||||
@@ -30,10 +30,10 @@ public class CommandLoad extends BaseCommand {
 | 
			
		||||
	public void execute(CommandSender sender, String label, String[] args) throws CommandException {
 | 
			
		||||
		String pluginname = args[0];
 | 
			
		||||
		Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
 | 
			
		||||
		if (plugin != null) {
 | 
			
		||||
		if (plugin == null) {
 | 
			
		||||
			main.plugman.load(sender, pluginname);
 | 
			
		||||
		} else {
 | 
			
		||||
			sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
 | 
			
		||||
			sender.sendMessage("§c错误: 插件 " + pluginname + " 已加载到服务器!");
 | 
			
		||||
		}
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -34,12 +34,15 @@ public class CommandRepo extends BaseCommand {
 | 
			
		||||
				main.repo.addRepositories(args[1]);
 | 
			
		||||
			}
 | 
			
		||||
			sender.sendMessage("§6仓库: §a插件信息已缓存!");
 | 
			
		||||
			break;
 | 
			
		||||
		case "list":
 | 
			
		||||
			sender.sendMessage("§6仓库: §b缓存的插件信息如下 ");
 | 
			
		||||
			StringUtil.sendStringArray(sender, main.repo.getAllPluginString());
 | 
			
		||||
			break;
 | 
			
		||||
		case "clean":
 | 
			
		||||
			main.repo.clean();
 | 
			
		||||
			sender.sendMessage("§6仓库: §a缓存的插件信息已清理!");
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,34 @@
 | 
			
		||||
package cn.citycraft.Yum.manager;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
import org.bukkit.plugin.Plugin;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 自动更新类
 | 
			
		||||
 * 
 | 
			
		||||
 * @author 蒋天蓓
 | 
			
		||||
 *         2015年9月1日上午10:59:47
 | 
			
		||||
 */
 | 
			
		||||
public class AutoUpdateManager {
 | 
			
		||||
	Plugin plugin;
 | 
			
		||||
	DownloadManager download;
 | 
			
		||||
	PluginsManager plugman;
 | 
			
		||||
 | 
			
		||||
	public AutoUpdateManager(Plugin plugin) {
 | 
			
		||||
		this.plugin = plugin;
 | 
			
		||||
		plugman = new PluginsManager(plugin);
 | 
			
		||||
		download = new DownloadManager(plugin);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public boolean run(CommandSender sender) {
 | 
			
		||||
		if (download.run(sender, "下载地址", plugman.getPluginFile(plugin))) {
 | 
			
		||||
			plugman.reload(sender, plugin);
 | 
			
		||||
		}
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public boolean run() {
 | 
			
		||||
		return run(Bukkit.getConsoleSender());
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,3 @@
 | 
			
		||||
/**
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
package cn.citycraft.Yum.manager;
 | 
			
		||||
 | 
			
		||||
import java.io.BufferedInputStream;
 | 
			
		||||
@@ -99,9 +96,8 @@ public class DownloadManager {
 | 
			
		||||
	 * @return 是否成功
 | 
			
		||||
	 */
 | 
			
		||||
	public boolean run(CommandSender sender, String urlstring, File file) {
 | 
			
		||||
		URL url;
 | 
			
		||||
		try {
 | 
			
		||||
			url = new URL(urlstring);
 | 
			
		||||
			URL url = new URL(urlstring);
 | 
			
		||||
			return run(sender, url, file);
 | 
			
		||||
		} catch (MalformedURLException e) {
 | 
			
		||||
			sender.sendMessage("§4错误: §c无法识别的URL地址...");
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,3 @@
 | 
			
		||||
/**
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
package cn.citycraft.Yum.manager;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
@@ -30,7 +27,6 @@ import org.bukkit.plugin.PluginManager;
 | 
			
		||||
import org.bukkit.plugin.RegisteredListener;
 | 
			
		||||
import org.bukkit.plugin.UnknownDependencyException;
 | 
			
		||||
 | 
			
		||||
import cn.citycraft.Yum.Yum;
 | 
			
		||||
import cn.citycraft.Yum.utils.StringUtil;
 | 
			
		||||
 | 
			
		||||
import com.google.common.base.Joiner;
 | 
			
		||||
@@ -41,10 +37,10 @@ import com.google.common.base.Joiner;
 | 
			
		||||
 * @author 蒋天蓓 2015年8月21日下午7:03:26
 | 
			
		||||
 */
 | 
			
		||||
public class PluginsManager {
 | 
			
		||||
	Yum main;
 | 
			
		||||
	Plugin main;
 | 
			
		||||
 | 
			
		||||
	public PluginsManager(Yum yum) {
 | 
			
		||||
		this.main = yum;
 | 
			
		||||
	public PluginsManager(Plugin plugin) {
 | 
			
		||||
		this.main = plugin;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
@@ -272,26 +268,23 @@ public class PluginsManager {
 | 
			
		||||
	 */
 | 
			
		||||
	public boolean load(CommandSender sender, String name) {
 | 
			
		||||
		Plugin target = null;
 | 
			
		||||
 | 
			
		||||
		String filename = null;
 | 
			
		||||
		if (sender == null) {
 | 
			
		||||
			sender = Bukkit.getConsoleSender();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (!name.endsWith(".jar")) {
 | 
			
		||||
			name = name + ".jar";
 | 
			
		||||
			filename = name + ".jar";
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		File pluginDir = new File("plugins");
 | 
			
		||||
		File updateDir = new File(pluginDir, "update");
 | 
			
		||||
 | 
			
		||||
		if (!pluginDir.isDirectory()) {
 | 
			
		||||
			sender.sendMessage("§c插件目录不存在或IO错误!");
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		File pluginFile = new File(pluginDir, name);
 | 
			
		||||
		File pluginFile = new File(pluginDir, filename);
 | 
			
		||||
 | 
			
		||||
		if (!pluginFile.isFile() && !new File(updateDir, name).isFile()) {
 | 
			
		||||
		if (!pluginFile.isFile() && !new File(updateDir, filename).isFile()) {
 | 
			
		||||
			pluginFile = null;
 | 
			
		||||
			for (File file : pluginDir.listFiles()) {
 | 
			
		||||
				if (file.getName().endsWith(".jar")) {
 | 
			
		||||
@@ -306,7 +299,7 @@ public class PluginsManager {
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if (pluginFile == null) {
 | 
			
		||||
				sender.sendMessage("§c在插件目录和更新目录均未找到 " + name + " 插件 请确认文件是否存在!");
 | 
			
		||||
				sender.sendMessage("§6载入: §c在插件目录和更新目录均未找到 " + name + " 插件 请确认文件是否存在!");
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
@@ -448,13 +441,12 @@ public class PluginsManager {
 | 
			
		||||
				if (commandMap != null) {
 | 
			
		||||
					for (Iterator<Map.Entry<String, Command>> it = knownCommands.entrySet().iterator(); it.hasNext();) {
 | 
			
		||||
						Map.Entry<String, Command> entry = it.next();
 | 
			
		||||
 | 
			
		||||
						if ((entry.getValue() instanceof PluginCommand)) {
 | 
			
		||||
							PluginCommand command = (PluginCommand) entry.getValue();
 | 
			
		||||
							if (command.getPlugin() == next) {
 | 
			
		||||
								command.unregister(commandMap);
 | 
			
		||||
								it.remove();
 | 
			
		||||
								sender.sendMessage("§6卸载: §a插件 " + name + " 的 " + command.getDescription() + " 命令已卸载!");
 | 
			
		||||
								sender.sendMessage("§6卸载: §a插件 " + name + " 的 " + command.getName() + " 命令已卸载!");
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
 
 | 
			
		||||
@@ -12,5 +12,6 @@ package cn.citycraft.Yum.repository;
 | 
			
		||||
public class Plugin {
 | 
			
		||||
	public String groupId;
 | 
			
		||||
	public String artifactId;
 | 
			
		||||
	public String description;
 | 
			
		||||
	public String version;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -25,13 +25,15 @@ import com.google.gson.reflect.TypeToken;
 | 
			
		||||
 * @author 蒋天蓓
 | 
			
		||||
 */
 | 
			
		||||
public class RepositoryManager {
 | 
			
		||||
	Gson gson = new Gson();
 | 
			
		||||
	HashMap<String, PluginInfo> plugins = new HashMap<String, PluginInfo>();
 | 
			
		||||
	Gson gson;
 | 
			
		||||
	HashMap<String, PluginInfo> plugins;
 | 
			
		||||
 | 
			
		||||
	Yum main;
 | 
			
		||||
 | 
			
		||||
	public RepositoryManager(Yum yum) {
 | 
			
		||||
		this.main = yum;
 | 
			
		||||
		gson = new Gson();
 | 
			
		||||
		plugins = new HashMap<String, PluginInfo>();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void clean() {
 | 
			
		||||
@@ -52,7 +54,8 @@ public class RepositoryManager {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public boolean jsonToCache(String json) {
 | 
			
		||||
		if (json == "") {
 | 
			
		||||
		if (json == null || json == "") {
 | 
			
		||||
			plugins = new HashMap<String, PluginInfo>();
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		try {
 | 
			
		||||
@@ -127,11 +130,19 @@ public class RepositoryManager {
 | 
			
		||||
		return li;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public List<String> getAllPluginName() {
 | 
			
		||||
		List<String> li = new ArrayList<String>();
 | 
			
		||||
		for (Entry<String, PluginInfo> plugin : plugins.entrySet()) {
 | 
			
		||||
			li.add(plugin.getValue().plugin.artifactId);
 | 
			
		||||
		}
 | 
			
		||||
		return li;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public List<String> getAllPluginString() {
 | 
			
		||||
		List<String> li = new ArrayList<String>();
 | 
			
		||||
		for (Entry<String, PluginInfo> plugin : plugins.entrySet()) {
 | 
			
		||||
			Plugin pl = plugin.getValue().plugin;
 | 
			
		||||
			li.add(String.format("%s %s(%s)", pl.groupId, pl.artifactId, pl.version));
 | 
			
		||||
			li.add(String.format("%s %s(%s) - %s", pl.groupId, pl.artifactId, pl.version, pl.description));
 | 
			
		||||
		}
 | 
			
		||||
		return li;
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user