diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/FlagArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/FlagArgument.java index 8982c117..0f680aec 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/FlagArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/FlagArgument.java @@ -163,6 +163,7 @@ public final class FlagArgument extends CommandArgument { final CommandFlag erasedFlag = currentFlag; final Object value = result.getParsedValue().get(); commandContext.flags().addValueFlag(erasedFlag, value); + currentFlag = null; } } } diff --git a/cloud-core/src/test/java/cloud/commandframework/CommandTreeTest.java b/cloud-core/src/test/java/cloud/commandframework/CommandTreeTest.java index b1e0088b..8e60910c 100644 --- a/cloud-core/src/test/java/cloud/commandframework/CommandTreeTest.java +++ b/cloud-core/src/test/java/cloud/commandframework/CommandTreeTest.java @@ -25,6 +25,7 @@ package cloud.commandframework; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.arguments.compound.ArgumentPair; +import cloud.commandframework.arguments.standard.EnumArgument; import cloud.commandframework.arguments.standard.IntegerArgument; import cloud.commandframework.arguments.standard.StringArgument; import cloud.commandframework.context.CommandContext; @@ -117,9 +118,12 @@ class CommandTreeTest { .build()) .flag(manager.flagBuilder("num") .withArgument(IntegerArgument.of("num")).build()) + .flag(manager.flagBuilder("enum") + .withArgument(EnumArgument.of(FlagEnum.class, "enum"))) .handler(c -> { System.out.println("Flag present? " + c.flags().isPresent("test")); System.out.println("Numerical flag: " + c.flags().getValue("num", -10)); + System.out.println("Enum: " + c.flags().getValue("enum", FlagEnum.PROXI)); }) .build()); } @@ -222,7 +226,8 @@ class CommandTreeTest { manager.executeCommand(new TestCommandSender(), "flags --test --test2").join(); Assertions.assertThrows(CompletionException.class, () -> manager.executeCommand(new TestCommandSender(), "flags --test test2").join()); - manager.executeCommand(new TestCommandSender(), "flags --num 500"); + manager.executeCommand(new TestCommandSender(), "flags --num 500").join(); + manager.executeCommand(new TestCommandSender(), "flags --num 63 --enum potato --test").join(); } @Test @@ -259,4 +264,12 @@ class CommandTreeTest { } + + public enum FlagEnum { + POTATO, + CARROT, + ONION, + PROXI + } + } diff --git a/examples/example-bukkit/src/main/java/cloud/commandframework/examples/bukkit/ExamplePlugin.java b/examples/example-bukkit/src/main/java/cloud/commandframework/examples/bukkit/ExamplePlugin.java index 8d0b0f0c..4acb052f 100644 --- a/examples/example-bukkit/src/main/java/cloud/commandframework/examples/bukkit/ExamplePlugin.java +++ b/examples/example-bukkit/src/main/java/cloud/commandframework/examples/bukkit/ExamplePlugin.java @@ -38,6 +38,8 @@ import cloud.commandframework.annotations.specifier.Greedy; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.arguments.parser.ParserParameters; import cloud.commandframework.arguments.parser.StandardParameters; +import cloud.commandframework.arguments.standard.EnumArgument; +import cloud.commandframework.arguments.standard.IntegerArgument; import cloud.commandframework.bukkit.BukkitCommandManager; import cloud.commandframework.bukkit.BukkitCommandMetaBuilder; import cloud.commandframework.bukkit.CloudBukkitCapabilities; @@ -254,6 +256,17 @@ public final class ExamplePlugin extends JavaPlugin { }) .execute(() -> context.getSender().sendMessage("DONE!")) )); + manager.command(manager.commandBuilder("give") + .senderType(Player.class) + .argument(EnumArgument.of(Material.class, "material")) + .argument(IntegerArgument.of("amount")) + .handler(c -> { + final Material material = c.get("material"); + final int amount = c.get("amount"); + final ItemStack itemStack = new ItemStack(material, amount); + ((Player) c.getSender()).getInventory().addItem(itemStack); + c.getSender().sendMessage("You've been given stuff, bro."); + })); } @CommandMethod("example help [query]") diff --git a/examples/example-bukkit/src/main/resources/plugin.yml b/examples/example-bukkit/src/main/resources/plugin.yml index 3319bcf4..f7a71647 100644 --- a/examples/example-bukkit/src/main/resources/plugin.yml +++ b/examples/example-bukkit/src/main/resources/plugin.yml @@ -2,3 +2,4 @@ name: ExamplePlugin version: 1.0.0 api-version: 1.13 main: cloud.commandframework.examples.bukkit.ExamplePlugin +depends: [Essentials]