diff --git a/build.gradle.kts b/build.gradle.kts index bffcd481..407d6415 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,5 @@ import java.text.SimpleDateFormat -version = "2.0.0-dev15" +version = "2.0.0-dev16" plugins { `java-library` @@ -40,7 +40,7 @@ dependencies { compileOnly("io.lumine:Mythic-Dist:5.3.5") compileOnly("io.lumine:MythicLib-dist:1.6.2-SNAPSHOT") compileOnly("net.Indyuce:MMOItems-API:6.9.5-SNAPSHOT") - implementation("com.crypticlib:CrypticLib:0.11.0") + implementation("com.crypticlib:CrypticLib:0.14.2") } group = "com.github.yufiriamazenta" diff --git a/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/PluginCommand.java b/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/PluginCommand.java index b23924fc..08b8737e 100644 --- a/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/PluginCommand.java +++ b/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/PluginCommand.java @@ -1,70 +1,119 @@ package com.github.yufiriamazenta.craftorithm.cmd; -import com.github.yufiriamazenta.craftorithm.cmd.sub.ReloadCommand; -import com.github.yufiriamazenta.craftorithm.cmd.sub.RunArcencielCmd; -import com.github.yufiriamazenta.craftorithm.cmd.sub.VersionCommand; +import com.github.yufiriamazenta.craftorithm.Craftorithm; +import com.github.yufiriamazenta.craftorithm.arcenciel.ArcencielDispatcher; import com.github.yufiriamazenta.craftorithm.cmd.sub.item.ItemCommand; import com.github.yufiriamazenta.craftorithm.cmd.sub.recipe.CreateRecipeCommand; import com.github.yufiriamazenta.craftorithm.cmd.sub.recipe.DisableRecipeCommand; import com.github.yufiriamazenta.craftorithm.cmd.sub.recipe.RecipeListCommand; import com.github.yufiriamazenta.craftorithm.cmd.sub.recipe.RemoveRecipeCommand; import com.github.yufiriamazenta.craftorithm.config.Languages; +import com.github.yufiriamazenta.craftorithm.item.ItemManager; +import com.github.yufiriamazenta.craftorithm.item.impl.CraftorithmItemProvider; +import com.github.yufiriamazenta.craftorithm.recipe.RecipeManager; import com.github.yufiriamazenta.craftorithm.util.CollectionsUtil; +import com.github.yufiriamazenta.craftorithm.util.ItemUtils; import com.github.yufiriamazenta.craftorithm.util.LangUtil; -import crypticlib.command.BukkitCommand; -import crypticlib.command.RootCmdExecutor; -import crypticlib.command.SubcmdExecutor; -import org.bukkit.command.Command; +import crypticlib.command.CommandTreeInfo; +import crypticlib.command.CommandTreeNode; +import crypticlib.command.CommandTreeRoot; +import crypticlib.command.annotation.CommandNode; +import crypticlib.command.annotation.CommandTree; +import crypticlib.perm.PermInfo; import org.bukkit.command.CommandSender; -import org.jetbrains.annotations.NotNull; +import org.bukkit.entity.Item; +import org.bukkit.entity.Player; -import java.util.Arrays; -import java.util.List; +import java.util.StringJoiner; -@BukkitCommand( - name = "craftorithm", - aliases = {"craft", "cra"}, - permission = "craftorithm.command" -) -public class PluginCommand extends RootCmdExecutor { +@CommandTree +public class PluginCommand extends CommandTreeRoot { PluginCommand() { - regDefaultSubCommands(); + super(new CommandTreeInfo("craftorithm", new PermInfo("craftorithm.command"), new String[]{"craft", "cra"})); + setExecutor((sender, args) -> { + LangUtil.sendLang(sender, Languages.COMMAND_UNDEFINED_SUBCMD); + return true; + }); } - @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - List argList = Arrays.asList(args); - if (argList.isEmpty()) { - LangUtil.sendLang(sender, Languages.COMMAND_NOT_ENOUGH_PARAM, CollectionsUtil.newStringHashMap("", String.valueOf(1))); + @CommandNode + private CommandTreeNode reload = new CommandTreeNode( + new CommandTreeNode.NodeInfo("reload", new PermInfo("craftorithm.command.reload")), + (sender, args) -> { + try { + Craftorithm.instance().reloadConfig(); + ItemUtils.reloadCannotCraftLore(); + ArcencielDispatcher.INSTANCE.functionFile().reloadConfig(); + CraftorithmItemProvider.INSTANCE.reloadItemProvider(); + ItemManager.INSTANCE.reloadCustomCookingFuel(); + RecipeManager.INSTANCE.reloadRecipeManager(); + LangUtil.sendLang(sender, Languages.COMMAND_RELOAD_SUCCESS); + } catch (Exception e) { + e.printStackTrace(); + LangUtil.sendLang(sender, Languages.COMMAND_RELOAD_EXCEPTION); + } return true; } - SubcmdExecutor subCommand = subcommands().get(argList.get(0)); - if (subCommand != null) { - String perm = subCommand.permission(); - if (perm != null) { - if (!sender.hasPermission(perm)) { - LangUtil.sendLang(sender, Languages.COMMAND_NO_PERM); - return true; - } + ); + + @CommandNode + private CommandTreeNode version = new CommandTreeNode( + new CommandTreeNode.NodeInfo("version",new PermInfo("craftorithm.command.version")), + (sender, args) -> { + LangUtil.sendLang(sender, Languages.COMMAND_VERSION); + return true; + } + ); + + @CommandNode + private CommandTreeNode run = new CommandTreeNode( + new CommandTreeNode.NodeInfo("run", new PermInfo("craftorithm.command.run")), + (sender, args) -> { + if (!checkSenderIsPlayer(sender)) + return true; + if (args.isEmpty()) { + sendNotEnoughCmdParamMsg(sender, 1); + return true; } - return subCommand.onCommand(sender, argList.subList(1, argList.size())); + long startTime = System.currentTimeMillis(); + StringJoiner arcencielBlock = new StringJoiner(" "); + for (String arg : args) { + arcencielBlock.add(arg); + } + ArcencielDispatcher.INSTANCE.dispatchArcencielBlock((Player) sender, arcencielBlock.toString()); + long execTime = System.currentTimeMillis() - startTime; + LangUtil.sendLang(sender, Languages.COMMAND_RUN_ARCENCIEL_SUCCESS, CollectionsUtil.newStringHashMap("