mirror of
https://e.coding.net/circlecloud/Yum.git
synced 2024-11-22 14:28: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"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</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"/>
|
<classpathentry kind="output" path="target/classes"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
7
pom.xml
7
pom.xml
@ -3,7 +3,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>cn.citycraft</groupId>
|
<groupId>cn.citycraft</groupId>
|
||||||
<artifactId>Yum</artifactId>
|
<artifactId>Yum</artifactId>
|
||||||
<version>1.9.7</version>
|
<version>2.0</version>
|
||||||
<name>Yum</name>
|
<name>Yum</name>
|
||||||
<description>Minecraft 服务器插件管理系统</description>
|
<description>Minecraft 服务器插件管理系统</description>
|
||||||
<build>
|
<build>
|
||||||
@ -54,8 +54,9 @@
|
|||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
<properties>
|
<properties>
|
||||||
<jenkins.url>http://ci.citycraft.cn:8080</jenkins.url>
|
<jenkins.url>http://hs.yumc.pw:8080</jenkins.url>
|
||||||
<update.description>&c去除离线缓存 修复版本更新模块...</update.description>
|
<update.description>&a全新 2.0 版本 震撼发布...</update.description>
|
||||||
|
<update.changes>&a精简大量代码...;&a服务器启动后自动检查可更新插件...;&a优化检测流程...</update.changes>
|
||||||
<env.GIT_COMMIT>DEBUG</env.GIT_COMMIT>
|
<env.GIT_COMMIT>DEBUG</env.GIT_COMMIT>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
</properties>
|
</properties>
|
||||||
|
@ -3,13 +3,14 @@
|
|||||||
*/
|
*/
|
||||||
package cn.citycraft.Yum;
|
package cn.citycraft.Yum;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import cn.citycraft.PluginHelper.config.FileConfig;
|
import cn.citycraft.PluginHelper.config.FileConfig;
|
||||||
import cn.citycraft.PluginHelper.utils.VersionChecker;
|
import cn.citycraft.PluginHelper.utils.VersionChecker;
|
||||||
import cn.citycraft.Yum.api.YumAPI;
|
import cn.citycraft.Yum.api.YumAPI;
|
||||||
|
import cn.citycraft.Yum.commands.FileCommand;
|
||||||
import cn.citycraft.Yum.commands.YumCommand;
|
import cn.citycraft.Yum.commands.YumCommand;
|
||||||
import cn.citycraft.Yum.file.commands.FileCommand;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MC插件仓库
|
* MC插件仓库
|
||||||
@ -26,12 +27,12 @@ public class Yum extends JavaPlugin {
|
|||||||
new YumCommand(this);
|
new YumCommand(this);
|
||||||
new FileCommand(this);
|
new FileCommand(this);
|
||||||
new VersionChecker(this);
|
new VersionChecker(this);
|
||||||
YumAPI.updaterepo();
|
YumAPI.updaterepo(Bukkit.getConsoleSender());
|
||||||
|
YumAPI.updatecheck(Bukkit.getConsoleSender());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoad() {
|
public void onLoad() {
|
||||||
config = new FileConfig(this);
|
config = new FileConfig(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,11 +25,8 @@ import cn.citycraft.Yum.manager.RepositoryManager;
|
|||||||
*/
|
*/
|
||||||
public class YumAPI {
|
public class YumAPI {
|
||||||
private static DownloadManager download;
|
private static DownloadManager download;
|
||||||
|
|
||||||
private static Plugin main;
|
private static Plugin main;
|
||||||
|
|
||||||
private static PluginsManager plugman;
|
private static PluginsManager plugman;
|
||||||
|
|
||||||
private static RepositoryManager repo;
|
private static RepositoryManager repo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -82,6 +79,26 @@ public class YumAPI {
|
|||||||
return repo;
|
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,22 +243,10 @@ public class YumAPI {
|
|||||||
* 命令发送者
|
* 命令发送者
|
||||||
*/
|
*/
|
||||||
public static void updateall(final CommandSender sender) {
|
public static void updateall(final CommandSender sender) {
|
||||||
final List<Plugin> ulist = new ArrayList<>();
|
main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||||
try {
|
@Override
|
||||||
for (final Entry<String, Plugin> updateplugin : UpdatePlugin.getUpdateList().entrySet()) {
|
public void run() {
|
||||||
ulist.add(updateplugin.getValue());
|
final List<Plugin> ulist = getUpdateList(sender);
|
||||||
}
|
|
||||||
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());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (ulist.size() > 0) {
|
if (ulist.size() > 0) {
|
||||||
for (final Plugin updateplugin : ulist) {
|
for (final Plugin updateplugin : ulist) {
|
||||||
sender.sendMessage("§d一键更新: §a开始更新" + updateplugin.getName() + "!");
|
sender.sendMessage("§d一键更新: §a开始更新" + updateplugin.getName() + "!");
|
||||||
@ -253,6 +258,26 @@ public class YumAPI {
|
|||||||
sender.sendMessage("§6更新: §e未找到需要更新且可以用Yum处理的插件!");
|
sender.sendMessage("§6更新: §e未找到需要更新且可以用Yum处理的插件!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查是否有可更新插件
|
||||||
|
*
|
||||||
|
* @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更新所有插件!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 100);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新插件
|
* 更新插件
|
||||||
@ -300,7 +325,6 @@ public class YumAPI {
|
|||||||
if (pi != null) {
|
if (pi != null) {
|
||||||
final File pFile = new File(Bukkit.getUpdateFolderFile(), plugman.getPluginFile(plugin).getName());
|
final File pFile = new File(Bukkit.getUpdateFolderFile(), plugman.getPluginFile(plugin).getName());
|
||||||
if (download.run(sender, pi.getUrl(sender, version), pFile)) {
|
if (download.run(sender, pi.getUrl(sender, version), pFile)) {
|
||||||
|
|
||||||
if (!oneKeyUpdate) {
|
if (!oneKeyUpdate) {
|
||||||
sender.sendMessage("§6更新: §e已下载 " + plugin.getName() + " 插件到服务器更新文件夹");
|
sender.sendMessage("§6更新: §e已下载 " + plugin.getName() + " 插件到服务器更新文件夹");
|
||||||
sender.sendMessage("§6更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");
|
sender.sendMessage("§6更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");
|
||||||
@ -316,11 +340,11 @@ public class YumAPI {
|
|||||||
/**
|
/**
|
||||||
* 更新Yum源数据
|
* 更新Yum源数据
|
||||||
*/
|
*/
|
||||||
public static void updaterepo() {
|
public static void updaterepo(final CommandSender sender) {
|
||||||
main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() {
|
main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
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,7 +1,28 @@
|
|||||||
package cn.citycraft.Yum.commands;
|
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.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命令基类
|
* Yum命令基类
|
||||||
@ -9,21 +30,304 @@ import cn.citycraft.Yum.Yum;
|
|||||||
* @since 2016年1月9日 上午10:02:24
|
* @since 2016年1月9日 上午10:02:24
|
||||||
* @author 喵♂呜
|
* @author 喵♂呜
|
||||||
*/
|
*/
|
||||||
public class YumCommand {
|
public class YumCommand implements HandlerCommands {
|
||||||
|
Yum main;
|
||||||
|
RepositoryManager repo;
|
||||||
|
PluginsManager plugman;
|
||||||
|
|
||||||
public YumCommand(final Yum yum) {
|
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.setAllCommandOnlyConsole(yum.config.getBoolean("onlyCommandConsole", false));
|
||||||
cmdhandler.registerCommand(new CommandList(yum));
|
cmdhandler.registerCommands(this);
|
||||||
cmdhandler.registerCommand(new CommandInstall(yum));
|
}
|
||||||
cmdhandler.registerCommand(new CommandUpdate(yum));
|
|
||||||
cmdhandler.registerCommand(new CommandUpdateAll(yum));
|
@HandlerCommand(name = "delete", aliases = { "del" }, minimumArguments = 1, description = "删除插件", possibleArguments = "<插件名称>")
|
||||||
cmdhandler.registerCommand(new CommandDelete(yum));
|
public void delete(final InvokeCommandEvent e) {
|
||||||
cmdhandler.registerCommand(new CommandFullDelete(yum));
|
final String pluginname = e.getArgs()[0];
|
||||||
cmdhandler.registerCommand(new CommandInfo(yum));
|
final CommandSender sender = e.getSender();
|
||||||
cmdhandler.registerCommand(new CommandRepo(yum));
|
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
|
||||||
cmdhandler.registerCommand(new CommandReload(yum));
|
if (plugin != null) {
|
||||||
cmdhandler.registerCommand(new CommandLoad(yum));
|
final String version = StringUtils.substring(plugin.getDescription().getVersion(), 0, 15);
|
||||||
cmdhandler.registerCommand(new CommandUnload(yum));
|
if (plugman.deletePlugin(sender, plugin)) {
|
||||||
cmdhandler.registerCommand(new CommandUpgrade(yum));
|
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;
|
package cn.citycraft.Yum.manager;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandSender;
|
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.TagInfo;
|
||||||
import cn.citycraft.Yum.manager.RepoSerialization.URLType;
|
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 static final String NMSVersion = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
|
||||||
|
|
||||||
public String branch;
|
public String branch;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package cn.citycraft.Yum.manager;
|
package cn.citycraft.Yum.manager;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -11,7 +12,7 @@ import cn.citycraft.PluginHelper.jsonresult.JsonHandle;
|
|||||||
import cn.citycraft.PluginHelper.utils.IOUtil;
|
import cn.citycraft.PluginHelper.utils.IOUtil;
|
||||||
import cn.citycraft.Yum.manager.RepoSerialization.Repositories;
|
import cn.citycraft.Yum.manager.RepoSerialization.Repositories;
|
||||||
|
|
||||||
public class RepoCache {
|
public class RepoCache implements Serializable {
|
||||||
PluginHelperLogger logger = PluginHelperLogger.getLogger();
|
PluginHelperLogger logger = PluginHelperLogger.getLogger();
|
||||||
Map<String, PluginInfo> plugins = new HashMap<String, PluginInfo>();
|
Map<String, PluginInfo> plugins = new HashMap<String, PluginInfo>();
|
||||||
Map<String, Repositories> repos = new HashMap<String, Repositories>();
|
Map<String, Repositories> repos = new HashMap<String, Repositories>();
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
package cn.citycraft.Yum.manager;
|
package cn.citycraft.Yum.manager;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -13,7 +14,7 @@ import java.util.List;
|
|||||||
* @since 2015年8月31日下午7:41:53
|
* @since 2015年8月31日下午7:41:53
|
||||||
*/
|
*/
|
||||||
public class RepoSerialization {
|
public class RepoSerialization {
|
||||||
public class PackageInfo {
|
public class PackageInfo implements Serializable {
|
||||||
public String name;
|
public String name;
|
||||||
public List<Plugin> plugins = new ArrayList<>();
|
public List<Plugin> plugins = new ArrayList<>();
|
||||||
public String pom;
|
public String pom;
|
||||||
@ -21,7 +22,7 @@ public class RepoSerialization {
|
|||||||
public URLType type;
|
public URLType type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Plugin {
|
public class Plugin implements Serializable {
|
||||||
public String artifactId;
|
public String artifactId;
|
||||||
public String branch;
|
public String branch;
|
||||||
public String description;
|
public String description;
|
||||||
@ -34,18 +35,18 @@ public class RepoSerialization {
|
|||||||
public URLType type;
|
public URLType type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Repositories {
|
public class Repositories implements Serializable {
|
||||||
public String name;
|
public String name;
|
||||||
public List<Repository> repos;
|
public List<Repository> repos;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Repository {
|
public class Repository implements Serializable {
|
||||||
public String id;
|
public String id;
|
||||||
public URLType type;
|
public URLType type;
|
||||||
public String url;
|
public String url;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TagInfo {
|
public class TagInfo implements Serializable {
|
||||||
public String tag;
|
public String tag;
|
||||||
public String version;
|
public String version;
|
||||||
public URLType type;
|
public URLType type;
|
||||||
|
Loading…
Reference in New Issue
Block a user