protected WithSuggestionsElement(CommandElement wrapped, Function<CommandSource, Iterable<String>> suggestions, boolean requireBegin) { super(wrapped.getKey()); this.wrapped = wrapped; this.suggestions = suggestions; this.requireBegin = requireBegin; }
protected OnlyOneCommandElement(CommandElement element) { super(element.getKey()); this.element = element; }
protected PermissionCommandElement(CommandElement element, String permission) { super(element.getKey()); this.element = element; this.permission = permission; }
protected FilteredSuggestionsElement(CommandElement wrapped, Predicate<String> predicate) { super(wrapped.getKey()); this.wrapped = wrapped; this.predicate = predicate; }
@Override public void parse(CommandSource source, CommandArgs args, CommandContext context) throws ArgumentParseException { this.element.parse(source, args, context); if (context.getAll(this.element.getUntranslatedKey()).size() > 1) { Text key = this.element.getKey(); throw args.createError(t("Argument %s may have only one value!", key != null ? key : t("unknown"))); } }
@Override public void parse(CommandSource source, CommandArgs args, CommandContext context) throws ArgumentParseException { if (!args.hasNext()) { Text key = this.element.getKey(); if (key != null && this.value != null) { context.putArg(key.toPlain(), this.value); } return; } CommandArgs.Snapshot startState = args.getSnapshot(); try { this.element.parse(source, args, context); } catch (ArgumentParseException ex) { if (this.considerInvalidFormatEmpty || args.hasNext()) { // If there are more args, suppress. Otherwise, throw the error args.applySnapshot(startState); if (this.element.getKey() != null && this.value != null) { context.putArg(this.element.getUntranslatedKey(), this.value); } } else { throw ex; } } }
protected PermissionCommandElement(CommandElement element, String permission) { super(element.getKey()); this.element = element; this.permission = permission; }
protected OnlyOneCommandElement(CommandElement element) { super(element.getKey()); this.element = element; }
@Override public void parse(CommandSource source, CommandArgs args, CommandContext context) throws ArgumentParseException { this.element.parse(source, args, context); if (context.getAll(this.element.getUntranslatedKey()).size() > 1) { Text key = this.element.getKey(); throw args.createError(t("Argument %s may have only one value!", key != null ? key : t("unknown"))); } }
@Override public void parse(CommandSource source, CommandArgs args, CommandContext context) throws ArgumentParseException { if (!args.hasNext()) { Text key = this.element.getKey(); if (key != null && this.value != null) { context.putArg(key.toPlain(), this.value); } return; } Object startState = args.getState(); try { this.element.parse(source, args, context); } catch (ArgumentParseException ex) { if (this.considerInvalidFormatEmpty || args.hasNext()) { // If there are more args, suppress. Otherwise, throw the error args.setState(startState); if (this.element.getKey() != null && this.value != null) { context.putArg(this.element.getUntranslatedKey(), this.value); } } else { throw ex; } } }