mirror of
https://e.coding.net/circlecloud/Yum.git
synced 2024-12-23 05:08:47 +00:00
add Upgrade command...
Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
parent
a8e06d5f32
commit
2ecb988e50
58
src/main/java/cn/citycraft/Yum/commands/CommandUpgrade.java
Normal file
58
src/main/java/cn/citycraft/Yum/commands/CommandUpgrade.java
Normal file
@ -0,0 +1,58 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.manager.YumManager;
|
||||
|
||||
/**
|
||||
* @author 蒋天蓓 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandUpgrade extends BaseCommand {
|
||||
Yum main;
|
||||
|
||||
/**
|
||||
* @param name
|
||||
*/
|
||||
public CommandUpgrade(Yum main) {
|
||||
super("update");
|
||||
this.main = main;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, String label, final String[] args) throws CommandException {
|
||||
final String pluginname = args[0];
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
sender.sendMessage("§a开始更新插件: " + pluginname);
|
||||
if (plugin != null)
|
||||
Bukkit.getScheduler().runTaskAsynchronously(main, () -> {
|
||||
if (args.length < 2)
|
||||
YumManager.upgrade(sender, plugin);
|
||||
else
|
||||
YumManager.upgrade(sender, plugin, args[1]);
|
||||
});
|
||||
else
|
||||
sender.sendMessage("§c插件未安装或已卸载 需要安装请使用yum install " + pluginname + "!");
|
||||
};
|
||||
|
||||
@Override
|
||||
public int getMinimumArguments() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPossibleArguments() {
|
||||
return "<插件名称> <插件版本>";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOnlyPlayerExecutable() {
|
||||
return false;
|
||||
}
|
||||
}
|
@ -20,6 +20,7 @@ import org.bukkit.plugin.InvalidDescriptionException;
|
||||
import org.bukkit.plugin.InvalidPluginException;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginDescriptionFile;
|
||||
import org.bukkit.plugin.PluginLoader;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.UnknownDependencyException;
|
||||
|
||||
@ -312,6 +313,13 @@ public class PluginsManager {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 载入插件
|
||||
*
|
||||
* @param name
|
||||
* - 插件名称
|
||||
* @return 是否成功
|
||||
*/
|
||||
public boolean load(String name) {
|
||||
return load(Bukkit.getConsoleSender(), name);
|
||||
}
|
||||
@ -331,6 +339,21 @@ public class PluginsManager {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除重载插件
|
||||
*
|
||||
* @param sender
|
||||
* - 命令发送者
|
||||
* @param plugin
|
||||
* - 插件
|
||||
* @return 是否成功
|
||||
*/
|
||||
public boolean reload(CommandSender sender, String name) {
|
||||
if (name != null)
|
||||
return unload(sender, name) && load(sender, name);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 重载插件
|
||||
*
|
||||
@ -369,9 +392,21 @@ public class PluginsManager {
|
||||
* - 插件
|
||||
* @return 是否成功
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public boolean unload(CommandSender sender, Plugin plugin) {
|
||||
String name = plugin.getName();
|
||||
return unload(sender, plugin.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* 卸载插件
|
||||
*
|
||||
* @param sender
|
||||
* - 命令发送者
|
||||
* @param name
|
||||
* - 插件名称
|
||||
* @return 是否成功
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public boolean unload(CommandSender sender, String name) {
|
||||
if (sender == null)
|
||||
sender = Bukkit.getConsoleSender();
|
||||
PluginManager pluginManager = Bukkit.getPluginManager();
|
||||
@ -444,4 +479,54 @@ public class PluginsManager {
|
||||
public boolean unload(Plugin plugin) {
|
||||
return unload(Bukkit.getConsoleSender(), plugin);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重载update文件夹的插件
|
||||
*
|
||||
* @return 是否成功
|
||||
*/
|
||||
public boolean updateall(CommandSender sender) {
|
||||
return updateall(sender, Bukkit.getServer().getUpdateFolderFile());
|
||||
}
|
||||
|
||||
/**
|
||||
* 重载update文件夹的插件
|
||||
*
|
||||
* @param sender
|
||||
* - 命令发送者
|
||||
* @param directory
|
||||
* - 更新目录
|
||||
* @return 是否成功
|
||||
*/
|
||||
public boolean updateall(CommandSender sender, File directory) {
|
||||
PluginLoader loader = main.getPluginLoader();
|
||||
File updateDirectory;
|
||||
if (!directory.isDirectory())
|
||||
updateDirectory = Bukkit.getServer().getUpdateFolderFile();
|
||||
else
|
||||
updateDirectory = directory;
|
||||
for (File file : updateDirectory.listFiles()) {
|
||||
PluginDescriptionFile description = null;
|
||||
try {
|
||||
description = loader.getPluginDescription(file);
|
||||
String name = description.getName();
|
||||
sender.sendMessage("§6升级: 开始升级 " + name + " 插件!");
|
||||
reload(sender, name);
|
||||
} catch (InvalidDescriptionException e) {
|
||||
sender.sendMessage("§4异常: §c" + e.getMessage());
|
||||
sender.sendMessage("§c文件: " + file.getName() + " 的plugin.yml文件存在错误!");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 重载update文件夹的插件
|
||||
*
|
||||
* @return 是否成功
|
||||
*/
|
||||
public boolean updateall(File directory) {
|
||||
return updateall(Bukkit.getConsoleSender(), directory);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
package cn.citycraft.Yum.manager;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
@ -7,16 +10,17 @@ import cn.citycraft.Yum.repository.PluginInfo;
|
||||
|
||||
/**
|
||||
* 自动更新类
|
||||
*
|
||||
*
|
||||
* @author 蒋天蓓
|
||||
* 2015年9月1日上午10:59:47
|
||||
*/
|
||||
public class YumManager {
|
||||
Plugin plugin;
|
||||
public static DownloadManager download;
|
||||
public static PluginsManager plugman;
|
||||
public static RepositoryManager repo;
|
||||
|
||||
Plugin plugin;
|
||||
|
||||
public YumManager(Plugin plugin) {
|
||||
this.plugin = plugin;
|
||||
plugman = new PluginsManager(plugin);
|
||||
@ -31,9 +35,8 @@ public class YumManager {
|
||||
public static boolean install(CommandSender sender, String pluginname, String version) {
|
||||
PluginInfo pi = repo.getPlugin(pluginname);
|
||||
if (pi != null)
|
||||
if (download.run(sender, pi.getMavenUrl(version))) {
|
||||
if (download.run(sender, pi.getMavenUrl(version)))
|
||||
return plugman.load(sender, pluginname);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -44,10 +47,28 @@ public class YumManager {
|
||||
public static boolean update(CommandSender sender, Plugin plugin, String version) {
|
||||
PluginInfo pi = repo.getPlugin(plugin.getName());
|
||||
if (pi != null) {
|
||||
|
||||
if (download.run(sender, pi.getMavenUrl(version), plugman.getPluginFile(plugin))) {
|
||||
return plugman.reload(sender, plugin);
|
||||
if (download.run(sender, pi.getMavenUrl(version), new File(Bukkit.getUpdateFolderFile(), plugman.getPluginFile(plugin).getName()))) {
|
||||
sender.sendMessage("§6更新: §a已下载插件 " + plugin.getName() + " 到update文件夹 重启后自动更新(或使用upgrade直接升级)!");
|
||||
return true;
|
||||
}
|
||||
} else
|
||||
sender.sendMessage("§6更新: §c仓库缓存中未找到插件 " + plugin.getName());
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean upgrade(CommandSender sender) {
|
||||
return plugman.updateall(sender);
|
||||
}
|
||||
|
||||
public static boolean upgrade(CommandSender sender, Plugin plugin) {
|
||||
return update(sender, plugin, null);
|
||||
}
|
||||
|
||||
public static boolean upgrade(CommandSender sender, Plugin plugin, String version) {
|
||||
PluginInfo pi = repo.getPlugin(plugin.getName());
|
||||
if (pi != null) {
|
||||
if (download.run(sender, pi.getMavenUrl(version), plugman.getPluginFile(plugin)))
|
||||
return plugman.reload(sender, plugin);
|
||||
return false;
|
||||
} else {
|
||||
sender.sendMessage("§6更新: §c仓库缓存中未找到插件 " + plugin.getName());
|
||||
|
Loading…
Reference in New Issue
Block a user