From 45dcc43d14e2dbcab94c97fa1cd49b1bde04341a Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 5 Jan 2018 20:07:46 -0500 Subject: [PATCH] Support for Primitive parameter types --- .../co/aikar/commands/CommandContexts.java | 55 +++++++++++++++++-- .../co/aikar/commands/RegisteredCommand.java | 6 +- languages/core/acf-core_en.properties | 2 +- 3 files changed, 55 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/co/aikar/commands/CommandContexts.java b/core/src/main/java/co/aikar/commands/CommandContexts.java index 3f6cf8f1..03159299 100644 --- a/core/src/main/java/co/aikar/commands/CommandContexts.java +++ b/core/src/main/java/co/aikar/commands/CommandContexts.java @@ -42,6 +42,20 @@ public class CommandContexts { + try { + return ACFUtil.parseNumber(c.popFirstArg(), c.hasFlag("suffixes")).shortValue(); + } catch (NumberFormatException e) { + throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER); + } + }); + registerContext(short.class, (c) -> { + try { + return ACFUtil.parseNumber(c.popFirstArg(), c.hasFlag("suffixes")).shortValue(); + } catch (NumberFormatException e) { + throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER); + } + }); registerContext(Integer.class, (c) -> { try { return ACFUtil.parseNumber(c.popFirstArg(), c.hasFlag("suffixes")).intValue(); @@ -49,13 +63,26 @@ public class CommandContexts { + try { + return ACFUtil.parseNumber(c.popFirstArg(), c.hasFlag("suffixes")).intValue(); + } catch (NumberFormatException e) { + throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER); + } + }); registerContext(Long.class, (c) -> { try { return ACFUtil.parseNumber(c.popFirstArg(), c.hasFlag("suffixes")).longValue(); } catch (NumberFormatException e) { throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER); } - + }); + registerContext(long.class, (c) -> { + try { + return ACFUtil.parseNumber(c.popFirstArg(), c.hasFlag("suffixes")).longValue(); + } catch (NumberFormatException e) { + throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER); + } }); registerContext(Float.class, (c) -> { try { @@ -64,6 +91,13 @@ public class CommandContexts { + try { + return ACFUtil.parseNumber(c.popFirstArg(), c.hasFlag("suffixes")).floatValue(); + } catch (NumberFormatException e) { + throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER); + } + }); registerContext(Double.class, (c) -> { try { return ACFUtil.parseNumber(c.popFirstArg(), c.hasFlag("suffixes")).doubleValue(); @@ -71,6 +105,13 @@ public class CommandContexts { + try { + return ACFUtil.parseNumber(c.popFirstArg(), c.hasFlag("suffixes")).doubleValue(); + } catch (NumberFormatException e) { + throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER); + } + }); registerContext(Number.class, (c) -> { try { return ACFUtil.parseNumber(c.popFirstArg(), c.hasFlag("suffixes")); @@ -78,12 +119,14 @@ public class CommandContexts { - String test = c.popFirstArg(); - if (test == null) { - return null; + registerContext(Boolean.class, (c) -> ACFUtil.isTruthy(c.popFirstArg())); + registerContext(boolean.class, (c) -> ACFUtil.isTruthy(c.popFirstArg())); + registerContext(char.class, c -> { + String s = c.popFirstArg(); + if (s.length() > 1) { + throw new InvalidCommandArgument(MessageKeys.MUST_BE_MAX_LENGTH, "{max}", String.valueOf(1)); } - return ACFUtil.isTruthy(test); + return s.charAt(0); }); registerContext(String.class, (c) -> { final Values values = c.getParam().getAnnotation(Values.class); diff --git a/core/src/main/java/co/aikar/commands/RegisteredCommand.java b/core/src/main/java/co/aikar/commands/RegisteredCommand.java index ec8b258a..cb8d5baf 100644 --- a/core/src/main/java/co/aikar/commands/RegisteredCommand.java +++ b/core/src/main/java/co/aikar/commands/RegisteredCommand.java @@ -216,7 +216,11 @@ public class RegisteredCommand {valid}). acf-core.must_be_a_number = Error: Must be a number. acf-core.must_be_min_length = Error: Must be at least {min} characters long. -acf-core.must_be_max_length = Error: Must be less than {max} characters long. +acf-core.must_be_max_length = Error: Must be at most {max} characters long. acf-core.not_allowed_on_console = Error: Console may not execute this command. acf-core.could_not_find_player = Error: Could not find a player by the name: {search} acf-core.help_format = {command} {parameters} {separator} {description}