+ tcloud 初步测试成功
This commit is contained in:
@@ -3,20 +3,22 @@ package me.skymc.taboolib.cloud;
|
||||
import com.ilummc.tlib.resources.TLocale;
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import me.skymc.taboolib.cloud.expansion.Expansion;
|
||||
import me.skymc.taboolib.cloud.expansion.ExpansionType;
|
||||
import me.skymc.taboolib.commands.internal.BaseMainCommand;
|
||||
import me.skymc.taboolib.commands.internal.BaseSubCommand;
|
||||
import me.skymc.taboolib.commands.internal.TCommand;
|
||||
import me.skymc.taboolib.commands.internal.plugin.TLibLocale;
|
||||
import me.skymc.taboolib.commands.internal.type.CommandArgument;
|
||||
import me.skymc.taboolib.commands.internal.type.CommandRegister;
|
||||
import me.skymc.taboolib.common.util.SimpleIterator;
|
||||
import me.skymc.taboolib.fileutils.FileUtils;
|
||||
import me.skymc.taboolib.plugin.PluginUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.util.NumberConversions;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -109,6 +111,7 @@ public class TCloudCommand extends BaseMainCommand {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@CommandRegister(priority = 3)
|
||||
BaseSubCommand download = new BaseSubCommand() {
|
||||
@Override
|
||||
@@ -135,15 +138,105 @@ public class TCloudCommand extends BaseMainCommand {
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.DOWNLOAD.EXPANSION-EXISTS", args[0]);
|
||||
} else {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(TabooLib.instance(), () -> {
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.DOWNLOAD.DOWNLOAD-START", args[0], expansion.getFile().getPath(), expansion.getLink());
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.DOWNLOAD.DOWNLOAD-START", args[0], expansion.getLink());
|
||||
FileUtils.download(expansion.getLink(), expansion.getFile());
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.DOWNLOAD.DOWNLOAD-SUCCESS", args[0]);
|
||||
Bukkit.getScheduler().runTask(TabooLib.instance(), () -> PluginUtils.load(expansion.getName()));
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@CommandRegister(priority = 4)
|
||||
BaseSubCommand update = new BaseSubCommand() {
|
||||
@Override
|
||||
public String getLabel() {
|
||||
return "update";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return TLibLocale.description("TCLOUD", "UPDATE");
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommandArgument[] getArguments() {
|
||||
return TLibLocale.arguments("TCLOUD", "UPDATE", 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
Expansion expansion = TCloudLoader.getExpansion(args[0]);
|
||||
if (expansion == null) {
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.UPDATE.EXPANSION-NOT-FOUND", args[0]);
|
||||
} else if (!TCloudLoader.isExpansionExists(expansion)) {
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.UPDATE.EXPANSION-NOT-EXISTS", args[0]);
|
||||
} else if (!expansion.canUpdate()) {
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.UPDATE.EXPANSION-NO-UPDATE", args[0]);
|
||||
} else {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(TabooLib.instance(), () -> {
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.UPDATE.UPDATE-START", args[0], expansion.getVersion(), expansion.getLink());
|
||||
FileUtils.download(expansion.getLink(), expansion.getFile());
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.UPDATE.UPDATE-SUCCESS", args[0]);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@CommandRegister(priority = 5)
|
||||
BaseSubCommand list = new BaseSubCommand() {
|
||||
@Override
|
||||
public String getLabel() {
|
||||
return "list";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return TLibLocale.description("TCLOUD", "LIST");
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommandArgument[] getArguments() {
|
||||
return new CommandArgument[] {
|
||||
TLibLocale.argument("TCLOUD", "LIST", 0),
|
||||
TLibLocale.argument("TCLOUD", "LIST", 1, false)
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
ExpansionType type;
|
||||
switch (args[0].toLowerCase()) {
|
||||
case "plugins":
|
||||
type = ExpansionType.PLUGIN;
|
||||
break;
|
||||
case "internal":
|
||||
type = ExpansionType.INTERNAL;
|
||||
break;
|
||||
default:
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.LIST.INVALID-TYPE.0");
|
||||
return;
|
||||
}
|
||||
Map<String, Expansion> expansions = type == ExpansionType.PLUGIN ? TCloudLoader.getExpansionPlugins() : TCloudLoader.getExpansionInternal();
|
||||
int page = args.length < 2 ? 1 : NumberConversions.toInt(args[1]);
|
||||
if (page < 1 || page > (expansions.size() / 5) + 1) {
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.LIST.INVALID-TYPE.1");
|
||||
return;
|
||||
}
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.LIST.LIST-HEAD", type.name(), String.valueOf(page), String.valueOf((expansions.size() / 5) + 1));
|
||||
int i = (page - 1) * 5;
|
||||
for (Map.Entry<String, Expansion> entry : new SimpleIterator(expansions).mapIterator((page - 1) * 5, page * 5)) {
|
||||
if (!TCloudLoader.isExpansionExists(entry.getValue())) {
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.LIST.LIST-EXPANSION.0", String.valueOf(++i), entry.getValue().getName(), entry.getValue().getDescription());
|
||||
} else if (entry.getValue().canUpdate()) {
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.LIST.LIST-EXPANSION.1", String.valueOf(++i), entry.getValue().getName(), entry.getValue().getDescription());
|
||||
} else {
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.LIST.LIST-EXPANSION.2", String.valueOf(++i), entry.getValue().getName(), entry.getValue().getDescription());
|
||||
}
|
||||
}
|
||||
TLocale.sendTo(sender, "COMMANDS.TCLOUD.LIST.LIST-BOTTOM");
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public String getCommandTitle() {
|
||||
return TLocale.asString("COMMANDS.TCLOUD.COMMAND-TITLE");
|
||||
|
||||
@@ -49,16 +49,12 @@ public class TCloudLoader {
|
||||
TLocale.Logger.error("TCLOUD.LIST-CONNECT-FAILED");
|
||||
return;
|
||||
}
|
||||
TLocale.Logger.info("TCLOUD.LIST-CONNECT-SUCCESS", String.valueOf(System.currentTimeMillis() - time));
|
||||
time = System.currentTimeMillis();
|
||||
try {
|
||||
latestJsonObject = new JsonParser().parse(latestJsonOrigin).getAsJsonObject();
|
||||
} catch (Exception e) {
|
||||
TLocale.Logger.info("TCLOUD.LIST-PARSE-FAILED", e.getMessage());
|
||||
return;
|
||||
}
|
||||
TLocale.Logger.info("TCLOUD.LIST-PARSE-SUCCESS", String.valueOf(System.currentTimeMillis() - time));
|
||||
time = System.currentTimeMillis();
|
||||
if (latestJsonObject.has("plugins")) {
|
||||
for (Map.Entry<String, JsonElement> pluginEntry : latestJsonObject.getAsJsonObject("plugins").entrySet()) {
|
||||
try {
|
||||
|
||||
@@ -8,6 +8,8 @@ import com.ilummc.tlib.resources.TLocale;
|
||||
import me.skymc.taboolib.cloud.TCloudLoader;
|
||||
import me.skymc.taboolib.fileutils.FileUtils;
|
||||
import me.skymc.taboolib.string.ArrayUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.util.NumberConversions;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.stream.IntStream;
|
||||
@@ -94,4 +96,11 @@ public class Expansion {
|
||||
public File getFile() {
|
||||
return type == ExpansionType.INTERNAL ? new File(TCloudLoader.getExpansionInternalFolder(), "[TCLOUD] " + name + ".jar") : new File("plugins/[TCLOUD] " + name + ".jar");
|
||||
}
|
||||
|
||||
public boolean canUpdate() {
|
||||
if (!TCloudLoader.isExpansionExists(this)) {
|
||||
return false;
|
||||
}
|
||||
return type == ExpansionType.PLUGIN && NumberConversions.toDouble(Bukkit.getPluginManager().getPlugin(name).getDescription().getVersion()) < NumberConversions.toDouble(version);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,7 +100,6 @@ public abstract class BaseSubCommand {
|
||||
* @return String
|
||||
*/
|
||||
public String getCommandString(String label) {
|
||||
String stringBuilder = Arrays.stream(getArguments()).map(parameter -> parameter.toString() + " ").collect(Collectors.joining());
|
||||
return TLocale.asString("COMMANDS.INTERNAL.COMMAND-HELP", label, getLabel(), stringBuilder.trim(), getDescription());
|
||||
return TLocale.asString("COMMANDS.INTERNAL.COMMAND-HELP", label, getLabel(), Arrays.stream(getArguments()).map(parameter -> parameter.toString() + " ").collect(Collectors.joining()), getDescription());
|
||||
}
|
||||
}
|
||||
@@ -26,4 +26,8 @@ public class TLibLocale {
|
||||
public static CommandArgument argument(String name, String label, int index) {
|
||||
return new CommandArgument(TLocale.asString("COMMANDS." + name + "." + label + ".ARGUMENTS." + index));
|
||||
}
|
||||
|
||||
public static CommandArgument argument(String name, String label, int index, boolean required) {
|
||||
return new CommandArgument(TLocale.asString("COMMANDS." + name + "." + label + ".ARGUMENTS." + index), required);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package me.skymc.taboolib.common.util;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author sky
|
||||
* @Since 2018-10-01 16:19
|
||||
*/
|
||||
public class SimpleIterator {
|
||||
|
||||
private final Object container;
|
||||
|
||||
public SimpleIterator(Object container) {
|
||||
this.container = container;
|
||||
}
|
||||
|
||||
public List<Map.Entry> mapIterator(int start, int end) {
|
||||
List<Map.Entry> iterator = Lists.newArrayList();
|
||||
Map container = (Map) this.container;
|
||||
int loop = 0;
|
||||
for (Object entry : container.entrySet()) {
|
||||
if (loop++ >= start) {
|
||||
if (loop <= end) {
|
||||
iterator.add((Map.Entry) entry);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return iterator;
|
||||
}
|
||||
|
||||
public List listIterator(int start, int end) {
|
||||
List iterator = Lists.newArrayList();
|
||||
List container = (List) this.container;
|
||||
int loop = 0;
|
||||
for (Object entry : container) {
|
||||
if (loop++ >= start) {
|
||||
if (loop <= end) {
|
||||
iterator.add(entry);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return iterator;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user