命令系统重做

This commit is contained in:
坏黑
2018-05-10 00:44:57 +08:00
parent b14164fbbd
commit 41e53b9165
100 changed files with 1765 additions and 707 deletions

View File

@@ -1,65 +0,0 @@
package me.skymc.taboolib.commands;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.sub.*;
import me.skymc.taboolib.commands.sub.cycle.CycleCommand;
import me.skymc.taboolib.commands.sub.itemlist.ItemListCommand;
import me.skymc.taboolib.commands.sub.shell.ShellCommand;
import me.skymc.taboolib.commands.sub.sounds.SoundsCommand;
import me.skymc.taboolib.inventory.ItemUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
public class MainCommands implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (args.length == 0 || "help".equalsIgnoreCase(args[0])) {
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.HELP", label);
} else if ("save".equalsIgnoreCase(args[0])) {
new SaveCommand(sender, args);
} else if ("enchants".equalsIgnoreCase(args[0])) {
new EnchantCommand(sender, args);
} else if ("potions".equalsIgnoreCase(args[0])) {
new PotionCommand(sender, args);
} else if ("flags".equalsIgnoreCase(args[0])) {
new FlagCommand(sender, args);
} else if ("attributes".equalsIgnoreCase(args[0])) {
new AttributesCommand(sender, args);
} else if ("slots".equalsIgnoreCase(args[0])) {
new SlotCommand(sender, args);
} else if ("importdata".equalsIgnoreCase(args[0])) {
new ImportCommand(sender, args);
} else if ("iteminfo".equalsIgnoreCase(args[0])) {
new InfoCommand(sender, args);
} else if ("itemlist".equalsIgnoreCase(args[0])) {
new ItemListCommand(sender, args);
} else if ("item".equalsIgnoreCase(args[0]) || "i".equalsIgnoreCase(args[0])) {
new ItemCommand(sender, args);
} else if ("setvariable".equalsIgnoreCase(args[0])) {
new VariableSetCommand(sender, args);
} else if ("getvariable".equalsIgnoreCase(args[0])) {
new VariableGetCommand(sender, args);
} else if ("shell".equalsIgnoreCase(args[0]) || "s".equalsIgnoreCase(args[0])) {
new ShellCommand(sender, args);
} else if ("cycle".equalsIgnoreCase(args[0]) || "c".equalsIgnoreCase(args[0])) {
new CycleCommand(sender, args);
} else if ("sounds".equalsIgnoreCase(args[0])) {
new SoundsCommand(sender, args);
} else if ("tagprefix".equalsIgnoreCase(args[0])) {
new TagPrefixCommand(sender, args);
} else if ("tagsuffix".equalsIgnoreCase(args[0])) {
new TagSuffixCommand(sender, args);
} else if ("tagdelete".equalsIgnoreCase(args[0])) {
new TagDeleteCommand(sender, args);
} else if ("itemreload".equalsIgnoreCase(args[0]) || "ireload".equalsIgnoreCase(args[0])) {
ItemUtils.reloadItemCache();
ItemUtils.reloadItemName();
TLocale.sendTo(sender, "COMMANDS.RELOAD.SUCCESS-NORMAL");
} else {
TLocale.sendTo(sender, "COMMANDS.PARAMETER.UNKNOWN");
}
return true;
}
}

View File

@@ -6,6 +6,7 @@ import org.bukkit.entity.Player;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@Deprecated
public abstract class SubCommand {
public CommandSender sender;

View File

@@ -0,0 +1,755 @@
package me.skymc.taboolib.commands;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.internal.BaseMainCommand;
import me.skymc.taboolib.commands.internal.BaseSubCommand;
import me.skymc.taboolib.commands.internal.type.CommandArgument;
import me.skymc.taboolib.commands.internal.type.CommandRegister;
import me.skymc.taboolib.commands.taboolib.*;
import me.skymc.taboolib.inventory.ItemUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
/**
* @Author sky
* @Since 2018-05-09 21:38
*/
public class TabooLibMainCommand extends BaseMainCommand {
@Override
public String getCommandTitle() {
return TLocale.asString("COMMANDS.TABOOLIB.COMMAND-TITLE");
}
@CommandRegister(priority = 1)
void save() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "save";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.SAVE.DESCRIPTION");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[]{new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.SAVE.ARGUMENTS.0"))};
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new SaveCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 2)
void item() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "item";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.ITEM.DESCRIPTION");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[]{
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.ITEM.ARGUMENTS.0")),
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.ITEM.ARGUMENTS.1"), false),
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.ITEM.ARGUMENTS.2"), false)
};
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new ItemCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 3)
void itemInfo() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "itemInfo";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.ITEMLIST.DESCRIPTION");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[0];
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new ItemListCommand(sender, args);
}
});
}
@CommandRegister(priority = 4)
void itemReload() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "itemReload";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.ITEMRELOAD.DESCRIPTION");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[0];
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
ItemUtils.reloadItemCache();
ItemUtils.reloadItemName();
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.ITEMRELOAD.SUCCESS-RELOAD");
}
});
}
@CommandRegister(priority = 5)
void emptyLine1() {
registerSubCommand(null);
}
@CommandRegister(priority = 6)
void attributes() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "attributes";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.ATTRIBUTES.DESCRIPTION");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[0];
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new AttributesCommand(sender, args);
}
});
}
@CommandRegister(priority = 7)
void enchants() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "enchants";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.ENCHANTS.DESCRIPTION");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[0];
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new EnchantCommand(sender, args);
}
});
}
@CommandRegister(priority = 8)
void potions() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "potions";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.POTIONS.DESCRIPTION");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[0];
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new PotionCommand(sender, args);
}
});
}
@CommandRegister(priority = 9)
void flags() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "flags";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.FLAGS.DESCRIPTION");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[0];
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new FlagCommand(sender, args);
}
});
}
@CommandRegister(priority = 10)
void slots() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "slots";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.SLOTS.DESCRIPTION");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[0];
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new AttributesCommand(sender, args);
}
});
}
@CommandRegister(priority = 11)
void sounds() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "sounds";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.SOUNDS.DESCRIPTION");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[0];
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new SoundsCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 12)
void emptyLine2() {
registerSubCommand(null);
}
@CommandRegister(priority = 13)
void getVariable() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "getVariable";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.VARIABLE.DESCRIPTION.GET");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[]{
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.VARIABLE.ARGUMENTS.GET.0")),
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.VARIABLE.ARGUMENTS.GET.1"))
};
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new VariableGetCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 13.1)
void setVariable() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "setVariable";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.VARIABLE.DESCRIPTION.SET");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[]{
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.VARIABLE.ARGUMENTS.SET.0")),
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.VARIABLE.ARGUMENTS.SET.1")),
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.VARIABLE.ARGUMENTS.SET.2"))
};
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new VariableSetCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 13.2)
void emptyLine3() {
registerSubCommand(null);
}
@CommandRegister(priority = 13.3)
void cycleList() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "cycleList";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.TIMECYCLE.DESCRIPTION.LIST");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[0];
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new CycleListCommand(sender, args);
}
});
}
@CommandRegister(priority = 14)
void cycleInfo() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "cycleInfo";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.TIMECYCLE.DESCRIPTION.INFO");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[]{
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.TIMECYCLE.ARGUMENTS.INFO.0"))
};
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new CycleInfoCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 15)
void cycleReset() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "cycleReset";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.TIMECYCLE.DESCRIPTION.RESET");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[]{
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.TIMECYCLE.ARGUMENTS.RESET.0"))
};
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new CycleResetCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 16)
void cycleUpdate() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "cycleUpdate";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.TIMECYCLE.DESCRIPTION.UPDATE");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[]{
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.TIMECYCLE.ARGUMENTS.UPDATE.0"))
};
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new CycleUpdateCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 17)
void emptyLine4() {
registerSubCommand(null);
}
@CommandRegister(priority = 18)
void shellLoad() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "shellLoad";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.JAVASHELL.DESCRIPTION.LOAD");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[]{
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.JAVASHELL.ARGUMENTS.LOAD.0"))
};
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new ShellLoadCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 19)
void shellUnload() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "shellUnload";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.JAVASHELL.DESCRIPTION.UNLOAD");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[]{
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.JAVASHELL.ARGUMENTS.UNLOAD.0"))
};
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new ShellUnloadCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 20)
void emptyLine5() {
registerSubCommand(null);
}
@CommandRegister(priority = 20.5)
void tagDisplay() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "tagDisplay";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.PLAYERTAG.DESCRIPTION.DISPLAY");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[]{
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.PLAYERTAG.ARGUMENTS.DISPLAY.0")),
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.PLAYERTAG.ARGUMENTS.DISPLAY.1"))
};
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new TagDisplayCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 21)
void tagPrefix() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "tagPrefix";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.PLAYERTAG.DESCRIPTION.PREFIX");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[]{
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.PLAYERTAG.ARGUMENTS.PREFIX.0")),
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.PLAYERTAG.ARGUMENTS.PREFIX.1"))
};
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new TagPrefixCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 22)
void tagSuffix() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "tagSuffix";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.PLAYERTAG.DESCRIPTION.SUFFIX");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[]{
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.PLAYERTAG.ARGUMENTS.SUFFIX.0")),
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.PLAYERTAG.ARGUMENTS.SUFFIX.1"))
};
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new TagSuffixCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 23)
void tagDelete() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "tagDelete";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.PLAYERTAG.DESCRIPTION.DELETE");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[]{
new CommandArgument(TLocale.asString("COMMANDS.TABOOLIB.PLAYERTAG.ARGUMENTS.DELETE.0"))
};
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new TagDeleteCommand(sender, args);
}
@Override
public boolean ignoredLabel() {
return false;
}
});
}
@CommandRegister(priority = 24)
void emptyLine6() {
registerSubCommand(null);
}
@CommandRegister(priority = 25)
void importData() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
return "importData";
}
@Override
public String getDescription() {
return TLocale.asString("COMMANDS.TABOOLIB.IMPORTDATA.DESCRIPTION");
}
@Override
public CommandArgument[] getArguments() {
return new CommandArgument[0];
}
@Override
public void onCommand(CommandSender sender, Command command, String label, String[] args) {
new ImportCommand(sender, args);
}
});
}
}

View File

@@ -0,0 +1,162 @@
package me.skymc.taboolib.commands.internal;
import com.google.common.base.Preconditions;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.Main;
import me.skymc.taboolib.TabooLib;
import me.skymc.taboolib.commands.internal.type.CommandRegister;
import me.skymc.taboolib.commands.internal.type.CommandType;
import me.skymc.taboolib.string.ArrayUtils;
import me.skymc.taboolib.string.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.command.*;
import org.bukkit.scheduler.BukkitRunnable;
import java.lang.reflect.Method;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
/**
* @Author sky
* @Since 2018-05-07 21:38
*/
public abstract class BaseMainCommand implements IMainCommand, CommandExecutor, TabExecutor {
private PluginCommand registerCommand;
private List<Class<?>> linkClasses = new CopyOnWriteArrayList<>();
private List<BaseSubCommand> subCommands = new CopyOnWriteArrayList<>();
public static BaseMainCommand createCommandExecutor(String command, BaseMainCommand baseMainCommand) {
Preconditions.checkArgument(Bukkit.getPluginCommand(command) != null, "PluginCommand \"" + command + "\"not found");
Preconditions.checkArgument(baseMainCommand != null, "Executor cannot be null");
Preconditions.checkArgument(baseMainCommand.getClass() != BaseMainCommand.class, "Executor can not be \"BaseMainCommand.class\"");
baseMainCommand.setRegisterCommand(Bukkit.getPluginCommand(command));
baseMainCommand.getRegisterCommand().setExecutor(baseMainCommand);
baseMainCommand.getRegisterCommand().setTabCompleter(baseMainCommand);
baseMainCommand.getLinkClasses().add(baseMainCommand.getClass());
loadCommandRegister(baseMainCommand);
return baseMainCommand;
}
public static void loadCommandRegister(BaseMainCommand baseMainCommand) {
List<Method> methods = new ArrayList<>();
baseMainCommand.getLinkClasses().forEach(clazz -> Arrays.stream(clazz.getDeclaredMethods()).filter(method -> method.getAnnotation(CommandRegister.class) != null).forEach(methods::add));
if (methods.size() > 0) {
methods.sort(Comparator.comparingDouble(a -> a.getAnnotation(CommandRegister.class).priority()));
methods.forEach(x -> {
try {
x.setAccessible(true);
x.invoke(baseMainCommand);
} catch (Exception ignored) {
}
});
}
if (methods.size() > 0) {
TLocale.Logger.info("COMMANDS.INTERNAL.COMMAND-REGISTER", baseMainCommand.getRegisterCommand().getPlugin().getName(), baseMainCommand.getRegisterCommand().getName(), String.valueOf(methods.size()));
}
}
public void setRegisterCommand(PluginCommand registerCommand) {
this.registerCommand = registerCommand;
}
public PluginCommand getRegisterCommand() {
return registerCommand;
}
public List<Class<?>> getLinkClasses() {
return linkClasses;
}
public List<BaseSubCommand> getSubCommands() {
return subCommands;
}
public void registerSubCommand(BaseSubCommand subCommand) {
if (subCommand != null) {
Preconditions.checkArgument(subCommand.getLabel() != null, "Command label can not be null");
Preconditions.checkArgument(subCommand.getDescription() != null, "Command description can not be null");
Preconditions.checkArgument(subCommand.getArguments() != null, "Command arguments can not be null");
}
subCommands.add(subCommand);
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (args.length == 0) {
helpCommand(sender, label);
} else {
for (BaseSubCommand subCommand : subCommands) {
if (subCommand == null || !args[0].equalsIgnoreCase(subCommand.getLabel())) {
continue;
}
if (!isConfirmType(sender, subCommand.getType())) {
TLocale.sendTo(sender, "COMMANDS.INTERNAL.ONLY-PLAYER", args[0], TLocale.asString("COMMANDS.INTERNAL.TYPE-" + subCommand.getType()));
return true;
}
String[] subCommandArgs = ArrayUtils.removeFirst(args);
if (subCommand.isParameterConform(subCommandArgs)) {
subCommand.onCommand(sender, command, label, subCommand.ignoredLabel() ? subCommandArgs : args);
} else {
TLocale.sendTo(sender, "COMMANDS.INTERNAL.ERROR-USAGE", args[0], subCommand.getCommandString(label));
}
return true;
}
new BukkitRunnable() {
@Override
public void run() {
List<BaseSubCommand> commandCompute = subCommands.stream().filter(Objects::nonNull).sorted((b, a) -> Double.compare(StringUtils.similarDegree(args[0], a.getLabel()), StringUtils.similarDegree(args[0], b.getLabel()))).collect(Collectors.toList());
if (commandCompute.size() > 0) {
TLocale.sendTo(sender, "COMMANDS.INTERNAL.ERROR-COMMAND", args[0], commandCompute.get(0).getCommandString(label).trim());
}
}
}.runTaskAsynchronously(Main.getInst());
}
return true;
}
@Override
public List<String> onTabComplete(CommandSender commandSender, Command command, String s, String[] args) {
return args.length == 1 ? subCommands.stream().filter(internalCommandExecutor -> internalCommandExecutor != null && (args[0].isEmpty() || internalCommandExecutor.getLabel().startsWith(args[0]))).map(ISubCommand::getLabel).collect(Collectors.toList()) : null;
}
@Override
public String toString() {
return "registerCommand=" + "BaseMainCommand{" + registerCommand + ", linkClasses=" + linkClasses + ", subCommands=" + subCommands + '}';
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof BaseMainCommand)) {
return false;
}
BaseMainCommand that = (BaseMainCommand) o;
return Objects.equals(getLinkClasses(), that.getLinkClasses()) && Objects.equals(getRegisterCommand(), that.getRegisterCommand()) && Objects.equals(getSubCommands(), that.getSubCommands());
}
@Override
public int hashCode() {
return Objects.hash(getRegisterCommand(), getLinkClasses(), getSubCommands());
}
private String getEmptyLine() {
return TabooLib.getVerint() < 10800 ? "~" : "";
}
private boolean isConfirmType(CommandSender sender, CommandType commandType) {
return commandType == CommandType.ALL || sender instanceof ConsoleCommandSender && commandType == CommandType.CONSOLE;
}
private void helpCommand(CommandSender sender, String label) {
sender.sendMessage(getEmptyLine());
sender.sendMessage(getCommandTitle());
sender.sendMessage(getEmptyLine());
subCommands.stream().map(subCommand -> subCommand == null ? getEmptyLine() : subCommand.getCommandString(label)).forEach(sender::sendMessage);
sender.sendMessage(getEmptyLine());
}
}

View File

@@ -1,15 +1,22 @@
package me.skymc.taboolib.commands.internal;
import me.skymc.taboolib.commands.internal.type.CommandArgument;
import me.skymc.taboolib.commands.internal.type.CommandType;
import java.util.stream.IntStream;
/**
* @author Bkm016
* @since 2018-04-17
*/
public abstract class InternalSubCommandExecutor implements InternalSubCommand {
public abstract class BaseSubCommand implements ISubCommand {
public InternalSubCommandType getType() {
return InternalSubCommandType.ALL;
public CommandType getType() {
return CommandType.ALL;
}
public boolean ignoredLabel() {
return true;
}
public boolean requiredPlayer() {
@@ -27,7 +34,7 @@ public abstract class InternalSubCommandExecutor implements InternalSubCommand {
stringBuilder.append(" ");
stringBuilder.append(getLabel());
stringBuilder.append(" ");
for (InternalArgument parameter : getArguments()) {
for (CommandArgument parameter : getArguments()) {
stringBuilder.append(parameter.toString());
stringBuilder.append(" ");
}
@@ -35,4 +42,4 @@ public abstract class InternalSubCommandExecutor implements InternalSubCommand {
stringBuilder.append(getDescription());
return stringBuilder.toString();
}
}
}

View File

@@ -4,8 +4,13 @@ package me.skymc.taboolib.commands.internal;
* @Author sky
* @Since 2018-05-07 21:36
*/
public interface InternalCommand {
public interface IMainCommand {
/**
* 指令标题
*
* @return 文本
*/
String getCommandTitle();
}

View File

@@ -0,0 +1,44 @@
package me.skymc.taboolib.commands.internal;
import me.skymc.taboolib.commands.internal.type.CommandArgument;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
/**
* @author Bkm016
* @since 2018-04-17
*/
public interface ISubCommand {
/**
* 指令名
*
* @return 文本
*/
String getLabel();
/**
* 指令描述
*
* @return 文本
*/
String getDescription();
/**
* 指令参数
*
* @return {@link CommandArgument}
*/
CommandArgument[] getArguments();
/**
* 指令执行方法
*
* @param sender 指令使用者
* @param command 指令对象
* @param label 主命令
* @param args 参数(不含主命令及子命令)
*/
void onCommand(CommandSender sender, Command command, String label, String[] args);
}

View File

@@ -1,29 +0,0 @@
package me.skymc.taboolib.commands.internal;
/**
* @author Bkm016
* @since 2018-04-17
*/
public class InternalArgument {
private String name;
private boolean required;
public String getName() {
return name;
}
public boolean isRequired() {
return required;
}
public InternalArgument(String name, boolean required) {
this.name = name;
this.required = required;
}
@Override
public String toString() {
return required ? "§7[§8" + name + "§7]" : "§7<§8" + name + "§7>";
}
}

View File

@@ -1,111 +0,0 @@
package me.skymc.taboolib.commands.internal;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.Main;
import me.skymc.taboolib.TabooLib;
import me.skymc.taboolib.string.ArrayUtils;
import me.skymc.taboolib.string.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.command.*;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @Author sky
* @Since 2018-05-07 21:38
*/
public abstract class InternalCommandExecutor implements InternalCommand, CommandExecutor, TabExecutor {
private InternalCommandExecutor subExecutor;
private List<InternalSubCommandExecutor> subCommandExecutors = new ArrayList<>();
public static InternalCommandExecutor createCommandExecutor(String command, InternalCommandExecutor internalCommandExecutor) {
assert Bukkit.getPluginCommand(command) == null : "PluginCommand \"" + command + "\"not found";
assert internalCommandExecutor != null : "Executor can not be null";
assert internalCommandExecutor.getCommandTitle() != null : "Executor title can not be null";
assert internalCommandExecutor.getClass() != InternalCommandExecutor.class : "SubExecutor can not be \"InternalCommandExecutor.class\"";
internalCommandExecutor.setSubExecutor(internalCommandExecutor);
Bukkit.getPluginCommand(command).setExecutor(internalCommandExecutor);
Bukkit.getPluginCommand(command).setTabCompleter(internalCommandExecutor);
return internalCommandExecutor;
}
public void setSubExecutor(InternalCommandExecutor subExecutor) {
this.subExecutor = subExecutor;
}
public InternalCommandExecutor getSubExecutor() {
return subExecutor;
}
public List<InternalSubCommandExecutor> getSubCommandExecutors() {
return subCommandExecutors;
}
public void registerSubCommandExecutor(InternalSubCommandExecutor subCommandExecutor) {
assert subCommandExecutor.getLabel() != null : "Command label can not be null";
assert subCommandExecutor.getDescription() != null : "Command description can not be null";
assert subCommandExecutor.getArguments() != null : "Command arguments can not be null";
subCommandExecutors.add(subCommandExecutor);
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (args.length == 0) {
helpCommand(sender, label);
} else {
for (InternalSubCommandExecutor subCommand : subCommandExecutors) {
if (subCommand == null || !args[0].equalsIgnoreCase(subCommand.getLabel())) {
continue;
}
if (!isConfirmType(sender, subCommand.getType())) {
TLocale.sendTo(sender, "COMMANDS.INTERNAL.ONLY-PLAYER", args[0], TLocale.asString("COMMANDS.INTERNAL.TYPE-" + subCommand.getType()));
return true;
}
String[] subCommandArgs = ArrayUtils.removeFirst(args);
if (subCommand.isParameterConform(subCommandArgs)) {
subCommand.onCommand(sender, command, label, subCommandArgs);
} else {
TLocale.sendTo(sender, "COMMANDS.INTERNAL.ERROR-USAGE", args[0], subCommand.getCommandString(label));
}
return true;
}
new BukkitRunnable() {
@Override
public void run() {
List<InternalSubCommandExecutor> commandCompute = subCommandExecutors.stream().filter(Objects::nonNull).sorted((b, a) -> Double.compare(StringUtils.similarDegree(args[0], a.getLabel()), StringUtils.similarDegree(args[0], b.getLabel()))).collect(Collectors.toList());
if (commandCompute.size() > 0) {
TLocale.sendTo(sender, "COMMANDS.INTERNAL.ERROR-COMMAND", args[0], commandCompute.get(0).getCommandString(label).trim());
}
}
}.runTaskAsynchronously(Main.getInst());
}
return true;
}
@Override
public List<String> onTabComplete(CommandSender commandSender, Command command, String s, String[] args) {
return args.length == 1 ? subCommandExecutors.stream().filter(internalCommandExecutor -> internalCommandExecutor != null && (args[0].isEmpty() || internalCommandExecutor.getLabel().startsWith(args[0]))).map(InternalSubCommand::getLabel).collect(Collectors.toList()) : null;
}
private String getEmptyLine() {
return TabooLib.getVerint() < 10800 ? "~" : "";
}
private void helpCommand(CommandSender sender, String label) {
sender.sendMessage(getEmptyLine());
sender.sendMessage(subExecutor.getCommandTitle());
sender.sendMessage(getEmptyLine());
subCommandExecutors.stream().map(subCommand -> subCommand == null ? getEmptyLine() : subCommand.getCommandString(label)).forEach(sender::sendMessage);
sender.sendMessage(getEmptyLine());
}
private boolean isConfirmType(CommandSender sender, InternalSubCommandType commandType) {
return commandType == InternalSubCommandType.ALL || sender instanceof ConsoleCommandSender && commandType == InternalSubCommandType.CONSOLE;
}
}

View File

@@ -1,20 +0,0 @@
package me.skymc.taboolib.commands.internal;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
/**
* @author Bkm016
* @since 2018-04-17
*/
public interface InternalSubCommand {
String getLabel();
String getDescription();
InternalArgument[] getArguments();
void onCommand(CommandSender sender, Command command, String label, String[] args);
}

View File

@@ -1,11 +0,0 @@
package me.skymc.taboolib.commands.internal;
/**
* @author Bkm016
* @since 2018-04-17
*/
public enum InternalSubCommandType {
CONSOLE, PLAYER, ALL
}

View File

@@ -0,0 +1,52 @@
package me.skymc.taboolib.commands.internal.type;
import java.util.Objects;
/**
* @author Bkm016
* @since 2018-04-17
*/
public class CommandArgument {
private String name;
private boolean required;
public String getName() {
return name;
}
public boolean isRequired() {
return required;
}
public CommandArgument(String name) {
this(name, true);
}
public CommandArgument(String name, boolean required) {
this.name = name;
this.required = required;
}
@Override
public String toString() {
return required ? "§7[§8" + name + "§7]" : "§7<§8" + name + "§7>";
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof CommandArgument)) {
return false;
}
CommandArgument that = (CommandArgument) o;
return Objects.equals(getName(), that.getName()) && isRequired() == that.isRequired();
}
@Override
public int hashCode() {
return Objects.hash(getName(), isRequired());
}
}

View File

@@ -0,0 +1,18 @@
package me.skymc.taboolib.commands.internal.type;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @Author sky
* @Since 2018-05-09 22:38
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CommandRegister {
double priority() default 0;
}

View File

@@ -0,0 +1,11 @@
package me.skymc.taboolib.commands.internal.type;
/**
* @author Bkm016
* @since 2018-04-17
*/
public enum CommandType {
CONSOLE, PLAYER, ALL
}

View File

@@ -2,9 +2,9 @@ package me.skymc.taboolib.commands.plugin;
import com.google.common.base.Joiner;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.internal.InternalArgument;
import me.skymc.taboolib.commands.internal.InternalCommandExecutor;
import me.skymc.taboolib.commands.internal.InternalSubCommandExecutor;
import me.skymc.taboolib.commands.internal.BaseMainCommand;
import me.skymc.taboolib.commands.internal.BaseSubCommand;
import me.skymc.taboolib.commands.internal.type.CommandArgument;
import me.skymc.taboolib.plugin.PluginUtils;
import me.skymc.taboolib.string.ArrayUtils;
import org.bukkit.Bukkit;
@@ -20,9 +20,9 @@ import java.util.stream.Collectors;
* @Author sky
* @Since 2018-05-07 20:14
*/
public class TabooLibPluginCommand extends InternalCommandExecutor {
public class TabooLibPluginMainCommand extends BaseMainCommand {
public TabooLibPluginCommand() {
public TabooLibPluginMainCommand() {
listCommand();
infoCommand();
loadCommand();
@@ -36,7 +36,7 @@ public class TabooLibPluginCommand extends InternalCommandExecutor {
}
void loadCommand() {
registerSubCommandExecutor(new InternalSubCommandExecutor() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
@@ -49,8 +49,8 @@ public class TabooLibPluginCommand extends InternalCommandExecutor {
}
@Override
public InternalArgument[] getArguments() {
return new InternalArgument[]{new InternalArgument(TLocale.asString("COMMANDS.TPLUGIN.LOAD.ARGUMENTS.0"), true)};
public CommandArgument[] getArguments() {
return new CommandArgument[]{new CommandArgument(TLocale.asString("COMMANDS.TPLUGIN.LOAD.ARGUMENTS.0"), true)};
}
@Override
@@ -74,7 +74,7 @@ public class TabooLibPluginCommand extends InternalCommandExecutor {
}
void unloadCommand() {
registerSubCommandExecutor(new InternalSubCommandExecutor() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
@@ -87,8 +87,8 @@ public class TabooLibPluginCommand extends InternalCommandExecutor {
}
@Override
public InternalArgument[] getArguments() {
return new InternalArgument[]{new InternalArgument(TLocale.asString("COMMANDS.TPLUGIN.UNLOAD.ARGUMENTS.0"), true)};
public CommandArgument[] getArguments() {
return new CommandArgument[]{new CommandArgument(TLocale.asString("COMMANDS.TPLUGIN.UNLOAD.ARGUMENTS.0"), true)};
}
@Override
@@ -115,7 +115,7 @@ public class TabooLibPluginCommand extends InternalCommandExecutor {
}
void reloadCommand() {
registerSubCommandExecutor(new InternalSubCommandExecutor() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
@@ -128,8 +128,8 @@ public class TabooLibPluginCommand extends InternalCommandExecutor {
}
@Override
public InternalArgument[] getArguments() {
return new InternalArgument[]{new InternalArgument(TLocale.asString("COMMANDS.TPLUGIN.RELOAD.ARGUMENTS.0"), true)};
public CommandArgument[] getArguments() {
return new CommandArgument[]{new CommandArgument(TLocale.asString("COMMANDS.TPLUGIN.RELOAD.ARGUMENTS.0"), true)};
}
@Override
@@ -149,7 +149,7 @@ public class TabooLibPluginCommand extends InternalCommandExecutor {
}
void infoCommand() {
registerSubCommandExecutor(new InternalSubCommandExecutor() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
@@ -162,8 +162,8 @@ public class TabooLibPluginCommand extends InternalCommandExecutor {
}
@Override
public InternalArgument[] getArguments() {
return new InternalArgument[]{new InternalArgument(TLocale.asString("COMMANDS.TPLUGIN.INFO.ARGUMENTS.0"), true)};
public CommandArgument[] getArguments() {
return new CommandArgument[]{new CommandArgument(TLocale.asString("COMMANDS.TPLUGIN.INFO.ARGUMENTS.0"), true)};
}
@Override
@@ -189,7 +189,7 @@ public class TabooLibPluginCommand extends InternalCommandExecutor {
}
void listCommand() {
registerSubCommandExecutor(new InternalSubCommandExecutor() {
registerSubCommand(new BaseSubCommand() {
@Override
public String getLabel() {
@@ -202,8 +202,8 @@ public class TabooLibPluginCommand extends InternalCommandExecutor {
}
@Override
public InternalArgument[] getArguments() {
return new InternalArgument[0];
public CommandArgument[] getArguments() {
return new CommandArgument[0];
}
@Override

View File

@@ -1,50 +0,0 @@
package me.skymc.taboolib.commands.sub;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.Main;
import me.skymc.taboolib.Main.StorageType;
import me.skymc.taboolib.commands.SubCommand;
import me.skymc.taboolib.fileutils.ConfigUtils;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
import java.util.Objects;
public class ImportCommand extends SubCommand {
public ImportCommand(CommandSender sender, String[] args) {
super(sender, args);
if (isPlayer()) {
TLocale.sendTo(sender, "COMMANDS.GLOBAL.ONLY-PLAYER");
return;
}
if (Main.getStorageType() == StorageType.LOCAL) {
TLocale.Logger.warn("COMMANDS.GLOBAL.ONLY-STORAGE-SQL");
return;
}
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.IMPORTDATA.CLEARING");
Main.getConnection().truncateTable(Main.getTablePrefix() + "_playerdata");
if (!Main.getPlayerDataFolder().exists()) {
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.IMPORTDATA.EMPTYDATA");
return;
}
int size = Objects.requireNonNull(Main.getPlayerDataFolder().listFiles()).length;
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.IMPORTDATA.IMPORTING-START", String.valueOf(size));
int loop = 1;
for (File file : Objects.requireNonNull(Main.getPlayerDataFolder().listFiles())) {
Main.getConnection().intoValue(Main.getTablePrefix() + "_playerdata", file.getName().replace(".yml", ""), ConfigUtils.encodeYAML(YamlConfiguration.loadConfiguration(file)));
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.IMPORTDATA.IMPORTING-PROGRESS", file.getName().replace(".yml", ""), String.valueOf(loop), String.valueOf(size));
loop++;
}
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.IMPORTDATA.SUCCESS");
}
}

View File

@@ -1,31 +0,0 @@
package me.skymc.taboolib.commands.sub.cycle;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;
import org.bukkit.command.CommandSender;
public class CycleCommand extends SubCommand {
public CycleCommand(CommandSender sender, String[] args) {
super(sender, args);
if (args.length > 1) {
if ("list".equalsIgnoreCase(args[1])) {
new CycleListCommand(sender, args);
} else if ("info".equalsIgnoreCase(args[1])) {
new CycleInfoCommand(sender, args);
} else if ("reset".equalsIgnoreCase(args[1])) {
new CycleResetCommand(sender, args);
} else if ("update".equalsIgnoreCase(args[1])) {
new CycleUpdateCommand(sender, args);
}
} else {
TLocale.sendTo(sender, "COMMANDS.PARAMETER.UNKNOWN");
}
}
@Override
public boolean command() {
return true;
}
}

View File

@@ -1,27 +0,0 @@
package me.skymc.taboolib.commands.sub.shell;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;
import org.bukkit.command.CommandSender;
public class ShellCommand extends SubCommand {
public ShellCommand(CommandSender sender, String[] args) {
super(sender, args);
if (args.length > 1) {
if ("load".equalsIgnoreCase(args[1])) {
new ShellLoadCommand(sender, args);
} else if ("unload".equalsIgnoreCase(args[1])) {
new ShellUnloadCommand(sender, args);
}
} else {
TLocale.sendTo(sender, "COMMANDS.PARAMETER.UNKNOWN");
}
}
@Override
public boolean command() {
return true;
}
}

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;

View File

@@ -1,15 +1,13 @@
package me.skymc.taboolib.commands.sub.cycle;
import java.util.concurrent.TimeUnit;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import org.bukkit.command.CommandSender;
import me.skymc.taboolib.commands.SubCommand;
import me.skymc.taboolib.message.MsgUtils;
import me.skymc.taboolib.other.DateUtils;
import me.skymc.taboolib.timecycle.TimeCycle;
import me.skymc.taboolib.timecycle.TimeCycleManager;
import org.bukkit.command.CommandSender;
import java.util.concurrent.TimeUnit;
public class CycleInfoCommand extends SubCommand {

View File

@@ -1,18 +1,9 @@
package me.skymc.taboolib.commands.sub.cycle;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import me.skymc.taboolib.commands.SubCommand;
import me.skymc.taboolib.jsonformatter.JSONFormatter;
import me.skymc.taboolib.jsonformatter.click.SuggestCommandEvent;
import me.skymc.taboolib.jsonformatter.hover.ShowTextEvent;
import me.skymc.taboolib.timecycle.TimeCycle;
import me.skymc.taboolib.timecycle.TimeCycleManager;
import org.bukkit.inventory.ItemFlag;
import java.util.Arrays;
import org.bukkit.command.CommandSender;
public class CycleListCommand extends SubCommand {

View File

@@ -1,18 +1,16 @@
package me.skymc.taboolib.commands.sub.cycle;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.scheduler.BukkitRunnable;
import me.skymc.taboolib.Main;
import me.skymc.taboolib.commands.SubCommand;
import me.skymc.taboolib.database.GlobalDataManager;
import me.skymc.taboolib.message.MsgUtils;
import me.skymc.taboolib.timecycle.TimeCycle;
import me.skymc.taboolib.timecycle.TimeCycleEvent;
import me.skymc.taboolib.timecycle.TimeCycleInitializeEvent;
import me.skymc.taboolib.timecycle.TimeCycleManager;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.scheduler.BukkitRunnable;
public class CycleResetCommand extends SubCommand {

View File

@@ -1,17 +1,15 @@
package me.skymc.taboolib.commands.sub.cycle;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.scheduler.BukkitRunnable;
import me.skymc.taboolib.Main;
import me.skymc.taboolib.commands.SubCommand;
import me.skymc.taboolib.database.GlobalDataManager;
import me.skymc.taboolib.message.MsgUtils;
import me.skymc.taboolib.timecycle.TimeCycle;
import me.skymc.taboolib.timecycle.TimeCycleEvent;
import me.skymc.taboolib.timecycle.TimeCycleManager;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.scheduler.BukkitRunnable;
public class CycleUpdateCommand extends SubCommand {

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;

View File

@@ -0,0 +1,50 @@
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.Main;
import me.skymc.taboolib.Main.StorageType;
import me.skymc.taboolib.commands.SubCommand;
import me.skymc.taboolib.fileutils.ConfigUtils;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
import java.util.Objects;
public class ImportCommand extends SubCommand {
public ImportCommand(CommandSender sender, String[] args) {
super(sender, args);
if (isPlayer()) {
TLocale.sendTo(sender, "COMMANDS.GLOBAL.ONLY-PLAYER");
return;
}
if (Main.getStorageType() == StorageType.LOCAL) {
TLocale.Logger.warn("COMMANDS.GLOBAL.ONLY-STORAGE-SQL");
return;
}
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.IMPORTDATA.CLEARING");
Main.getConnection().truncateTable(Main.getTablePrefix() + "_playerdata");
if (!Main.getPlayerDataFolder().exists()) {
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.IMPORTDATA.EMPTYDATA");
return;
}
int size = Objects.requireNonNull(Main.getPlayerDataFolder().listFiles()).length;
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.IMPORTDATA.IMPORTING-START", String.valueOf(size));
int loop = 1;
for (File file : Objects.requireNonNull(Main.getPlayerDataFolder().listFiles())) {
Main.getConnection().intoValue(Main.getTablePrefix() + "_playerdata", file.getName().replace(".yml", ""), ConfigUtils.encodeYAML(YamlConfiguration.loadConfiguration(file)));
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.IMPORTDATA.IMPORTING-PROGRESS", file.getName().replace(".yml", ""), String.valueOf(loop), String.valueOf(size));
loop++;
}
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.IMPORTDATA.SUCCESS");
}
}

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;

View File

@@ -1,7 +1,7 @@
package me.skymc.taboolib.commands.sub.itemlist;
package me.skymc.taboolib.commands.taboolib;
import me.skymc.taboolib.commands.SubCommand;
import me.skymc.taboolib.commands.sub.itemlist.listener.ItemLibraryPatch;
import me.skymc.taboolib.commands.taboolib.listener.ListenerItemListCommand;
import me.skymc.taboolib.other.NumberUtils;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -16,9 +16,9 @@ public class ItemListCommand extends SubCommand {
super(sender, args);
if (isPlayer()) {
if (args.length == 1) {
ItemLibraryPatch.openInventory((Player) sender, 1);
ListenerItemListCommand.openInventory((Player) sender, 1);
} else {
ItemLibraryPatch.openInventory((Player) sender, NumberUtils.getInteger(args[1]));
ListenerItemListCommand.openInventory((Player) sender, NumberUtils.getInteger(args[1]));
}
}
}

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.Main;
@@ -15,6 +15,9 @@ import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
/**
* @author sky
*/
public class SaveCommand extends SubCommand {
public SaveCommand(CommandSender sender, String[] args) {

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub.shell;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;
@@ -12,13 +12,13 @@ public class ShellLoadCommand extends SubCommand {
public ShellLoadCommand(CommandSender sender, String[] args) {
super(sender, args);
if (args.length < 3) {
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.JAVASHELL.INVALID-NAME");
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.JAVASHELL.INVALID-NAME");
return;
}
File file = new File(JavaShell.getScriptFolder(), args[2].contains(".java") ? args[2] : args[2] + ".java");
if (!file.exists()) {
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.JAVASHELL.INVALID-SHELL", args[2]);
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.JAVASHELL.INVALID-SHELL", args[2]);
return;
}

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub.shell;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;

View File

@@ -1,7 +1,7 @@
package me.skymc.taboolib.commands.sub.sounds;
package me.skymc.taboolib.commands.taboolib;
import me.skymc.taboolib.commands.SubCommand;
import me.skymc.taboolib.commands.sub.sounds.listener.SoundsLibraryPatch;
import me.skymc.taboolib.commands.taboolib.listener.ListenerSoundsCommand;
import me.skymc.taboolib.other.NumberUtils;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -16,11 +16,11 @@ public class SoundsCommand extends SubCommand {
super(sender, args);
if (isPlayer()) {
if (args.length == 1) {
SoundsLibraryPatch.openInventory((Player) sender, 1, null);
ListenerSoundsCommand.openInventory((Player) sender, 1, null);
} else if (args.length == 2) {
SoundsLibraryPatch.openInventory((Player) sender, NumberUtils.getInteger(args[1]), null);
ListenerSoundsCommand.openInventory((Player) sender, NumberUtils.getInteger(args[1]), null);
} else {
SoundsLibraryPatch.openInventory((Player) sender, NumberUtils.getInteger(args[1]), args[2]);
ListenerSoundsCommand.openInventory((Player) sender, NumberUtils.getInteger(args[1]), args[2]);
}
}
}

View File

@@ -1,8 +1,8 @@
package me.skymc.taboolib.commands.sub;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;
import me.skymc.taboolib.message.MsgUtils;
import me.skymc.taboolib.team.TagAPI;
import me.skymc.taboolib.team.TagManager;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
@@ -28,6 +28,8 @@ public class TagDeleteCommand extends SubCommand {
}
TagManager.getInst().removeData(player);
TagAPI.removePlayerDisplayName(player);
if (sender instanceof Player) {
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.PLAYERTAG.SUCCESS-DELETE", args[1]);
}

View File

@@ -0,0 +1,41 @@
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.clip.placeholderapi.PlaceholderAPI;
import me.skymc.taboolib.commands.SubCommand;
import me.skymc.taboolib.team.TagAPI;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
/**
* @author sky
* @since 2018-03-19 23:13:35
*/
public class TagDisplayCommand extends SubCommand {
public TagDisplayCommand(CommandSender sender, String[] args) {
super(sender, args);
if (args.length < 3) {
TLocale.sendTo(sender, "COMMANDS.PARAMETER.UNKNOWN");
return;
}
Player player = Bukkit.getPlayerExact(args[1]);
if (player == null) {
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.PLAYERTAG.INVALID-PLAYER", args[1]);
return;
}
String value = getArgs(2).replace("&", "§");
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
value = PlaceholderAPI.setPlaceholders(player, value);
}
TagAPI.setPlayerDisplayName(player, value);
if (sender instanceof Player) {
TLocale.sendTo(sender, "COMMANDS.TABOOLIB.PLAYERTAG.SUCCESS-DISPLAY-SET", args[1], value);
}
}
}

View File

@@ -1,15 +1,13 @@
package me.skymc.taboolib.commands.sub;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.clip.placeholderapi.PlaceholderAPI;
import me.skymc.taboolib.commands.SubCommand;
import me.skymc.taboolib.team.TagManager;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import me.clip.placeholderapi.PlaceholderAPI;
import me.skymc.taboolib.commands.SubCommand;
import me.skymc.taboolib.message.MsgUtils;
import me.skymc.taboolib.team.TagManager;
/**
* @author sky
* @since 2018-03-19 23:13:35

View File

@@ -1,9 +1,8 @@
package me.skymc.taboolib.commands.sub;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.clip.placeholderapi.PlaceholderAPI;
import me.skymc.taboolib.commands.SubCommand;
import me.skymc.taboolib.message.MsgUtils;
import me.skymc.taboolib.team.TagManager;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub;
package me.skymc.taboolib.commands.taboolib;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.commands.SubCommand;

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub.itemlist.listener;
package me.skymc.taboolib.commands.taboolib.listener;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.inventory.InventoryUtil;
@@ -23,7 +23,7 @@ import java.util.List;
* @author sky
* @since 2018年2月4日 下午4:35:00
*/
public class ItemLibraryPatch implements Listener {
public class ListenerItemListCommand implements Listener {
/**
* 打开物品库界面

View File

@@ -1,4 +1,4 @@
package me.skymc.taboolib.commands.sub.sounds.listener;
package me.skymc.taboolib.commands.taboolib.listener;
import com.ilummc.tlib.resources.TLocale;
import me.skymc.taboolib.inventory.InventoryUtil;
@@ -24,7 +24,7 @@ import java.util.stream.Collectors;
* @author sky
* @since 2018年2月4日 下午4:35:00
*/
public class SoundsLibraryPatch implements Listener {
public class ListenerSoundsCommand implements Listener {
public static void openInventory(Player player, int page, String search) {
if (page < 1) {