java.lang.Object
io.github.projectunified.craftcommand.example.standalone.CalculatorCommand

public class CalculatorCommand extends Object
Comprehensive example command demonstrating all CraftCommand features.

Features demonstrated:

  • Command with name, aliases, description
  • Default action method
  • Command on methods and nested classes
  • Default parameters with default values
  • Greedy parameters (String and non-String types)
  • Name parameter name override
  • Suggest for tab completion (field and method)
  • Resolve for custom parameter resolution (implicit and explicit)
  • Min, Max validation annotations
  • ValidateWith custom validation
  • Nested subcommand classes
  • Resolve from inner class referencing outer class method
  • Multiple sender types
  • Field Details

    • operators

      public final List<String> operators
      Field-based suggestion provider for operator names.
    • modes

      public final List<String> modes
      Field-based suggestion provider for mode names.
  • Constructor Details

    • CalculatorCommand

      public CalculatorCommand()
  • Method Details

    • getModes

      public Collection<String> getModes(String[] current)
      Method-based suggestion provider with current input.
      Parameters:
      current - the current input being typed
      Returns:
      list of suggested modes
    • resolveSender

      public CalculatorCommand.CustomSender resolveSender(Object sender)
      Local resolver for CustomSender type.
    • resolvePoint

      public CalculatorCommand.Point resolvePoint(double x, double y)
      Local resolver for Point type (multi-arg, width=2).
    • resolvePointWithSender

      public CalculatorCommand.Point resolvePointWithSender(Object sender, double x, double y)
    • resolvePointNamed

      public CalculatorCommand.Point resolvePointNamed(double x, double y)
    • resolvePointSuggest

      public CalculatorCommand.Point resolvePointSuggest(String mode, double x)
    • resolveClamped

      public int resolveClamped(int value)
    • resolveGreedy

      public String resolveGreedy(String text)
    • validateDivider

      public void validateDivider(int num)
      Validates that divisor is not zero.
    • validateCoordinate

      public void validateCoordinate(double value)
      Validates coordinate is within bounds.
    • execute

      public void execute(Object sender, int num1, int num2)
      Default action: addition of two numbers. Usage: /calc <num1> <num2>
    • add

      public void add(Object sender, int num1, int num2)
    • subtract

      public void subtract(Object sender, int num1, int num2)
    • multiply

      public void multiply(Object sender, int num1, int num2)
    • divide

      public void divide(Object sender, int num1, int num2)
    • runOp

      public void runOp(Object sender, String op, int num1, int num2)
      Demonstrates field-based @Suggest for operator selection.
    • runMode

      public void runMode(Object sender, String mode)
      Demonstrates method-based @Suggest with sender, args, current parameters.
    • print

      public void print(Object sender, String text)
      Demonstrates @Default with default value on String.
    • repeat

      public void repeat(Object sender, String text, int count)
      Demonstrates @Default with default value on int.
    • echo

      public void echo(Object sender, String message)
      Demonstrates @Greedy on String (joins remaining args with spaces).
    • parse

      public void parse(Object sender, double value)
      Demonstrates @Greedy on non-String type (joins remaining args, then parses).
    • sum

      public void sum(Object sender, int[] numbers)
      Demonstrates @Greedy on array type (creates array from remaining args).
    • sendMessage

      public void sendMessage(Object sender, String target, String message)
      Demonstrates @Name to override parameter name in usage messages.
    • runPoint

      public void runPoint(Object sender, CalculatorCommand.Point pt)
      Demonstrates parameter-level @Resolve with named method.
    • whoAmI

      public void whoAmI(CalculatorCommand.CustomSender sender)
      Demonstrates sender-level @Resolve.
    • setCoordinate

      public void setCoordinate(Object sender, double x, double y, double z)
      Demonstrates @ValidateWith with custom validation method.
    • setLevel

      public void setLevel(Object sender, int level, double multiplier)
      Demonstrates @Min and @Max validation on numeric types.
    • enumOp

      public void enumOp(Object sender, CalculatorCommand.MathOp op, int num1, int num2)
      Demonstrates enum parameter resolution (via registerProvider in CLIApp).
    • resolveAndSuggest

      public void resolveAndSuggest(Object sender, CalculatorCommand.Point pt, String mode)
    • resolveAndDefault

      public void resolveAndDefault(Object sender, CalculatorCommand.Point pt, String mode)
    • resolveAndValidate

      public void resolveAndValidate(Object sender, CalculatorCommand.Point pt, int level)
    • suggestAndDefault

      public void suggestAndDefault(Object sender, String mode, int count)
    • defaultAndGreedy

      public void defaultAndGreedy(Object sender, String greeting, String text)
    • sameSender

      public void sameSender(Object sender, CalculatorCommand.Point pt)
    • namedResolver

      public void namedResolver(Object sender, CalculatorCommand.Point pt)
    • suggestResolver

      public void suggestResolver(Object sender, CalculatorCommand.Point pt)
    • clamped

      public void clamped(Object sender, int value)
    • greedyResolve

      public void greedyResolve(Object sender, String text)
    • greedyResolveWithPrefix

      public void greedyResolveWithPrefix(Object sender, String prefix, String text)