mirror of
https://e.coding.net/circlecloud/Yum.git
synced 2024-11-22 06:18:46 +00:00
精简大量代码 服务器启动后自动检查可更新插件 优化检测流程...
Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
parent
b8d7bfc25e
commit
6999117880
@ -21,5 +21,11 @@
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
||||
|
7
pom.xml
7
pom.xml
@ -3,7 +3,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>cn.citycraft</groupId>
|
||||
<artifactId>Yum</artifactId>
|
||||
<version>1.9.7</version>
|
||||
<version>2.0</version>
|
||||
<name>Yum</name>
|
||||
<description>Minecraft 服务器插件管理系统</description>
|
||||
<build>
|
||||
@ -54,8 +54,9 @@
|
||||
</plugins>
|
||||
</build>
|
||||
<properties>
|
||||
<jenkins.url>http://ci.citycraft.cn:8080</jenkins.url>
|
||||
<update.description>&c去除离线缓存 修复版本更新模块...</update.description>
|
||||
<jenkins.url>http://hs.yumc.pw:8080</jenkins.url>
|
||||
<update.description>&a全新 2.0 版本 震撼发布...</update.description>
|
||||
<update.changes>&a精简大量代码...;&a服务器启动后自动检查可更新插件...;&a优化检测流程...</update.changes>
|
||||
<env.GIT_COMMIT>DEBUG</env.GIT_COMMIT>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
@ -3,13 +3,14 @@
|
||||
*/
|
||||
package cn.citycraft.Yum;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import cn.citycraft.PluginHelper.config.FileConfig;
|
||||
import cn.citycraft.PluginHelper.utils.VersionChecker;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
import cn.citycraft.Yum.commands.FileCommand;
|
||||
import cn.citycraft.Yum.commands.YumCommand;
|
||||
import cn.citycraft.Yum.file.commands.FileCommand;
|
||||
|
||||
/**
|
||||
* MC插件仓库
|
||||
@ -26,12 +27,12 @@ public class Yum extends JavaPlugin {
|
||||
new YumCommand(this);
|
||||
new FileCommand(this);
|
||||
new VersionChecker(this);
|
||||
YumAPI.updaterepo();
|
||||
YumAPI.updaterepo(Bukkit.getConsoleSender());
|
||||
YumAPI.updatecheck(Bukkit.getConsoleSender());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
config = new FileConfig(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -25,11 +25,8 @@ import cn.citycraft.Yum.manager.RepositoryManager;
|
||||
*/
|
||||
public class YumAPI {
|
||||
private static DownloadManager download;
|
||||
|
||||
private static Plugin main;
|
||||
|
||||
private static PluginsManager plugman;
|
||||
|
||||
private static RepositoryManager repo;
|
||||
|
||||
/**
|
||||
@ -82,6 +79,26 @@ public class YumAPI {
|
||||
return repo;
|
||||
}
|
||||
|
||||
public static List<Plugin> getUpdateList(final CommandSender sender) {
|
||||
final List<Plugin> ulist = new ArrayList<>();
|
||||
try {
|
||||
for (final Entry<String, Plugin> updateplugin : UpdatePlugin.getUpdateList().entrySet()) {
|
||||
ulist.add(updateplugin.getValue());
|
||||
}
|
||||
UpdatePlugin.clearList();
|
||||
} catch (final Exception | Error e) {
|
||||
try {
|
||||
final Map<Plugin, String> updatelist = UpdatePlugin.getList();
|
||||
ulist.addAll(updatelist.keySet());
|
||||
UpdatePlugin.getList().clear();
|
||||
} catch (final Exception | Error e2) {
|
||||
sender.sendMessage("§4错误: §c无法检索全体更新列表!");
|
||||
sender.sendMessage("§4异常: §c" + e2.getMessage());
|
||||
}
|
||||
}
|
||||
return ulist;
|
||||
}
|
||||
|
||||
/**
|
||||
* 安装新插件
|
||||
*
|
||||
@ -226,32 +243,40 @@ public class YumAPI {
|
||||
* 命令发送者
|
||||
*/
|
||||
public static void updateall(final CommandSender sender) {
|
||||
final List<Plugin> ulist = new ArrayList<>();
|
||||
try {
|
||||
for (final Entry<String, Plugin> updateplugin : UpdatePlugin.getUpdateList().entrySet()) {
|
||||
ulist.add(updateplugin.getValue());
|
||||
main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final List<Plugin> ulist = getUpdateList(sender);
|
||||
if (ulist.size() > 0) {
|
||||
for (final Plugin updateplugin : ulist) {
|
||||
sender.sendMessage("§d一键更新: §a开始更新" + updateplugin.getName() + "!");
|
||||
updatefromyum(sender, updateplugin, null, true);
|
||||
}
|
||||
sender.sendMessage("§d一键更新: §e已下载所有需要升级的插件到 服务器更新 文件夹");
|
||||
sender.sendMessage("§d一键更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");
|
||||
} else {
|
||||
sender.sendMessage("§6更新: §e未找到需要更新且可以用Yum处理的插件!");
|
||||
}
|
||||
}
|
||||
UpdatePlugin.clearList();
|
||||
} catch (final Exception | Error e) {
|
||||
try {
|
||||
final Map<Plugin, String> updatelist = UpdatePlugin.getList();
|
||||
ulist.addAll(updatelist.keySet());
|
||||
UpdatePlugin.getList().clear();
|
||||
} catch (final Exception | Error e2) {
|
||||
sender.sendMessage("§4错误: §c无法检索全体更新列表!");
|
||||
sender.sendMessage("§4异常: §c" + e2.getMessage());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查是否有可更新插件
|
||||
*
|
||||
* @param sender
|
||||
* 命令发送者
|
||||
*/
|
||||
public static void updatecheck(final CommandSender sender) {
|
||||
main.getServer().getScheduler().runTaskLaterAsynchronously(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final List<Plugin> ulist = getUpdateList(sender);
|
||||
if (ulist.size() > 0) {
|
||||
sender.sendMessage("§6[§bYum§6]§e自动更新: §a发现" + ulist.size() + " 个可更新插件 请使用 §b/yum ua §a更新所有插件!");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ulist.size() > 0) {
|
||||
for (final Plugin updateplugin : ulist) {
|
||||
sender.sendMessage("§d一键更新: §a开始更新" + updateplugin.getName() + "!");
|
||||
updatefromyum(sender, updateplugin, null, true);
|
||||
}
|
||||
sender.sendMessage("§d一键更新: §e已下载所有需要升级的插件到 服务器更新 文件夹");
|
||||
sender.sendMessage("§d一键更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");
|
||||
} else {
|
||||
sender.sendMessage("§6更新: §e未找到需要更新且可以用Yum处理的插件!");
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -300,7 +325,6 @@ public class YumAPI {
|
||||
if (pi != null) {
|
||||
final File pFile = new File(Bukkit.getUpdateFolderFile(), plugman.getPluginFile(plugin).getName());
|
||||
if (download.run(sender, pi.getUrl(sender, version), pFile)) {
|
||||
|
||||
if (!oneKeyUpdate) {
|
||||
sender.sendMessage("§6更新: §e已下载 " + plugin.getName() + " 插件到服务器更新文件夹");
|
||||
sender.sendMessage("§6更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");
|
||||
@ -316,11 +340,11 @@ public class YumAPI {
|
||||
/**
|
||||
* 更新Yum源数据
|
||||
*/
|
||||
public static void updaterepo() {
|
||||
public static void updaterepo(final CommandSender sender) {
|
||||
main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
repo.updateRepositories(Bukkit.getConsoleSender());
|
||||
repo.updateRepositories(sender);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1,49 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
|
||||
/**
|
||||
* 插件删除命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandDelete extends BaseCommand {
|
||||
Yum main;
|
||||
|
||||
public CommandDelete(final Yum main) {
|
||||
super("del");
|
||||
this.main = main;
|
||||
setMinimumArguments(1);
|
||||
setDescription("删除插件");
|
||||
setPossibleArguments("<插件名称>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
final String pluginname = args[0];
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin != null) {
|
||||
final String version = StringUtils.substring(plugin.getDescription().getVersion(), 0, 15);
|
||||
if (YumAPI.getPlugman().deletePlugin(sender, plugin)) {
|
||||
sender.sendMessage("§c删除: §a插件 §6" + pluginname + " §a版本 §d" + version + " §a已从服务器卸载并删除!");
|
||||
} else {
|
||||
sender.sendMessage("§c删除: §c插件 " + pluginname + " 卸载或删除时发生错误 删除失败!");
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
|
||||
/**
|
||||
* 插件删除命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandFullDelete extends BaseCommand {
|
||||
Yum main;
|
||||
|
||||
public CommandFullDelete(final Yum main) {
|
||||
super("fdel");
|
||||
this.main = main;
|
||||
setMinimumArguments(1);
|
||||
setDescription("删除插件以及数据文件夹");
|
||||
setPossibleArguments("<插件名称>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
final String pluginname = args[0];
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin != null) {
|
||||
final String version = StringUtils.substring(plugin.getDescription().getVersion(), 0, 15);
|
||||
if (YumAPI.getPlugman().fullDeletePlugin(sender, plugin)) {
|
||||
sender.sendMessage("§c删除: §a插件 §6" + pluginname + " §a版本 §d" + version + " §a已从服务器卸载并删除!");
|
||||
} else {
|
||||
sender.sendMessage("§c删除: §c插件 " + pluginname + " 卸载或删除时发生错误 删除失败!");
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,82 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.permissions.Permission;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginDescriptionFile;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.PluginHelper.utils.StringUtil;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
|
||||
/**
|
||||
* 插件删除命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandInfo extends BaseCommand {
|
||||
Yum main;
|
||||
|
||||
/**
|
||||
* @param name
|
||||
*/
|
||||
public CommandInfo(final Yum main) {
|
||||
super();
|
||||
this.main = main;
|
||||
setMinimumArguments(1);
|
||||
setDescription("查看插件详情");
|
||||
setPossibleArguments("<插件名称>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
final String pluginname = args[0];
|
||||
final Plugin plugin = main.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin != null) {
|
||||
final PluginDescriptionFile desc = plugin.getDescription();
|
||||
sender.sendMessage("§6插件名称: §3" + plugin.getName());
|
||||
sender.sendMessage("§6插件版本: §3" + StringUtils.substring(plugin.getDescription().getVersion(), 0, 15));
|
||||
sender.sendMessage("§6插件作者: §3" + StringUtils.join(desc.getAuthors(), " "));
|
||||
sender.sendMessage("§6插件描述: §3" + (desc.getDescription() == null ? "无" : desc.getDescription()));
|
||||
sender.sendMessage("§6插件依赖: §3" + (desc.getDepend().isEmpty() ? "无" : ""));
|
||||
StringUtil.sendStringArray(sender, desc.getDepend(), "§6 - §a");
|
||||
sender.sendMessage("§6插件软依赖: §3" + (desc.getSoftDepend().isEmpty() ? "无" : ""));
|
||||
StringUtil.sendStringArray(sender, desc.getSoftDepend(), "§6 - §a");
|
||||
final Map<String, Map<String, Object>> clist = desc.getCommands();
|
||||
if (clist != null) {
|
||||
sender.sendMessage("§6插件注册命令: §3" + (clist.isEmpty() ? "无" : ""));
|
||||
StringUtil.sendStringArray(sender, clist.keySet(), "§6 - §a");
|
||||
}
|
||||
final List<Permission> plist = desc.getPermissions();
|
||||
if (plist != null) {
|
||||
sender.sendMessage("§6插件注册权限: " + (plist.isEmpty() ? "无" : ""));
|
||||
for (final Permission perm : plist) {
|
||||
sender.sendMessage("§6 - §a" + perm.getName() + "§6 - §e" + (perm.getDescription().isEmpty() ? "无描述" : perm.getDescription()));
|
||||
}
|
||||
}
|
||||
sender.sendMessage("§6插件物理路径: §3" + YumAPI.getPlugman().getPluginFile(plugin).getAbsolutePath());
|
||||
} else {
|
||||
sender.sendMessage("§4错误: §c插件 " + pluginname + " 不存在或已卸载!");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||
if (!args[0].equalsIgnoreCase("install") && !args[0].equalsIgnoreCase("repo")) {
|
||||
return StringUtil.copyPartialMatches(args[1], YumAPI.getPlugman().getPluginNames(false), new ArrayList<String>());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.PluginHelper.utils.StringUtil;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
|
||||
/**
|
||||
* 插件安装命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandInstall extends BaseCommand {
|
||||
Yum main;
|
||||
|
||||
/**
|
||||
* @param name
|
||||
*/
|
||||
public CommandInstall(final Yum main) {
|
||||
super("i");
|
||||
this.main = main;
|
||||
setMinimumArguments(1);
|
||||
setDescription("安装插件");
|
||||
setPossibleArguments("<插件名称>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
final String pluginname = args[0];
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin == null) {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (args.length < 2) {
|
||||
YumAPI.installfromyum(sender, pluginname);
|
||||
} else {
|
||||
YumAPI.installfromyum(sender, pluginname, args[1]);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
sender.sendMessage("§c插件" + pluginname + "已安装在服务器 需要更新请使用yum update " + pluginname + "!");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||
if (args[0].equalsIgnoreCase("install")) {
|
||||
return StringUtil.copyPartialMatches(args[1], YumAPI.getRepo().getAllPluginName(), new ArrayList<String>());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
|
||||
/**
|
||||
* 插件查看命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandList extends BaseCommand {
|
||||
Yum main;
|
||||
|
||||
/**
|
||||
* @param name
|
||||
*/
|
||||
public CommandList(final Yum main) {
|
||||
super("l");
|
||||
this.main = main;
|
||||
setDescription("列出已安装插件列表");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
sender.sendMessage("§6[Yum仓库]§3服务器已安装插件: ");
|
||||
for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
|
||||
sender.sendMessage("§6- " + YumAPI.getPlugman().getFormattedName(plugin, true));
|
||||
}
|
||||
};
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
|
||||
/**
|
||||
* 插件删除命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandLoad extends BaseCommand {
|
||||
Yum main;
|
||||
|
||||
/**
|
||||
* @param name
|
||||
*/
|
||||
public CommandLoad(final Yum main) {
|
||||
super();
|
||||
this.main = main;
|
||||
setMinimumArguments(1);
|
||||
setDescription("载入插件");
|
||||
setPossibleArguments("<插件名称>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
final String pluginname = args[0];
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin == null) {
|
||||
YumAPI.getPlugman().load(sender, pluginname);
|
||||
} else {
|
||||
sender.sendMessage("§c错误: 插件 " + pluginname + " 已加载到服务器!");
|
||||
}
|
||||
};
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
|
||||
/**
|
||||
* 插件删除命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandReload extends BaseCommand {
|
||||
Yum main;
|
||||
|
||||
/**
|
||||
* @param name
|
||||
*/
|
||||
public CommandReload(final Yum main) {
|
||||
super();
|
||||
this.main = main;
|
||||
setMinimumArguments(1);
|
||||
setDescription("重载插件");
|
||||
setPossibleArguments("<插件名称|all|*>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
final String pluginname = args[0];
|
||||
if (pluginname.equalsIgnoreCase("all") || pluginname.equalsIgnoreCase("*")) {
|
||||
YumAPI.getPlugman().reloadAll(sender);
|
||||
return;
|
||||
}
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin != null) {
|
||||
YumAPI.getPlugman().reload(sender, plugin);
|
||||
} else {
|
||||
sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
|
||||
}
|
||||
};
|
||||
}
|
@ -1,109 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.PluginHelper.utils.StringUtil;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
import cn.citycraft.Yum.manager.RepoSerialization.Repositories;
|
||||
|
||||
/**
|
||||
* 插件删除命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandRepo extends BaseCommand {
|
||||
Yum main;
|
||||
|
||||
/**
|
||||
* @param name
|
||||
*/
|
||||
public CommandRepo(final Yum main) {
|
||||
super("r");
|
||||
this.main = main;
|
||||
setMinimumArguments(1);
|
||||
setDescription("插件源命令");
|
||||
setPossibleArguments("<add|del|all|clean|list> <仓库名称>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final String cmd = args[0];
|
||||
switch (cmd) {
|
||||
case "add":
|
||||
if (args.length == 2) {
|
||||
if (YumAPI.getRepo().addRepositories(sender, args[1])) {
|
||||
final String reponame = YumAPI.getRepo().getRepoCache(args[1]).name;
|
||||
sender.sendMessage("§6仓库: §a源仓库 §e" + reponame + " §a的插件信息已缓存!");
|
||||
} else {
|
||||
sender.sendMessage("§6仓库: §c源地址未找到仓库信息或当前地址已缓存!");
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage("§6仓库: §c请输入需要添加的源地址!");
|
||||
}
|
||||
break;
|
||||
case "del":
|
||||
if (args.length == 2) {
|
||||
final Repositories delrepo = YumAPI.getRepo().getRepoCache(args[1]);
|
||||
if (delrepo != null) {
|
||||
YumAPI.getRepo().delRepositories(sender, args[1]);
|
||||
sender.sendMessage("§6仓库: §a源仓库 §e" + delrepo.name + " §c已删除 §a请使用 §b/yum repo update §a更新缓存!");
|
||||
} else {
|
||||
sender.sendMessage("§6仓库: §c源地址未找到!");
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage("§6仓库: §c请输入需要删除的源地址!");
|
||||
}
|
||||
break;
|
||||
case "delall":
|
||||
YumAPI.getRepo().getRepoCache().getRepos().clear();
|
||||
sender.sendMessage("§6仓库: §a缓存的仓库信息已清理!");
|
||||
break;
|
||||
case "list":
|
||||
sender.sendMessage("§6仓库: §b缓存的插件信息如下 ");
|
||||
StringUtil.sendStringArray(sender, YumAPI.getRepo().getAllPluginsInfo());
|
||||
break;
|
||||
case "all":
|
||||
sender.sendMessage("§6仓库: §b缓存的仓库信息如下 ");
|
||||
StringUtil.sendStringArray(sender, YumAPI.getRepo().getRepoCache().getAllRepoInfo());
|
||||
break;
|
||||
case "clean":
|
||||
YumAPI.getRepo().clean();
|
||||
sender.sendMessage("§6仓库: §a缓存的插件信息已清理!");
|
||||
break;
|
||||
case "update":
|
||||
YumAPI.getRepo().updateRepositories(sender);
|
||||
sender.sendMessage("§6仓库: §a仓库缓存数据已更新!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||
if (args[0].equalsIgnoreCase("repo")) {
|
||||
if (args.length == 2) {
|
||||
return StringUtil.copyPartialMatches(args[1], Arrays.asList(new String[] { "add", "all", "list", "delall", "clean", "update", "del" }), new ArrayList<String>());
|
||||
}
|
||||
if (args.length == 3 && (args[1] == "add" || args[1] == "del")) {
|
||||
return StringUtil.copyPartialMatches(args[2], YumAPI.getRepo().getRepos().keySet(), new ArrayList<String>());
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
|
||||
/**
|
||||
* 插件删除命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandUnload extends BaseCommand {
|
||||
Yum main;
|
||||
|
||||
/**
|
||||
* @param name
|
||||
*/
|
||||
public CommandUnload(final Yum main) {
|
||||
super();
|
||||
this.main = main;
|
||||
setMinimumArguments(1);
|
||||
setDescription("卸载插件");
|
||||
setPossibleArguments("<插件名称>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
final String pluginname = args[0];
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin != null) {
|
||||
YumAPI.getPlugman().unload(sender, plugin);
|
||||
} else {
|
||||
sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
|
||||
}
|
||||
};
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
|
||||
/**
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandUpdate extends BaseCommand {
|
||||
Yum main;
|
||||
|
||||
public CommandUpdate(final Yum main) {
|
||||
super("u");
|
||||
this.main = main;
|
||||
setMinimumArguments(0);
|
||||
setDescription("更新插件或缓存");
|
||||
setPossibleArguments("[插件名称] [插件版本]");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
switch (args.length) {
|
||||
case 0:
|
||||
YumAPI.getRepo().updateRepositories(sender);
|
||||
sender.sendMessage("§6仓库: §a仓库缓存数据已更新!");
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
final String pluginname = args[0];
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
sender.sendMessage("§a开始更新插件: " + pluginname);
|
||||
if (plugin != null) {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (args.length < 2) {
|
||||
YumAPI.updatefromyum(sender, plugin);
|
||||
} else {
|
||||
YumAPI.updatefromyum(sender, plugin, args[1]);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
sender.sendMessage("§c插件" + pluginname + "未安装或已卸载 需要安装请使用/yum install " + pluginname + "!");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
sendHelp(sender, label);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
|
||||
/**
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandUpdateAll extends BaseCommand {
|
||||
Yum main;
|
||||
|
||||
public CommandUpdateAll(final Yum main) {
|
||||
super("ua");
|
||||
this.main = main;
|
||||
setDescription("更新所有可更新插件");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
sender.sendMessage("§d开始更新服务器可更新插件");
|
||||
Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
YumAPI.updateall(sender);
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
|
||||
/**
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandUpgrade extends BaseCommand {
|
||||
Yum main;
|
||||
|
||||
/**
|
||||
* @param name
|
||||
*/
|
||||
public CommandUpgrade(final Yum main) {
|
||||
super("ug");
|
||||
this.main = main;
|
||||
setDescription("升级插件");
|
||||
setPossibleArguments("[插件名称]");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (args.length == 0) {
|
||||
YumAPI.getPlugman().upgrade(sender);
|
||||
} else {
|
||||
final String pluginname = args[0];
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
sender.sendMessage("§a开始升级插件: " + pluginname);
|
||||
if (plugin != null) {
|
||||
YumAPI.upgrade(sender, plugin);
|
||||
} else {
|
||||
sender.sendMessage("§c插件未安装或已卸载 需要安装请使用yum install " + pluginname + "!");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
149
src/main/java/cn/citycraft/Yum/commands/FileCommand.java
Normal file
149
src/main/java/cn/citycraft/Yum/commands/FileCommand.java
Normal file
@ -0,0 +1,149 @@
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.HandlerCommand;
|
||||
import cn.citycraft.PluginHelper.commands.HandlerCommands;
|
||||
import cn.citycraft.PluginHelper.commands.InvokeCommandEvent;
|
||||
import cn.citycraft.PluginHelper.commands.InvokeSubCommand;
|
||||
import cn.citycraft.PluginHelper.utils.FileUtil;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
import cn.citycraft.Yum.manager.DownloadManager;
|
||||
|
||||
/**
|
||||
* File命令基类
|
||||
*
|
||||
* @since 2016年1月9日 上午10:02:39
|
||||
* @author 喵♂呜
|
||||
*/
|
||||
public class FileCommand implements HandlerCommands {
|
||||
Yum plugin;
|
||||
DownloadManager dl;
|
||||
|
||||
public FileCommand(final Yum yum) {
|
||||
plugin = yum;
|
||||
dl = YumAPI.getDownload();
|
||||
final InvokeSubCommand cmdhandler = new InvokeSubCommand(yum, "file");
|
||||
cmdhandler.setAllCommandOnlyConsole(yum.config.getBoolean("onlyFileCommandConsole", true));
|
||||
cmdhandler.registerCommands(this);
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "delete", aliases = { "del" }, minimumArguments = 1, description = "删除文件(服务器JAR为根目录)", possibleArguments = "<文件相对目录>")
|
||||
public void delete(final InvokeCommandEvent e) {
|
||||
final String[] args = e.getArgs();
|
||||
final String fpath = args[0];
|
||||
final File file = new File(fpath);
|
||||
final CommandSender sender = e.getSender();
|
||||
if (!file.exists()) {
|
||||
sender.sendMessage("§c文件 " + file.getAbsolutePath() + " 不存在!");
|
||||
} else {
|
||||
if (file.isDirectory()) {
|
||||
sender.sendMessage("§e" + file.getAbsolutePath() + " §c是一个目录 请使用file rm!");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
sender.sendMessage("§d文件 §e" + file.getAbsolutePath() + " " + (file.delete() ? "§a删除成功!" : "§c删除失败!"));
|
||||
} catch (final Exception ex) {
|
||||
sender.sendMessage("§d文件 §e" + file.getAbsolutePath() + " 删除失败: " + ex.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "download", aliases = { "d" }, minimumArguments = 1, description = "下载文件(默认保存到服务器更新文件夹)", possibleArguments = "<下载地址> [保存文件路径]")
|
||||
public void download(final InvokeCommandEvent e) {
|
||||
final String[] args = e.getArgs();
|
||||
String urlstr = args[0];
|
||||
if (!urlstr.startsWith("http")) {
|
||||
urlstr = "http://" + urlstr;
|
||||
}
|
||||
File file = null;
|
||||
if (args.length == 2) {
|
||||
file = new File(args[1]);
|
||||
} else {
|
||||
file = new File(Bukkit.getUpdateFolderFile(), dl.getFileName(urlstr));
|
||||
}
|
||||
dl.run(e.getSender(), urlstr, file);
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "ls", aliases = { "l" }, minimumArguments = 1, description = "列出当前目录(服务器JAR为根目录)", possibleArguments = "<相对目录>")
|
||||
public void ls(final InvokeCommandEvent e) {
|
||||
final String[] args = e.getArgs();
|
||||
final CommandSender sender = e.getSender();
|
||||
File dir = new File(".");
|
||||
if (args.length == 1) {
|
||||
dir = new File(args[0]);
|
||||
}
|
||||
if (!dir.isDirectory()) {
|
||||
sender.sendMessage("§6路径: §e " + dir.getAbsolutePath() + " §c不是一个目录!");
|
||||
return;
|
||||
}
|
||||
final StringBuffer sb = new StringBuffer();
|
||||
for (final File file : dir.listFiles()) {
|
||||
if (file.isDirectory()) {
|
||||
sb.append("§b");
|
||||
} else {
|
||||
sb.append("§a");
|
||||
}
|
||||
sb.append(file.getName() + " ");
|
||||
}
|
||||
final String filelist = sb.toString();
|
||||
if (filelist.isEmpty()) {
|
||||
sender.sendMessage("§6目录: §e" + dir.getAbsolutePath() + " §c下没有文件或文件夹!");
|
||||
} else {
|
||||
sender.sendMessage("§6目录: §e" + dir.getAbsolutePath() + " §a存在如下文件!");
|
||||
sender.sendMessage(sb.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "rename", aliases = { "rn" }, minimumArguments = 2, description = "重命名文件(服务器JAR为根目录)", possibleArguments = "<文件相对路径> <文件名称>")
|
||||
public void rename(final InvokeCommandEvent e) {
|
||||
final String[] args = e.getArgs();
|
||||
final CommandSender sender = e.getSender();
|
||||
final String fpath = args[0];
|
||||
final File file = new File(fpath);
|
||||
if (!file.exists()) {
|
||||
sender.sendMessage("§c文件 " + file.getAbsolutePath() + " 不存在!");
|
||||
} else {
|
||||
try {
|
||||
final File newFile = new File(file.getParentFile(), args[1]);
|
||||
file.renameTo(newFile);
|
||||
sender.sendMessage("§a文件 §e" + file.getAbsolutePath() + " §a重命名为 §d" + newFile.getAbsolutePath());
|
||||
} catch (final Exception ex) {
|
||||
sender.sendMessage("§c文件 §e" + file.getAbsolutePath() + " §c重命名失败: " + ex.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "rm", minimumArguments = 1, description = "删除文件夹(服务器JAR为根目录)", possibleArguments = "<相对目录>")
|
||||
public void rm(final InvokeCommandEvent e) {
|
||||
final String[] args = e.getArgs();
|
||||
final CommandSender sender = e.getSender();
|
||||
final String fpath = args[0];
|
||||
final File file = new File(fpath);
|
||||
if (!file.exists()) {
|
||||
sender.sendMessage("§c目录 " + file.getAbsolutePath() + " 不存在!");
|
||||
} else {
|
||||
if (!file.isDirectory()) {
|
||||
sender.sendMessage("§d路径 §e" + file.getAbsolutePath() + " §c是一个文件 请使用file delete!");
|
||||
return;
|
||||
}
|
||||
for (final String name : plugin.config.getStringList("blacklist")) {
|
||||
if (file.getAbsolutePath().toLowerCase().endsWith(name)) {
|
||||
sender.sendMessage("§d路径 §e" + file.getAbsolutePath() + " §c不允许被删除!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (file.listFiles().length != 0 && !(args.length > 1 && args[1].equalsIgnoreCase("-rf"))) {
|
||||
sender.sendMessage("§d目录 §e" + file.getAbsolutePath() + " §c不为空!");
|
||||
sender.sendMessage("§c请使用 §a/file rm " + fpath + " -rf §c强行删除!");
|
||||
return;
|
||||
}
|
||||
sender.sendMessage("§d目录 §e" + file.getAbsolutePath() + " " + (FileUtil.deleteDir(sender, file) ? "§a删除成功!" : "§c删除失败!"));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,29 +1,333 @@
|
||||
package cn.citycraft.Yum.commands;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.HandlerSubCommand;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.permissions.Permission;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginDescriptionFile;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.HandlerCommand;
|
||||
import cn.citycraft.PluginHelper.commands.HandlerCommands;
|
||||
import cn.citycraft.PluginHelper.commands.HandlerTabComplete;
|
||||
import cn.citycraft.PluginHelper.commands.InvokeCommandEvent;
|
||||
import cn.citycraft.PluginHelper.commands.InvokeSubCommand;
|
||||
import cn.citycraft.PluginHelper.utils.StringUtil;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
import cn.citycraft.Yum.manager.PluginsManager;
|
||||
import cn.citycraft.Yum.manager.RepoSerialization.Repositories;
|
||||
import cn.citycraft.Yum.manager.RepositoryManager;
|
||||
|
||||
/**
|
||||
* Yum命令基类
|
||||
*
|
||||
*
|
||||
* @since 2016年1月9日 上午10:02:24
|
||||
* @author 喵♂呜
|
||||
*/
|
||||
public class YumCommand {
|
||||
public class YumCommand implements HandlerCommands {
|
||||
Yum main;
|
||||
RepositoryManager repo;
|
||||
PluginsManager plugman;
|
||||
|
||||
public YumCommand(final Yum yum) {
|
||||
final HandlerSubCommand cmdhandler = new HandlerSubCommand(yum, "yum");
|
||||
main = yum;
|
||||
repo = YumAPI.getRepo();
|
||||
plugman = YumAPI.getPlugman();
|
||||
final InvokeSubCommand cmdhandler = new InvokeSubCommand(yum, "yum");
|
||||
cmdhandler.setAllCommandOnlyConsole(yum.config.getBoolean("onlyCommandConsole", false));
|
||||
cmdhandler.registerCommand(new CommandList(yum));
|
||||
cmdhandler.registerCommand(new CommandInstall(yum));
|
||||
cmdhandler.registerCommand(new CommandUpdate(yum));
|
||||
cmdhandler.registerCommand(new CommandUpdateAll(yum));
|
||||
cmdhandler.registerCommand(new CommandDelete(yum));
|
||||
cmdhandler.registerCommand(new CommandFullDelete(yum));
|
||||
cmdhandler.registerCommand(new CommandInfo(yum));
|
||||
cmdhandler.registerCommand(new CommandRepo(yum));
|
||||
cmdhandler.registerCommand(new CommandReload(yum));
|
||||
cmdhandler.registerCommand(new CommandLoad(yum));
|
||||
cmdhandler.registerCommand(new CommandUnload(yum));
|
||||
cmdhandler.registerCommand(new CommandUpgrade(yum));
|
||||
cmdhandler.registerCommands(this);
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "delete", aliases = { "del" }, minimumArguments = 1, description = "删除插件", possibleArguments = "<插件名称>")
|
||||
public void delete(final InvokeCommandEvent e) {
|
||||
final String pluginname = e.getArgs()[0];
|
||||
final CommandSender sender = e.getSender();
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin != null) {
|
||||
final String version = StringUtils.substring(plugin.getDescription().getVersion(), 0, 15);
|
||||
if (plugman.deletePlugin(sender, plugin)) {
|
||||
sender.sendMessage("§c删除: §a插件 §6" + pluginname + " §a版本 §d" + version + " §a已从服务器卸载并删除!");
|
||||
} else {
|
||||
sender.sendMessage("§c删除: §c插件 " + pluginname + " 卸载或删除时发生错误 删除失败!");
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
|
||||
}
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "fulldelete", aliases = { "fdel" }, minimumArguments = 1, description = "删除插件以及数据文件夹", possibleArguments = "<插件名称>")
|
||||
public void fulldelete(final InvokeCommandEvent e) {
|
||||
final String pluginname = e.getArgs()[0];
|
||||
final CommandSender sender = e.getSender();
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin != null) {
|
||||
final String version = StringUtils.substring(plugin.getDescription().getVersion(), 0, 15);
|
||||
if (plugman.fullDeletePlugin(sender, plugin)) {
|
||||
sender.sendMessage("§c删除: §a插件 §6" + pluginname + " §a版本 §d" + version + " §a已从服务器卸载并删除!");
|
||||
} else {
|
||||
sender.sendMessage("§c删除: §c插件 " + pluginname + " 卸载或删除时发生错误 删除失败!");
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
|
||||
}
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "info", minimumArguments = 1, description = "查看插件详情", possibleArguments = "<插件名称>")
|
||||
public void info(final InvokeCommandEvent e) {
|
||||
final String pluginname = e.getArgs()[0];
|
||||
final CommandSender sender = e.getSender();
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin != null) {
|
||||
final PluginDescriptionFile desc = plugin.getDescription();
|
||||
sender.sendMessage("§6插件名称: §3" + plugin.getName());
|
||||
sender.sendMessage("§6插件版本: §3" + StringUtils.substring(plugin.getDescription().getVersion(), 0, 15));
|
||||
sender.sendMessage("§6插件作者: §3" + StringUtils.join(desc.getAuthors(), " "));
|
||||
sender.sendMessage("§6插件描述: §3" + (desc.getDescription() == null ? "无" : desc.getDescription()));
|
||||
sender.sendMessage("§6插件依赖: §3" + (desc.getDepend().isEmpty() ? "无" : ""));
|
||||
StringUtil.sendStringArray(sender, desc.getDepend(), "§6 - §a");
|
||||
sender.sendMessage("§6插件软依赖: §3" + (desc.getSoftDepend().isEmpty() ? "无" : ""));
|
||||
StringUtil.sendStringArray(sender, desc.getSoftDepend(), "§6 - §a");
|
||||
final Map<String, Map<String, Object>> clist = desc.getCommands();
|
||||
if (clist != null) {
|
||||
sender.sendMessage("§6插件注册命令: §3" + (clist.isEmpty() ? "无" : ""));
|
||||
StringUtil.sendStringArray(sender, clist.keySet(), "§6 - §a");
|
||||
}
|
||||
final List<Permission> plist = desc.getPermissions();
|
||||
if (plist != null) {
|
||||
sender.sendMessage("§6插件注册权限: " + (plist.isEmpty() ? "无" : ""));
|
||||
for (final Permission perm : plist) {
|
||||
sender.sendMessage("§6 - §a" + perm.getName() + "§6 - §e" + (perm.getDescription().isEmpty() ? "无描述" : perm.getDescription()));
|
||||
}
|
||||
}
|
||||
sender.sendMessage("§6插件物理路径: §3" + plugman.getPluginFile(plugin).getAbsolutePath());
|
||||
} else {
|
||||
sender.sendMessage("§4错误: §c插件 " + pluginname + " 不存在或已卸载!");
|
||||
}
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "install", aliases = { "i" }, minimumArguments = 1, description = "安装插件", possibleArguments = "<插件名称>")
|
||||
public void install(final InvokeCommandEvent e) {
|
||||
final String[] args = e.getArgs();
|
||||
final CommandSender sender = e.getSender();
|
||||
final String pluginname = args[0];
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin == null) {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (args.length < 2) {
|
||||
YumAPI.installfromyum(sender, pluginname);
|
||||
} else {
|
||||
YumAPI.installfromyum(sender, pluginname, args[1]);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
sender.sendMessage("§c插件" + pluginname + "已安装在服务器 需要更新请使用yum update " + pluginname + "!");
|
||||
}
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "list", aliases = { "l" }, description = "列出已安装插件列表")
|
||||
public void list(final InvokeCommandEvent e) {
|
||||
final CommandSender sender = e.getSender();
|
||||
sender.sendMessage("§6[Yum仓库]§3服务器已安装插件: ");
|
||||
for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
|
||||
sender.sendMessage("§6- " + plugman.getFormattedName(plugin, true));
|
||||
}
|
||||
}
|
||||
|
||||
@HandlerTabComplete()
|
||||
public List<String> listtab(final InvokeCommandEvent e) {
|
||||
final String[] args = e.getArgs();
|
||||
if (!args[0].equalsIgnoreCase("install") && !args[0].equalsIgnoreCase("repo")) {
|
||||
return StringUtil.copyPartialMatches(args[1], plugman.getPluginNames(false), new ArrayList<String>());
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("install")) {
|
||||
return StringUtil.copyPartialMatches(args[1], repo.getAllPluginName(), new ArrayList<String>());
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("repo")) {
|
||||
if (args.length == 2) {
|
||||
return StringUtil.copyPartialMatches(args[1], Arrays.asList(new String[] { "add", "all", "list", "delall", "clean", "update", "del" }), new ArrayList<String>());
|
||||
}
|
||||
if (args.length == 3 && (args[1] == "add" || args[1] == "del")) {
|
||||
return StringUtil.copyPartialMatches(args[2], repo.getRepos().keySet(), new ArrayList<String>());
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "load", minimumArguments = 1, description = "载入插件", possibleArguments = "<插件名称>")
|
||||
public void load(final InvokeCommandEvent e) {
|
||||
final CommandSender sender = e.getSender();
|
||||
final String pluginname = e.getArgs()[0];
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin == null) {
|
||||
plugman.load(sender, pluginname);
|
||||
} else {
|
||||
sender.sendMessage("§c错误: 插件 " + pluginname + " 已加载到服务器!");
|
||||
}
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "reload", aliases = { "re" }, minimumArguments = 1, description = "重载插件", possibleArguments = "<插件名称|all|*>")
|
||||
public void reload(final InvokeCommandEvent e) {
|
||||
final CommandSender sender = e.getSender();
|
||||
final String pluginname = e.getArgs()[0];
|
||||
if (pluginname.equalsIgnoreCase("all") || pluginname.equalsIgnoreCase("*")) {
|
||||
plugman.reloadAll(sender);
|
||||
return;
|
||||
}
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin != null) {
|
||||
plugman.reload(sender, plugin);
|
||||
} else {
|
||||
sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
|
||||
}
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "repo", aliases = { "r" }, minimumArguments = 1, description = "插件源命令", possibleArguments = "<add|del|all|clean|list> <仓库名称>")
|
||||
public void repo(final InvokeCommandEvent e) {
|
||||
final String[] args = e.getArgs();
|
||||
final CommandSender sender = e.getSender();
|
||||
main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final String cmd = args[0];
|
||||
switch (cmd) {
|
||||
case "add":
|
||||
if (args.length == 2) {
|
||||
if (repo.addRepositories(sender, args[1])) {
|
||||
final String reponame = repo.getRepoCache(args[1]).name;
|
||||
sender.sendMessage("§6仓库: §a源仓库 §e" + reponame + " §a的插件信息已缓存!");
|
||||
} else {
|
||||
sender.sendMessage("§6仓库: §c源地址未找到仓库信息或当前地址已缓存!");
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage("§6仓库: §c请输入需要添加的源地址!");
|
||||
}
|
||||
break;
|
||||
case "del":
|
||||
if (args.length == 2) {
|
||||
final Repositories delrepo = repo.getRepoCache(args[1]);
|
||||
if (delrepo != null) {
|
||||
repo.delRepositories(sender, args[1]);
|
||||
sender.sendMessage("§6仓库: §a源仓库 §e" + delrepo.name + " §c已删除 §a请使用 §b/yum repo update §a更新缓存!");
|
||||
} else {
|
||||
sender.sendMessage("§6仓库: §c源地址未找到!");
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage("§6仓库: §c请输入需要删除的源地址!");
|
||||
}
|
||||
break;
|
||||
case "delall":
|
||||
repo.getRepoCache().getRepos().clear();
|
||||
sender.sendMessage("§6仓库: §a缓存的仓库信息已清理!");
|
||||
break;
|
||||
case "list":
|
||||
sender.sendMessage("§6仓库: §b缓存的插件信息如下 ");
|
||||
StringUtil.sendStringArray(sender, repo.getAllPluginsInfo());
|
||||
break;
|
||||
case "all":
|
||||
sender.sendMessage("§6仓库: §b缓存的仓库信息如下 ");
|
||||
StringUtil.sendStringArray(sender, repo.getRepoCache().getAllRepoInfo());
|
||||
break;
|
||||
case "clean":
|
||||
repo.clean();
|
||||
sender.sendMessage("§6仓库: §a缓存的插件信息已清理!");
|
||||
break;
|
||||
case "update":
|
||||
repo.updateRepositories(sender);
|
||||
sender.sendMessage("§6仓库: §a仓库缓存数据已更新!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "unload", minimumArguments = 1, description = "卸载插件", possibleArguments = "<插件名称>")
|
||||
public void unload(final InvokeCommandEvent e) {
|
||||
final String pluginname = e.getArgs()[0];
|
||||
final CommandSender sender = e.getSender();
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
if (plugin != null) {
|
||||
plugman.unload(sender, plugin);
|
||||
} else {
|
||||
sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
|
||||
}
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "update", aliases = { "u" }, description = "更新插件或缓存", possibleArguments = "[插件名称] [插件版本]")
|
||||
public void update(final InvokeCommandEvent e) {
|
||||
final String[] args = e.getArgs();
|
||||
final CommandSender sender = e.getSender();
|
||||
final String pluginname = args[0];
|
||||
switch (args.length) {
|
||||
case 0:
|
||||
repo.updateRepositories(sender);
|
||||
sender.sendMessage("§6仓库: §a仓库缓存数据已更新!");
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
sender.sendMessage("§a开始更新插件: " + pluginname);
|
||||
if (plugin != null) {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (args.length < 2) {
|
||||
YumAPI.updatefromyum(sender, plugin);
|
||||
} else {
|
||||
YumAPI.updatefromyum(sender, plugin, args[1]);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
sender.sendMessage("§c插件" + pluginname + "未安装或已卸载 需要安装请使用/yum install " + pluginname + "!");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
sender.sendMessage("§c命令参数错误!");
|
||||
}
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "updateall", aliases = { "ua" }, description = "更新所有可更新插件")
|
||||
public void updateall(final InvokeCommandEvent e) {
|
||||
final CommandSender sender = e.getSender();
|
||||
sender.sendMessage("§d开始更新服务器可更新插件");
|
||||
Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
YumAPI.updateall(sender);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@HandlerCommand(name = "upgrade", aliases = { "ug" }, description = "升级或载入插件", possibleArguments = "[插件名称]")
|
||||
public void upgrade(final InvokeCommandEvent e) {
|
||||
final String[] args = e.getArgs();
|
||||
final CommandSender sender = e.getSender();
|
||||
Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (args.length == 0) {
|
||||
plugman.upgrade(sender);
|
||||
} else {
|
||||
final String pluginname = args[0];
|
||||
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||
sender.sendMessage("§a开始升级插件: " + pluginname);
|
||||
if (plugin != null) {
|
||||
YumAPI.upgrade(sender, plugin);
|
||||
} else {
|
||||
sender.sendMessage("§c插件未安装或已卸载 需要安装请使用yum install " + pluginname + "!");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,47 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.file.commands;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
|
||||
/**
|
||||
* 插件删除命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandDelete extends BaseCommand {
|
||||
public CommandDelete(final Yum main) {
|
||||
super("del");
|
||||
setMinimumArguments(1);
|
||||
setDescription("删除文件(服务器JAR为根目录)");
|
||||
setPossibleArguments("<文件相对目录>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
final String fpath = args[0];
|
||||
final File file = new File(fpath);
|
||||
if (!file.exists()) {
|
||||
sendMessage(sender, "§c文件 " + file.getAbsolutePath() + " 不存在!");
|
||||
} else {
|
||||
if (file.isDirectory()) {
|
||||
sendMessage(sender, "§e" + file.getAbsolutePath() + " §c是一个目录 请使用file rm!");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
sendMessage(sender, "§d文件 §e" + file.getAbsolutePath() + " " + (file.delete() ? "§a删除成功!" : "§c删除失败!"));
|
||||
} catch (final Exception e) {
|
||||
sendMessage(sender, "§d文件 §e" + file.getAbsolutePath() + " 删除失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.file.commands;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
import cn.citycraft.Yum.api.YumAPI;
|
||||
import cn.citycraft.Yum.manager.DownloadManager;
|
||||
|
||||
/**
|
||||
* 插件删除命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandDownLoad extends BaseCommand {
|
||||
Yum main;
|
||||
DownloadManager dl;
|
||||
|
||||
public CommandDownLoad(final Yum main) {
|
||||
super("d");
|
||||
this.main = main;
|
||||
dl = YumAPI.getDownload();
|
||||
setMinimumArguments(1);
|
||||
setDescription("下载文件(默认保存到服务器更新文件夹)");
|
||||
setPossibleArguments("<下载地址> [保存文件路径]");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
String urlstr = args[0];
|
||||
if (!urlstr.startsWith("http")) {
|
||||
urlstr = "http://" + urlstr;
|
||||
}
|
||||
File file = null;
|
||||
if (args.length == 2) {
|
||||
file = new File(args[1]);
|
||||
} else {
|
||||
file = new File(Bukkit.getUpdateFolderFile(), dl.getFileName(urlstr));
|
||||
}
|
||||
dl.run(sender, urlstr, file);
|
||||
}
|
||||
}
|
@ -1,56 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.file.commands;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
|
||||
/**
|
||||
* 插件删除命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandLs extends BaseCommand {
|
||||
|
||||
public CommandLs(final Yum main) {
|
||||
super("l");
|
||||
setDescription("列出当前目录(服务器JAR为根目录)");
|
||||
setPossibleArguments("<相对目录>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
File dir = new File(".");
|
||||
if (args.length == 1) {
|
||||
dir = new File(args[0]);
|
||||
}
|
||||
if (!dir.isDirectory()) {
|
||||
sendMessage(sender, "§6路径: §e " + dir.getAbsolutePath() + " §c不是一个目录!");
|
||||
return;
|
||||
}
|
||||
final StringBuffer sb = new StringBuffer();
|
||||
for (final File file : dir.listFiles()) {
|
||||
if (file.isDirectory()) {
|
||||
sb.append("§b");
|
||||
} else {
|
||||
sb.append("§a");
|
||||
}
|
||||
sb.append(file.getName() + " ");
|
||||
}
|
||||
final String filelist = sb.toString();
|
||||
if (filelist.isEmpty()) {
|
||||
sendMessage(sender, "§6目录: §e" + dir.getAbsolutePath() + " §c下没有文件或文件夹!");
|
||||
} else {
|
||||
sendMessage(sender, "§6目录: §e" + dir.getAbsolutePath() + " §a存在如下文件!");
|
||||
sendMessage(sender, sb.toString());
|
||||
}
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.file.commands;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
|
||||
/**
|
||||
* 插件删除命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandRename extends BaseCommand {
|
||||
public CommandRename(final Yum main) {
|
||||
super("rn");
|
||||
setMinimumArguments(2);
|
||||
setDescription("重命名文件(服务器JAR为根目录)");
|
||||
setPossibleArguments("<文件相对目录> <文件名称>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
final String fpath = args[0];
|
||||
final File file = new File(fpath);
|
||||
if (!file.exists()) {
|
||||
sendMessage(sender, "§c文件 " + file.getAbsolutePath() + " 不存在!");
|
||||
} else {
|
||||
try {
|
||||
final File newFile = new File(file.getParentFile(), args[1]);
|
||||
file.renameTo(newFile);
|
||||
sendMessage(sender, "§a文件 §e" + file.getAbsolutePath() + " §a重命名为 §d" + newFile.getAbsolutePath());
|
||||
} catch (final Exception e) {
|
||||
sendMessage(sender, "§c文件 §e" + file.getAbsolutePath() + " §c重命名失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,58 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package cn.citycraft.Yum.file.commands;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.BaseCommand;
|
||||
import cn.citycraft.PluginHelper.utils.FileUtil;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
|
||||
/**
|
||||
* 插件删除命令类
|
||||
*
|
||||
* @author 喵♂呜
|
||||
* @since 2015年8月12日下午2:04:05
|
||||
*/
|
||||
public class CommandRm extends BaseCommand {
|
||||
Yum plugin;
|
||||
|
||||
public CommandRm(final Yum main) {
|
||||
super();
|
||||
plugin = main;
|
||||
setMinimumArguments(1);
|
||||
setDescription("删除文件夹(服务器JAR为根目录)");
|
||||
setPossibleArguments("<文件相对目录>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
|
||||
final String fpath = args[0];
|
||||
final File file = new File(fpath);
|
||||
if (!file.exists()) {
|
||||
sendMessage(sender, "§c目录 " + file.getAbsolutePath() + " 不存在!");
|
||||
} else {
|
||||
if (!file.isDirectory()) {
|
||||
sendMessage(sender, "§d路径 §e" + file.getAbsolutePath() + " §c是一个文件 请使用file delete!");
|
||||
return;
|
||||
}
|
||||
for (final String name : plugin.config.getStringList("blacklist")) {
|
||||
if (file.getAbsolutePath().toLowerCase().endsWith(name)) {
|
||||
sendMessage(sender, "§d路径 §e" + file.getAbsolutePath() + " §c不允许被删除!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (file.listFiles().length != 0 && !(args.length > 1 && args[1].equalsIgnoreCase("-rf"))) {
|
||||
sendMessage(sender, "§d目录 §e" + file.getAbsolutePath() + " §c不为空!");
|
||||
sendMessage(sender, "§c请使用 §a/file rm " + fpath + " -rf §c强行删除!");
|
||||
return;
|
||||
}
|
||||
sendMessage(sender, "§d目录 §e" + file.getAbsolutePath() + " " + (FileUtil.deleteDir(sender, file) ? "§a删除成功!" : "§c删除失败!"));
|
||||
}
|
||||
}
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
package cn.citycraft.Yum.file.commands;
|
||||
|
||||
import cn.citycraft.PluginHelper.commands.HandlerSubCommand;
|
||||
import cn.citycraft.Yum.Yum;
|
||||
|
||||
/**
|
||||
* File命令基类
|
||||
*
|
||||
* @since 2016年1月9日 上午10:02:39
|
||||
* @author 喵♂呜
|
||||
*/
|
||||
public class FileCommand {
|
||||
public FileCommand(final Yum yum) {
|
||||
final HandlerSubCommand cmdhandler = new HandlerSubCommand(yum, "file");
|
||||
cmdhandler.setAllCommandOnlyConsole(yum.config.getBoolean("onlyFileCommandConsole", true));
|
||||
cmdhandler.registerCommand(new CommandDownLoad(yum));
|
||||
cmdhandler.registerCommand(new CommandDelete(yum));
|
||||
cmdhandler.registerCommand(new CommandRename(yum));
|
||||
cmdhandler.registerCommand(new CommandRm(yum));
|
||||
cmdhandler.registerCommand(new CommandLs(yum));
|
||||
}
|
||||
}
|
@ -1,5 +1,7 @@
|
||||
package cn.citycraft.Yum.manager;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
@ -9,7 +11,7 @@ import cn.citycraft.Yum.manager.RepoSerialization.Plugin;
|
||||
import cn.citycraft.Yum.manager.RepoSerialization.TagInfo;
|
||||
import cn.citycraft.Yum.manager.RepoSerialization.URLType;
|
||||
|
||||
public class PluginInfo {
|
||||
public class PluginInfo implements Serializable {
|
||||
public static final String NMSVersion = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
|
||||
|
||||
public String branch;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package cn.citycraft.Yum.manager;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@ -11,7 +12,7 @@ import cn.citycraft.PluginHelper.jsonresult.JsonHandle;
|
||||
import cn.citycraft.PluginHelper.utils.IOUtil;
|
||||
import cn.citycraft.Yum.manager.RepoSerialization.Repositories;
|
||||
|
||||
public class RepoCache {
|
||||
public class RepoCache implements Serializable {
|
||||
PluginHelperLogger logger = PluginHelperLogger.getLogger();
|
||||
Map<String, PluginInfo> plugins = new HashMap<String, PluginInfo>();
|
||||
Map<String, Repositories> repos = new HashMap<String, Repositories>();
|
||||
|
@ -3,6 +3,7 @@
|
||||
*/
|
||||
package cn.citycraft.Yum.manager;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@ -13,7 +14,7 @@ import java.util.List;
|
||||
* @since 2015年8月31日下午7:41:53
|
||||
*/
|
||||
public class RepoSerialization {
|
||||
public class PackageInfo {
|
||||
public class PackageInfo implements Serializable {
|
||||
public String name;
|
||||
public List<Plugin> plugins = new ArrayList<>();
|
||||
public String pom;
|
||||
@ -21,7 +22,7 @@ public class RepoSerialization {
|
||||
public URLType type;
|
||||
}
|
||||
|
||||
public class Plugin {
|
||||
public class Plugin implements Serializable {
|
||||
public String artifactId;
|
||||
public String branch;
|
||||
public String description;
|
||||
@ -34,18 +35,18 @@ public class RepoSerialization {
|
||||
public URLType type;
|
||||
}
|
||||
|
||||
public class Repositories {
|
||||
public class Repositories implements Serializable {
|
||||
public String name;
|
||||
public List<Repository> repos;
|
||||
}
|
||||
|
||||
public class Repository {
|
||||
public class Repository implements Serializable {
|
||||
public String id;
|
||||
public URLType type;
|
||||
public String url;
|
||||
}
|
||||
|
||||
public class TagInfo {
|
||||
public class TagInfo implements Serializable {
|
||||
public String tag;
|
||||
public String version;
|
||||
public URLType type;
|
||||
|
Loading…
Reference in New Issue
Block a user