From ab86332990c2c48aa04804830a61ce52b06e49c9 Mon Sep 17 00:00:00 2001 From: jmp Date: Mon, 3 May 2021 20:39:04 -0700 Subject: [PATCH] fabric: General cleanup and javadoc improvements --- .../fabric/FabricCaptionRegistry.java | 6 +- .../fabric/FabricCommandManager.java | 4 +- .../fabric/FabricExecutor.java | 187 +++++++++--------- .../fabric/FabricServerCommandManager.java | 3 +- .../fabric/annotations/specifier/Center.java | 6 +- .../fabric/argument/AngleArgument.java | 32 ++- .../fabric/argument/AxisArgument.java | 53 +++-- .../fabric/argument/ColorArgument.java | 38 ++-- .../fabric/argument/CompoundTagArgument.java | 32 ++- .../fabric/argument/EntityAnchorArgument.java | 34 ++-- .../argument/FabricArgumentParsers.java | 18 +- .../fabric/argument/FloatRangeArgument.java | 53 +++-- .../fabric/argument/IdentifierArgument.java | 34 ++-- .../fabric/argument/IntRangeArgument.java | 53 +++-- .../fabric/argument/ItemDataArgument.java | 51 +++-- .../fabric/argument/NbtPathArgument.java | 33 +++- .../fabric/argument/NbtTagArgument.java | 35 ++-- .../argument/ParticleEffectArgument.java | 30 ++- .../argument/RegistryEntryArgument.java | 41 ++-- .../argument/ScoreboardCriterionArgument.java | 32 ++- .../argument/ScoreboardOperationArgument.java | 14 +- .../fabric/argument/SidedArgumentParser.java | 13 +- .../fabric/argument/StatusEffectArgument.java | 32 +-- .../fabric/argument/TeamArgument.java | 50 +++-- .../fabric/argument/TimeArgument.java | 32 ++- .../argument/server/BlockPosArgument.java | 48 +++-- .../argument/server/ColumnPosArgument.java | 46 +++-- .../argument/server/MessageArgument.java | 18 +- .../MultipleEntitySelectorArgument.java | 19 +- .../MultiplePlayerSelectorArgument.java | 19 +- .../server/SingleEntitySelectorArgument.java | 17 +- .../server/SinglePlayerSelectorArgument.java | 19 +- .../{Vec2Argument.java => Vec2dArgument.java} | 85 ++++---- .../{Vec3Argument.java => Vec3dArgument.java} | 87 ++++---- .../fabric/data/Coordinates.java | 2 +- .../fabric/data/Selector.java | 6 +- .../fabric/testmod/FabricExample.java | 9 +- 37 files changed, 752 insertions(+), 539 deletions(-) rename cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/{Vec2Argument.java => Vec2dArgument.java} (68%) rename cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/{Vec3Argument.java => Vec3dArgument.java} (68%) diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricCaptionRegistry.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricCaptionRegistry.java index 0e746e56..f516aa07 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricCaptionRegistry.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricCaptionRegistry.java @@ -26,7 +26,7 @@ package cloud.commandframework.fabric; import cloud.commandframework.captions.SimpleCaptionRegistry; /** - * Caption registry that uses bi-functions to produce messages + * Caption registry that uses bi-functions to produce messages. * * @param Command sender type * @since 1.5.0 @@ -38,7 +38,9 @@ public class FabricCaptionRegistry extends SimpleCaptionRegistry { * * @since 1.5.0 */ - public static final String ARGUMENT_PARSE_FAILURE_REGISTRY_ENTRY_UNKNOWN_ENTRY = "Could not find key {id} in registry '{registry}'"; + public static final String ARGUMENT_PARSE_FAILURE_REGISTRY_ENTRY_UNKNOWN_ENTRY = + "Could not find value with key '{id}' in registry '{registry}'."; + /** * Default caption for {@link FabricCaptionKeys#ARGUMENT_PARSE_FAILURE_TEAM_UNKNOWN} * diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricCommandManager.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricCommandManager.java index b9e843f6..828d02a6 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricCommandManager.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricCommandManager.java @@ -208,7 +208,7 @@ public abstract class FabricCommandManager extends C @SuppressWarnings({"unchecked", "rawtypes"}) private void registerRegistryEntryMappings() { this.brigadierManager.registerMapping( - new TypeToken>() { + new TypeToken>() { }, builder -> builder.to(argument -> { /* several registries have specialized argument types, so let's use those where possible */ @@ -289,7 +289,7 @@ public abstract class FabricCommandManager extends C /* and now, finally, we can register */ this.getParserRegistry().registerParserSupplier( TypeToken.get(valueType), - params -> new RegistryEntryArgument.RegistryEntryParser(key) + params -> new RegistryEntryArgument.Parser(key) ); } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricExecutor.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricExecutor.java index 13084342..0a0a0fc9 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricExecutor.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricExecutor.java @@ -29,7 +29,6 @@ import cloud.commandframework.exceptions.InvalidCommandSenderException; import cloud.commandframework.exceptions.InvalidSyntaxException; import cloud.commandframework.exceptions.NoPermissionException; import cloud.commandframework.exceptions.NoSuchCommandException; -import cloud.commandframework.execution.CommandResult; import com.mojang.brigadier.Command; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; @@ -52,6 +51,7 @@ import java.util.function.BiConsumer; import java.util.function.Function; final class FabricExecutor implements Command { + private static final Logger LOGGER = LogManager.getLogger(); private static final Text NEWLINE = new LiteralText("\n"); @@ -80,104 +80,96 @@ final class FabricExecutor implements Command { final S source = ctx.getSource(); final String input = ctx.getInput().substring(ctx.getLastChild().getNodes().get(0).getRange().getStart()); final C sender = this.manager.getCommandSourceMapper().apply(source); - this.manager.executeCommand(sender, input).whenComplete(this.getResultConsumer(source, sender)); + this.manager.executeCommand(sender, input).whenComplete((result, throwable) -> { + if (throwable == null) { + return; + } + if (throwable instanceof CompletionException) { + throwable = throwable.getCause(); + } + this.handleThrowable(source, sender, throwable); + }); return com.mojang.brigadier.Command.SINGLE_SUCCESS; } - private @NonNull BiConsumer<@NonNull CommandResult, ? super Throwable> getResultConsumer( - final @NonNull S source, - final @NonNull C sender - ) { - return (result, throwable) -> { - if (throwable != null) { - if (throwable instanceof CompletionException) { - throwable = throwable.getCause(); - } - final Throwable finalThrowable = throwable; - if (throwable instanceof InvalidSyntaxException) { - this.manager.handleException( - sender, - InvalidSyntaxException.class, - (InvalidSyntaxException) throwable, - (c, e) -> - this.sendError.accept( - source, - new LiteralText("Invalid Command Syntax. Correct command syntax is: ") - .append(new LiteralText(String.format("/%s", e.getCorrectSyntax())) - .styled(style -> style.withColor(Formatting.GRAY)))) - ); - } else if (throwable instanceof InvalidCommandSenderException) { - this.manager.handleException( - sender, - InvalidCommandSenderException.class, - (InvalidCommandSenderException) throwable, - (c, e) -> - this.sendError.accept(source, new LiteralText(finalThrowable.getMessage())) - ); - } else if (throwable instanceof NoPermissionException) { - this.manager.handleException( - sender, - NoPermissionException.class, - (NoPermissionException) throwable, - (c, e) -> this.sendError.accept(source, new LiteralText(MESSAGE_NO_PERMS)) - ); - } else if (throwable instanceof NoSuchCommandException) { - this.manager.handleException( - sender, - NoSuchCommandException.class, - (NoSuchCommandException) throwable, - (c, e) -> this.sendError.accept(source, new LiteralText(MESSAGE_UNKNOWN_COMMAND)) - ); - } else if (throwable instanceof ArgumentParseException) { - this.manager.handleException( - sender, - ArgumentParseException.class, - (ArgumentParseException) throwable, - (c, e) -> { - if (finalThrowable.getCause() instanceof CommandSyntaxException) { - this.sendError.accept(source, new LiteralText("Invalid Command Argument: ") - .append(new LiteralText("") - .append(Texts.toText(((CommandSyntaxException) finalThrowable.getCause()).getRawMessage())) + private void handleThrowable(final @NonNull S source, final @NonNull C sender, final @NonNull Throwable throwable) { + if (throwable instanceof InvalidSyntaxException) { + this.manager.handleException( + sender, + InvalidSyntaxException.class, + (InvalidSyntaxException) throwable, + (c, e) -> this.sendError.accept( + source, + new LiteralText("Invalid Command Syntax. Correct command syntax is: ") + .append(new LiteralText(String.format("/%s", e.getCorrectSyntax())) + .styled(style -> style.withColor(Formatting.GRAY))) + ) + ); + } else if (throwable instanceof InvalidCommandSenderException) { + this.manager.handleException( + sender, + InvalidCommandSenderException.class, + (InvalidCommandSenderException) throwable, + (c, e) -> this.sendError.accept(source, new LiteralText(throwable.getMessage())) + ); + } else if (throwable instanceof NoPermissionException) { + this.manager.handleException( + sender, + NoPermissionException.class, + (NoPermissionException) throwable, + (c, e) -> this.sendError.accept(source, new LiteralText(MESSAGE_NO_PERMS)) + ); + } else if (throwable instanceof NoSuchCommandException) { + this.manager.handleException( + sender, + NoSuchCommandException.class, + (NoSuchCommandException) throwable, + (c, e) -> this.sendError.accept(source, new LiteralText(MESSAGE_UNKNOWN_COMMAND)) + ); + } else if (throwable instanceof ArgumentParseException) { + this.manager.handleException( + sender, + ArgumentParseException.class, + (ArgumentParseException) throwable, + (c, e) -> { + if (throwable.getCause() instanceof CommandSyntaxException) { + this.sendError.accept(source, new LiteralText("Invalid Command Argument: ") + .append(new LiteralText("") + .append(Texts.toText(((CommandSyntaxException) throwable.getCause()).getRawMessage())) .formatted(Formatting.GRAY))); - } else { - this.sendError.accept(source, new LiteralText("Invalid Command Argument: ") - .append(new LiteralText(finalThrowable.getCause().getMessage()) + } else { + this.sendError.accept(source, new LiteralText("Invalid Command Argument: ") + .append(new LiteralText(throwable.getCause().getMessage()) .formatted(Formatting.GRAY))); - } - } - ); - } else if (throwable instanceof CommandExecutionException) { - this.manager.handleException( - sender, - CommandExecutionException.class, - (CommandExecutionException) throwable, - (c, e) -> { - this.sendError.accept(source, this.decorateHoverStacktrace( - new LiteralText(MESSAGE_INTERNAL_ERROR), - finalThrowable.getCause(), - sender - )); - LOGGER.warn( - "Error occurred while executing command for user {}:", - this.getName.apply(source), - finalThrowable - ); - } - ); - } else { - this.sendError.accept(source, this.decorateHoverStacktrace( - new LiteralText(MESSAGE_INTERNAL_ERROR), - throwable, - sender - )); - LOGGER.warn( - "Error occurred while executing command for user {}:", - this.getName.apply(source), - throwable - ); - } - } - }; + } + } + ); + } else if (throwable instanceof CommandExecutionException) { + this.manager.handleException( + sender, + CommandExecutionException.class, + (CommandExecutionException) throwable, + (c, e) -> { + this.sendError.accept(source, this.decorateHoverStacktrace( + new LiteralText(MESSAGE_INTERNAL_ERROR), + throwable.getCause(), + sender + )); + LOGGER.warn( + "Error occurred while executing command for user {}:", + this.getName.apply(source), + throwable + ); + } + ); + } else { + this.sendError.accept(source, this.decorateHoverStacktrace( + new LiteralText(MESSAGE_INTERNAL_ERROR), + throwable, + sender + )); + LOGGER.warn("Error occurred while executing command for user {}:", this.getName.apply(source), throwable); + } } private MutableText decorateHoverStacktrace(final MutableText input, final Throwable cause, final C sender) { @@ -189,13 +181,12 @@ final class FabricExecutor implements Command { cause.printStackTrace(new PrintWriter(writer)); final String stackTrace = writer.toString().replace("\t", " "); return input.styled(style -> style - .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, + .withHoverEvent(new HoverEvent( + HoverEvent.Action.SHOW_TEXT, new LiteralText(stackTrace) .append(NEWLINE) .append(new LiteralText(" Click to copy") - .styled(s2 -> s2 - .withColor(Formatting.GRAY) - .withItalic(true))) + .styled(s2 -> s2.withColor(Formatting.GRAY).withItalic(true))) )) .withClickEvent(new ClickEvent( ClickEvent.Action.COPY_TO_CLIPBOARD, diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricServerCommandManager.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricServerCommandManager.java index f3ef6d88..d598924a 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricServerCommandManager.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricServerCommandManager.java @@ -189,7 +189,8 @@ public final class FabricServerCommandManager extends FabricCommandManagerThe current implementation checks op level, pending a full Fabric permissions api.

+ *

The current implementation checks permissions using {@code fabric-permissions-api-v0}, + * falling back to op level checks.

* * @param sender Command sender * @param permission Permission node diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/annotations/specifier/Center.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/annotations/specifier/Center.java index 0ad88152..a1f830a5 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/annotations/specifier/Center.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/annotations/specifier/Center.java @@ -23,8 +23,8 @@ // package cloud.commandframework.fabric.annotations.specifier; -import cloud.commandframework.fabric.argument.server.Vec2Argument; -import cloud.commandframework.fabric.argument.server.Vec3Argument; +import cloud.commandframework.fabric.argument.server.Vec2dArgument; +import cloud.commandframework.fabric.argument.server.Vec3dArgument; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -32,7 +32,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Annotation used to enable coordinate centering for {@link Vec3Argument} and {@link Vec2Argument}. + * Annotation used to enable coordinate centering for {@link Vec3dArgument} and {@link Vec2dArgument}. * * @since 1.5.0 */ diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/AngleArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/AngleArgument.java index cccda3e5..464079ac 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/AngleArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/AngleArgument.java @@ -61,19 +61,19 @@ public final class AngleArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static AngleArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new AngleArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link AngleArgument}. * * @param name Component name * @param Command sender type @@ -81,11 +81,11 @@ public final class AngleArgument extends CommandArgument @NonNull AngleArgument of(final @NonNull String name) { - return AngleArgument.newBuilder(name).asRequired().build(); + return AngleArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link AngleArgument}. * * @param name Component name * @param Command sender type @@ -93,11 +93,11 @@ public final class AngleArgument extends CommandArgument @NonNull AngleArgument optional(final @NonNull String name) { - return AngleArgument.newBuilder(name).asOptional().build(); + return AngleArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link AngleArgument} with the specified default value. * * @param name Argument name * @param defaultAngle Default angle, in degrees @@ -109,7 +109,7 @@ public final class AngleArgument extends CommandArgumentnewBuilder(name).asOptionalWithDefault(Float.toString(defaultAngle)).build(); + return AngleArgument.builder(name).asOptionalWithDefault(defaultAngle).build(); } @@ -126,7 +126,7 @@ public final class AngleArgument extends CommandArgument extends CommandArgument asOptionalWithDefault(final float defaultValue) { + return this.asOptionalWithDefault(Float.toString(defaultValue)); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/AxisArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/AxisArgument.java index a4e8094c..eba89fb8 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/AxisArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/AxisArgument.java @@ -39,7 +39,7 @@ import java.util.Set; import java.util.function.BiFunction; /** - * An argument for a set of axes, described in Vanilla as a "swizzle". + * An argument for a set of {@link net.minecraft.util.math.Direction.Axis axes}, described in Vanilla as a "swizzle". * * @param the sender type * @since 1.5.0 @@ -68,19 +68,19 @@ public final class AxisArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static AxisArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new AxisArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link AxisArgument}. * * @param name Component name * @param Command sender type @@ -88,11 +88,11 @@ public final class AxisArgument extends CommandArgument @NonNull AxisArgument of(final @NonNull String name) { - return AxisArgument.newBuilder(name).asRequired().build(); + return AxisArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link AxisArgument}. * * @param name Component name * @param Command sender type @@ -100,27 +100,23 @@ public final class AxisArgument extends CommandArgument @NonNull AxisArgument optional(final @NonNull String name) { - return AxisArgument.newBuilder(name).asOptional().build(); + return AxisArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link AxisArgument} with the specified default value. * - * @param name Argument name - * @param defaultValues Default axes to include - * @param Command sender type + * @param name Argument name + * @param defaultValue Default axes to include + * @param Command sender type * @return Created argument * @since 1.5.0 */ public static @NonNull AxisArgument optional( final @NonNull String name, - final @NonNull Set defaultValues + final @NonNull Set defaultValue ) { - final StringBuilder builder = new StringBuilder(); - for (final Direction.Axis axis : defaultValues) { - builder.append(axis.getName()); - } - return AxisArgument.newBuilder(name).asOptionalWithDefault(builder.toString()).build(); + return AxisArgument.builder(name).asOptionalWithDefault(defaultValue).build(); } @@ -137,7 +133,7 @@ public final class AxisArgument extends CommandArgument extends CommandArgument asOptionalWithDefault(final @NonNull Set defaultValue) { + if (defaultValue.isEmpty()) { + throw new IllegalArgumentException("Default value must include at least one Axis!"); + } + final StringBuilder builder = new StringBuilder(); + for (final Direction.Axis axis : defaultValue) { + builder.append(axis.getName()); + } + return this.asOptionalWithDefault(builder.toString()); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ColorArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ColorArgument.java index 7495d37e..5ede8fae 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ColorArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ColorArgument.java @@ -62,19 +62,19 @@ public final class ColorArgument extends CommandArgument { } /** - * Create a new builder. + * Create a new {@link Builder}. * * @param name Name of the component * @param Command sender type * @return Created builder * @since 1.5.0 */ - public static ColorArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new ColorArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link ColorArgument}. * * @param name Component name * @param Command sender type @@ -82,11 +82,11 @@ public final class ColorArgument extends CommandArgument { * @since 1.5.0 */ public static @NonNull ColorArgument of(final @NonNull String name) { - return ColorArgument.newBuilder(name).asRequired().build(); + return ColorArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link ColorArgument}. * * @param name Component name * @param Command sender type @@ -94,11 +94,11 @@ public final class ColorArgument extends CommandArgument { * @since 1.5.0 */ public static @NonNull ColorArgument optional(final @NonNull String name) { - return ColorArgument.newBuilder(name).asOptional().build(); + return ColorArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link ColorArgument} with the specified default value. * * @param name Component name * @param defaultColor Default colour, must be {@link Formatting#isColor() a color} @@ -110,10 +110,7 @@ public final class ColorArgument extends CommandArgument { final @NonNull String name, final @NonNull Formatting defaultColor ) { - if (!defaultColor.isColor()) { - throw new IllegalArgumentException("Only color types are allowed but " + defaultColor + " was provided"); - } - return ColorArgument.newBuilder(name).asOptionalWithDefault(defaultColor.toString()).build(); + return ColorArgument.builder(name).asOptionalWithDefault(defaultColor).build(); } @@ -130,7 +127,7 @@ public final class ColorArgument extends CommandArgument { } /** - * Build a new color argument. + * Build a new {@link ColorArgument}. * * @return Constructed argument * @since 1.5.0 @@ -146,6 +143,21 @@ public final class ColorArgument extends CommandArgument { ); } + /** + * Sets the command argument to be optional, with the specified default value. + * + * @param defaultColor default value, must be {@link Formatting#isColor() a color} + * @return this builder + * @see CommandArgument.Builder#asOptionalWithDefault(String) + * @since 1.5.0 + */ + public @NonNull Builder asOptionalWithDefault(final @NonNull Formatting defaultColor) { + if (!defaultColor.isColor()) { + throw new IllegalArgumentException("Only color types are allowed but " + defaultColor + " was provided"); + } + return this.asOptionalWithDefault(defaultColor.toString()); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/CompoundTagArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/CompoundTagArgument.java index f54987ee..d2254cdb 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/CompoundTagArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/CompoundTagArgument.java @@ -62,19 +62,19 @@ public final class CompoundTagArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static CompoundTagArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new CompoundTagArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link CompoundTagArgument}. * * @param name Component name * @param Command sender type @@ -82,11 +82,11 @@ public final class CompoundTagArgument extends CommandArgument @NonNull CompoundTagArgument of(final @NonNull String name) { - return CompoundTagArgument.newBuilder(name).asRequired().build(); + return CompoundTagArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link CompoundTagArgument}. * * @param name Component name * @param Command sender type @@ -94,11 +94,11 @@ public final class CompoundTagArgument extends CommandArgument @NonNull CompoundTagArgument optional(final @NonNull String name) { - return CompoundTagArgument.newBuilder(name).asOptional().build(); + return CompoundTagArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link CompoundTagArgument} with the specified default value. * * @param name Component name * @param defaultTag Default tag value @@ -110,7 +110,7 @@ public final class CompoundTagArgument extends CommandArgumentnewBuilder(name).asOptionalWithDefault(defaultTag.toString()).build(); + return CompoundTagArgument.builder(name).asOptionalWithDefault(defaultTag).build(); } @@ -127,7 +127,7 @@ public final class CompoundTagArgument extends CommandArgument extends CommandArgument asOptionalWithDefault(final @NonNull CompoundTag defaultValue) { + return this.asOptionalWithDefault(defaultValue.toString()); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/EntityAnchorArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/EntityAnchorArgument.java index 8e466273..31b8ee89 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/EntityAnchorArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/EntityAnchorArgument.java @@ -35,7 +35,7 @@ import java.util.List; import java.util.function.BiFunction; /** - * An argument parsing an entity anchor. + * An argument parsing an {@link net.minecraft.command.argument.EntityAnchorArgumentType.EntityAnchor}. * * @param the sender type * @since 1.5.0 @@ -61,19 +61,19 @@ public final class EntityAnchorArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static EntityAnchorArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new EntityAnchorArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link EntityAnchorArgument}. * * @param name Component name * @param Command sender type @@ -81,11 +81,11 @@ public final class EntityAnchorArgument extends CommandArgument @NonNull EntityAnchorArgument of(final @NonNull String name) { - return EntityAnchorArgument.newBuilder(name).asRequired().build(); + return EntityAnchorArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link EntityAnchorArgument}. * * @param name Component name * @param Command sender type @@ -93,11 +93,11 @@ public final class EntityAnchorArgument extends CommandArgument @NonNull EntityAnchorArgument optional(final @NonNull String name) { - return EntityAnchorArgument.newBuilder(name).asOptional().build(); + return EntityAnchorArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link EntityAnchorArgument} with the specified default value. * * @param name Argument name * @param defaultValue Default value @@ -109,7 +109,7 @@ public final class EntityAnchorArgument extends CommandArgumentnewBuilder(name).asOptionalWithDefault(defaultValue.name()).build(); + return EntityAnchorArgument.builder(name).asOptionalWithDefault(defaultValue).build(); } @@ -126,7 +126,7 @@ public final class EntityAnchorArgument extends CommandArgument extends CommandArgument asOptionalWithDefault(final EntityAnchorArgumentType.@NonNull EntityAnchor defaultValue) { + return this.asOptionalWithDefault(defaultValue.name()); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/FabricArgumentParsers.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/FabricArgumentParsers.java index 537ffddc..05d670d1 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/FabricArgumentParsers.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/FabricArgumentParsers.java @@ -366,7 +366,7 @@ public final class FabricArgumentParsers { } @Override - public @NonNull PosArgument getWrappedCoordinates() { + public @NonNull PosArgument wrappedCoordinates() { return this.posArgument; } @@ -389,12 +389,12 @@ public final class FabricArgumentParsers { } @Override - public @NonNull String getInput() { + public @NonNull String inputString() { return this.inputString; } @Override - public @NonNull EntitySelector getSelector() { + public @NonNull EntitySelector selector() { return this.entitySelector; } @@ -422,12 +422,12 @@ public final class FabricArgumentParsers { } @Override - public @NonNull String getInput() { + public @NonNull String inputString() { return this.inputString; } @Override - public @NonNull EntitySelector getSelector() { + public @NonNull EntitySelector selector() { return this.entitySelector; } @@ -455,12 +455,12 @@ public final class FabricArgumentParsers { } @Override - public @NonNull String getInput() { + public @NonNull String inputString() { return this.inputString; } @Override - public @NonNull EntitySelector getSelector() { + public @NonNull EntitySelector selector() { return this.entitySelector; } @@ -488,12 +488,12 @@ public final class FabricArgumentParsers { } @Override - public @NonNull String getInput() { + public @NonNull String inputString() { return this.inputString; } @Override - public @NonNull EntitySelector getSelector() { + public @NonNull EntitySelector selector() { return this.entitySelector; } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/FloatRangeArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/FloatRangeArgument.java index 30872509..1c4a29c6 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/FloatRangeArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/FloatRangeArgument.java @@ -36,8 +36,8 @@ import java.util.List; import java.util.function.BiFunction; /** - * An argument parsing an unbounded float range, in the form {@code [min]..[max] }, where both lower and upper bounds are - * optional. + * An argument parsing an unbounded {@link net.minecraft.predicate.NumberRange.FloatRange float range}, in the form + * {@code [min]..[max]}, where both lower and upper bounds are optional. * * @param the sender type * @since 1.5.0 @@ -63,19 +63,19 @@ public final class FloatRangeArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static FloatRangeArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new FloatRangeArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link FloatRangeArgument}. * * @param name Component name * @param Command sender type @@ -83,11 +83,11 @@ public final class FloatRangeArgument extends CommandArgument @NonNull FloatRangeArgument of(final @NonNull String name) { - return FloatRangeArgument.newBuilder(name).asRequired().build(); + return FloatRangeArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link FloatRangeArgument}. * * @param name Component name * @param Command sender type @@ -95,11 +95,11 @@ public final class FloatRangeArgument extends CommandArgument @NonNull FloatRangeArgument optional(final @NonNull String name) { - return FloatRangeArgument.newBuilder(name).asOptional().build(); + return FloatRangeArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link FloatRangeArgument} with the specified default value. * * @param name Argument name * @param defaultValue Default value @@ -111,16 +111,7 @@ public final class FloatRangeArgument extends CommandArgumentnewBuilder(name).asOptionalWithDefault(value.toString()).build(); + return FloatRangeArgument.builder(name).asOptionalWithDefault(defaultValue).build(); } @@ -137,7 +128,7 @@ public final class FloatRangeArgument extends CommandArgument extends CommandArgument asOptionalWithDefault(final NumberRange.@NonNull FloatRange defaultValue) { + final StringBuilder value = new StringBuilder(6); + if (defaultValue.getMin() != null) { + value.append(defaultValue.getMin()); + } + value.append(".."); + if (defaultValue.getMax() != null) { + value.append(defaultValue.getMax()); + } + return this.asOptionalWithDefault(value.toString()); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/IdentifierArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/IdentifierArgument.java index 0ec78646..b4477a37 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/IdentifierArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/IdentifierArgument.java @@ -36,7 +36,7 @@ import java.util.List; import java.util.function.BiFunction; /** - * An argument parsing an identifier, or "resource location". + * An argument parsing an {@link Identifier}, or "resource location". * * @param the sender type * @since 1.5.0 @@ -62,19 +62,19 @@ public final class IdentifierArgument extends CommandArgument } /** - * Create a new builder. + * Create a new {@link Builder}. * * @param name Name of the argument * @param Command sender type * @return Created builder * @since 1.5.0 */ - public static IdentifierArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new IdentifierArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link IdentifierArgument}. * * @param name Component name * @param Command sender type @@ -82,11 +82,11 @@ public final class IdentifierArgument extends CommandArgument * @since 1.5.0 */ public static @NonNull IdentifierArgument of(final @NonNull String name) { - return IdentifierArgument.newBuilder(name).asRequired().build(); + return IdentifierArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link IdentifierArgument}. * * @param name Component name * @param Command sender type @@ -94,11 +94,11 @@ public final class IdentifierArgument extends CommandArgument * @since 1.5.0 */ public static @NonNull IdentifierArgument optional(final @NonNull String name) { - return IdentifierArgument.newBuilder(name).asOptional().build(); + return IdentifierArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link IdentifierArgument} with the specified default value. * * @param name Argument name * @param defaultValue Default value @@ -110,7 +110,7 @@ public final class IdentifierArgument extends CommandArgument final @NonNull String name, final @NonNull Identifier defaultValue ) { - return IdentifierArgument.newBuilder(name).asOptionalWithDefault(defaultValue.toString()).build(); + return IdentifierArgument.builder(name).asOptionalWithDefault(defaultValue).build(); } @@ -127,7 +127,7 @@ public final class IdentifierArgument extends CommandArgument } /** - * Build a new identifier argument. + * Build a new {@link IdentifierArgument}. * * @return Constructed argument * @since 1.5.0 @@ -143,6 +143,18 @@ public final class IdentifierArgument extends CommandArgument ); } + /** + * Sets the command argument to be optional, with the specified default value. + * + * @param defaultValue default value + * @return this builder + * @see CommandArgument.Builder#asOptionalWithDefault(String) + * @since 1.5.0 + */ + public @NonNull Builder asOptionalWithDefault(final @NonNull Identifier defaultValue) { + return this.asOptionalWithDefault(defaultValue.toString()); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/IntRangeArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/IntRangeArgument.java index ee0e871a..664d6ec2 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/IntRangeArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/IntRangeArgument.java @@ -36,8 +36,8 @@ import java.util.List; import java.util.function.BiFunction; /** - * An argument parsing an unbounded number range, in the form {@code [min]..[max] }, where both lower and upper bounds are - * optional. + * An argument parsing an unbounded {@link net.minecraft.predicate.NumberRange.IntRange integer range}, in the form + * {@code [min]..[max]}, where both lower and upper bounds are optional. * * @param the sender type * @since 1.5.0 @@ -63,19 +63,19 @@ public final class IntRangeArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static IntRangeArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new IntRangeArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link IntRangeArgument}. * * @param name Component name * @param Command sender type @@ -83,11 +83,11 @@ public final class IntRangeArgument extends CommandArgument @NonNull IntRangeArgument of(final @NonNull String name) { - return IntRangeArgument.newBuilder(name).asRequired().build(); + return IntRangeArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link IntRangeArgument}. * * @param name Component name * @param Command sender type @@ -95,11 +95,11 @@ public final class IntRangeArgument extends CommandArgument @NonNull IntRangeArgument optional(final @NonNull String name) { - return IntRangeArgument.newBuilder(name).asOptional().build(); + return IntRangeArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link IntRangeArgument} with the specified default value. * * @param name Argument name * @param defaultValue Default value @@ -111,16 +111,7 @@ public final class IntRangeArgument extends CommandArgumentnewBuilder(name).asOptionalWithDefault(value.toString()).build(); + return IntRangeArgument.builder(name).asOptionalWithDefault(defaultValue).build(); } @@ -137,7 +128,7 @@ public final class IntRangeArgument extends CommandArgument extends CommandArgument asOptionalWithDefault(final NumberRange.@NonNull IntRange defaultValue) { + final StringBuilder value = new StringBuilder(6); + if (defaultValue.getMin() != null) { + value.append(defaultValue.getMin()); + } + value.append(".."); + if (defaultValue.getMax() != null) { + value.append(defaultValue.getMax()); + } + return this.asOptionalWithDefault(value.toString()); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ItemDataArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ItemDataArgument.java index 8b9542af..9a7514d7 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ItemDataArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ItemDataArgument.java @@ -38,7 +38,7 @@ import java.util.List; import java.util.function.BiFunction; /** - * An argument parsing an item identifier and optional NBT data. + * An argument parsing an item identifier and optional extra NBT data into an {@link ItemStackArgument}. * * @param the sender type * @since 1.5.0 @@ -64,19 +64,19 @@ public final class ItemDataArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static ItemDataArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new ItemDataArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link ItemDataArgument}. * * @param name Component name * @param Command sender type @@ -84,11 +84,11 @@ public final class ItemDataArgument extends CommandArgument @NonNull ItemDataArgument of(final @NonNull String name) { - return ItemDataArgument.newBuilder(name).asRequired().build(); + return ItemDataArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link ItemDataArgument}. * * @param name Component name * @param Command sender type @@ -96,11 +96,11 @@ public final class ItemDataArgument extends CommandArgument @NonNull ItemDataArgument optional(final @NonNull String name) { - return ItemDataArgument.newBuilder(name).asOptional().build(); + return ItemDataArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link ItemDataArgument} with the specified default value. * * @param name Argument name * @param defaultValue Default value @@ -108,17 +108,8 @@ public final class ItemDataArgument extends CommandArgument @NonNull ItemDataArgument optional( - final @NonNull String name, - final @NonNull ItemStack defaultValue - ) { - final String serializedDefault; - if (defaultValue.hasTag()) { - serializedDefault = Registry.ITEM.getId(defaultValue.getItem()).toString() + defaultValue.getTag().toString(); - } else { - serializedDefault = Registry.ITEM.getId(defaultValue.getItem()).toString(); - } - return ItemDataArgument.newBuilder(name).asOptionalWithDefault(serializedDefault).build(); + public static @NonNull ItemDataArgument optional(final @NonNull String name, final @NonNull ItemStack defaultValue) { + return ItemDataArgument.builder(name).asOptionalWithDefault(defaultValue).build(); } @@ -134,7 +125,7 @@ public final class ItemDataArgument extends CommandArgument extends CommandArgument asOptionalWithDefault(final @NonNull ItemStack defaultValue) { + final String serializedDefault; + if (defaultValue.hasTag()) { + serializedDefault = Registry.ITEM.getId(defaultValue.getItem()) + defaultValue.getTag().toString(); + } else { + serializedDefault = Registry.ITEM.getId(defaultValue.getItem()).toString(); + } + return this.asOptionalWithDefault(serializedDefault); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/NbtPathArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/NbtPathArgument.java index cbb36d0a..86a7d4e2 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/NbtPathArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/NbtPathArgument.java @@ -35,7 +35,8 @@ import java.util.List; import java.util.function.BiFunction; /** - * An argument for NBT paths to locations within {@link net.minecraft.nbt.Tag Tags}. + * An argument for {@link net.minecraft.command.argument.NbtPathArgumentType.NbtPath NBT paths} to locations within + * {@link net.minecraft.nbt.Tag Tags}. * * @param the sender type * @since 1.5.0 @@ -61,19 +62,19 @@ public final class NbtPathArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static NbtPathArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new NbtPathArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link NbtPathArgument}. * * @param name Component name * @param Command sender type @@ -81,11 +82,11 @@ public final class NbtPathArgument extends CommandArgument @NonNull NbtPathArgument of(final @NonNull String name) { - return NbtPathArgument.newBuilder(name).asRequired().build(); + return NbtPathArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link NbtPathArgument}. * * @param name Component name * @param Command sender type @@ -93,11 +94,11 @@ public final class NbtPathArgument extends CommandArgument @NonNull NbtPathArgument optional(final @NonNull String name) { - return NbtPathArgument.newBuilder(name).asOptional().build(); + return NbtPathArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link NbtPathArgument} with the specified default value. * * @param name Component name * @param defaultTag Default tag value @@ -109,7 +110,7 @@ public final class NbtPathArgument extends CommandArgumentnewBuilder(name).asOptionalWithDefault(defaultTag.toString()).build(); + return NbtPathArgument.builder(name).asOptionalWithDefault(defaultTag).build(); } @@ -142,6 +143,18 @@ public final class NbtPathArgument extends CommandArgument asOptionalWithDefault(final NbtPathArgumentType.@NonNull NbtPath defaultValue) { + return this.asOptionalWithDefault(defaultValue.toString()); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/NbtTagArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/NbtTagArgument.java index bcca49cd..3c45554e 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/NbtTagArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/NbtTagArgument.java @@ -62,19 +62,19 @@ public final class NbtTagArgument extends CommandArgument { } /** - * Create a new builder. + * Create a new {@link Builder}. * * @param name Name of the component * @param Command sender type * @return Created builder * @since 1.5.0 */ - public static NbtTagArgument.@NonNull Builder newBuilder(final @NonNull String name) { + public static NbtTagArgument.@NonNull Builder builder(final @NonNull String name) { return new NbtTagArgument.Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link NbtTagArgument}. * * @param name Component name * @param Command sender type @@ -82,11 +82,11 @@ public final class NbtTagArgument extends CommandArgument { * @since 1.5.0 */ public static @NonNull NbtTagArgument of(final @NonNull String name) { - return NbtTagArgument.newBuilder(name).asRequired().build(); + return NbtTagArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link NbtTagArgument}. * * @param name Component name * @param Command sender type @@ -94,11 +94,11 @@ public final class NbtTagArgument extends CommandArgument { * @since 1.5.0 */ public static @NonNull NbtTagArgument optional(final @NonNull String name) { - return NbtTagArgument.newBuilder(name).asOptional().build(); + return NbtTagArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link NbtTagArgument} with the specified default value. * * @param name Component name * @param defaultTag Default tag value @@ -106,11 +106,8 @@ public final class NbtTagArgument extends CommandArgument { * @return Created component * @since 1.5.0 */ - public static @NonNull NbtTagArgument optional( - final @NonNull String name, - final @NonNull Tag defaultTag - ) { - return NbtTagArgument.newBuilder(name).asOptionalWithDefault(defaultTag.toString()).build(); + public static @NonNull NbtTagArgument optional(final @NonNull String name, final @NonNull Tag defaultTag) { + return NbtTagArgument.builder(name).asOptionalWithDefault(defaultTag).build(); } @@ -127,7 +124,7 @@ public final class NbtTagArgument extends CommandArgument { } /** - * Build a new nbt tag argument. + * Build a new {@link NbtTagArgument}. * * @return Constructed component * @since 1.5.0 @@ -143,6 +140,18 @@ public final class NbtTagArgument extends CommandArgument { ); } + /** + * Sets the command argument to be optional, with the specified default value. + * + * @param defaultValue default value + * @return this builder + * @see CommandArgument.Builder#asOptionalWithDefault(String) + * @since 1.5.0 + */ + public @NonNull Builder asOptionalWithDefault(final @NonNull Tag defaultValue) { + return this.asOptionalWithDefault(defaultValue.toString()); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ParticleEffectArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ParticleEffectArgument.java index b293dcec..8d904ad8 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ParticleEffectArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ParticleEffectArgument.java @@ -62,19 +62,19 @@ public final class ParticleEffectArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static ParticleEffectArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new ParticleEffectArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link ParticleEffectArgument}. * * @param name Component name * @param Command sender type @@ -82,11 +82,11 @@ public final class ParticleEffectArgument extends CommandArgument @NonNull ParticleEffectArgument of(final @NonNull String name) { - return ParticleEffectArgument.newBuilder(name).asRequired().build(); + return ParticleEffectArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link ParticleEffectArgument}. * * @param name Component name * @param Command sender type @@ -94,11 +94,11 @@ public final class ParticleEffectArgument extends CommandArgument @NonNull ParticleEffectArgument optional(final @NonNull String name) { - return ParticleEffectArgument.newBuilder(name).asOptional().build(); + return ParticleEffectArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link ParticleEffectArgument} with the specified default value. * * @param name Argument name * @param defaultValue Default particle effect value @@ -110,7 +110,7 @@ public final class ParticleEffectArgument extends CommandArgumentnewBuilder(name).asOptionalWithDefault(defaultValue.asString()).build(); + return ParticleEffectArgument.builder(name).asOptionalWithDefault(defaultValue).build(); } @@ -143,6 +143,18 @@ public final class ParticleEffectArgument extends CommandArgument asOptionalWithDefault(final @NonNull ParticleEffect defaultValue) { + return this.asOptionalWithDefault(defaultValue.asString()); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/RegistryEntryArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/RegistryEntryArgument.java index f81d21f4..ad3cad4b 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/RegistryEntryArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/RegistryEntryArgument.java @@ -52,7 +52,7 @@ import java.util.function.BiFunction; import static java.util.Objects.requireNonNull; /** - * Get a value from a registry. + * Argument for getting a values from a {@link Registry}. * *

Both static and dynamic registries are supported.

* @@ -76,7 +76,7 @@ public class RegistryEntryArgument extends CommandArgument { super( required, name, - new RegistryEntryParser<>(registry), + new Parser<>(registry), defaultValue, valueType, suggestionsProvider, @@ -85,7 +85,7 @@ public class RegistryEntryArgument extends CommandArgument { } /** - * Create a new builder. + * Create a new {@link Builder}. * * @param name Name of the argument * @param type The type of registry entry @@ -104,7 +104,7 @@ public class RegistryEntryArgument extends CommandArgument { } /** - * Create a new builder. + * Create a new {@link Builder}. * * @param name Name of the argument * @param type The type of registry entry @@ -123,7 +123,7 @@ public class RegistryEntryArgument extends CommandArgument { } /** - * Create a new required command argument. + * Create a new required {@link RegistryEntryArgument}. * * @param name Argument name * @param type The type of registry entry @@ -142,7 +142,7 @@ public class RegistryEntryArgument extends CommandArgument { } /** - * Create a new optional command argument. + * Create a new optional {@link RegistryEntryArgument}. * * @param name Argument name * @param type The type of registry entry @@ -161,7 +161,7 @@ public class RegistryEntryArgument extends CommandArgument { } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link RegistryEntryArgument} with the specified default value. * * @param name Argument name * @param type The type of registry entry @@ -179,7 +179,7 @@ public class RegistryEntryArgument extends CommandArgument { final @NonNull RegistryKey defaultValue ) { return RegistryEntryArgument.newBuilder(name, type, registry) - .asOptionalWithDefault(defaultValue.getValue().toString()) + .asOptionalWithDefault(defaultValue) .build(); } @@ -190,17 +190,17 @@ public class RegistryEntryArgument extends CommandArgument { * @param Registry entry type * @since 1.5.0 */ - public static final class RegistryEntryParser implements ArgumentParser { + public static final class Parser implements ArgumentParser { private final RegistryKey> registryIdent; /** - * Create a new parser for registry entries. + * Create a new {@link Parser}. * * @param registryIdent the registry identifier * @since 1.5.0 */ - public RegistryEntryParser(final RegistryKey> registryIdent) { + public Parser(final RegistryKey> registryIdent) { this.registryIdent = requireNonNull(registryIdent, "registryIdent"); } @@ -211,10 +211,7 @@ public class RegistryEntryArgument extends CommandArgument { ) { final String possibleIdentifier = inputQueue.peek(); if (possibleIdentifier == null) { - return ArgumentParseResult.failure(new NoInputProvidedException( - RegistryEntryArgument.class, - commandContext - )); + return ArgumentParseResult.failure(new NoInputProvidedException(RegistryEntryArgument.class, commandContext)); } final Identifier key; @@ -285,7 +282,7 @@ public class RegistryEntryArgument extends CommandArgument { } /** - * A builder for registry entry arguments. + * A builder for {@link RegistryEntryArgument}. * * @param The sender type * @param The registry value type @@ -326,6 +323,18 @@ public class RegistryEntryArgument extends CommandArgument { ); } + /** + * Sets the command argument to be optional, with the specified default value. + * + * @param defaultValue default value + * @return this builder + * @see CommandArgument.Builder#asOptionalWithDefault(String) + * @since 1.5.0 + */ + public @NonNull Builder asOptionalWithDefault(final @NonNull RegistryKey defaultValue) { + return this.asOptionalWithDefault(defaultValue.getValue().toString()); + } + } /** diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ScoreboardCriterionArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ScoreboardCriterionArgument.java index ce731c71..2b976c48 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ScoreboardCriterionArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ScoreboardCriterionArgument.java @@ -62,19 +62,19 @@ public final class ScoreboardCriterionArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static ScoreboardCriterionArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new ScoreboardCriterionArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link ScoreboardCriterionArgument}. * * @param name Component name * @param Command sender type @@ -82,11 +82,11 @@ public final class ScoreboardCriterionArgument extends CommandArgument @NonNull ScoreboardCriterionArgument of(final @NonNull String name) { - return ScoreboardCriterionArgument.newBuilder(name).asRequired().build(); + return ScoreboardCriterionArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link ScoreboardCriterionArgument}. * * @param name Component name * @param Command sender type @@ -94,11 +94,11 @@ public final class ScoreboardCriterionArgument extends CommandArgument @NonNull ScoreboardCriterionArgument optional(final @NonNull String name) { - return ScoreboardCriterionArgument.newBuilder(name).asOptional().build(); + return ScoreboardCriterionArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link ScoreboardCriterionArgument} with the specified default value. * * @param name Argument name * @param defaultCriterion Default criterion @@ -110,7 +110,7 @@ public final class ScoreboardCriterionArgument extends CommandArgumentnewBuilder(name).asOptionalWithDefault(defaultCriterion.getName()).build(); + return ScoreboardCriterionArgument.builder(name).asOptionalWithDefault(defaultCriterion).build(); } @@ -127,7 +127,7 @@ public final class ScoreboardCriterionArgument extends CommandArgument extends CommandArgument asOptionalWithDefault(final @NonNull ScoreboardCriterion defaultValue) { + return this.asOptionalWithDefault(defaultValue.getName()); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ScoreboardOperationArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ScoreboardOperationArgument.java index f6992f9f..7fa6dae4 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ScoreboardOperationArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ScoreboardOperationArgument.java @@ -64,19 +64,19 @@ public final class ScoreboardOperationArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static ScoreboardOperationArgument.@NonNull Builder newBuilder(final @NonNull String name) { + public static @NonNull Builder builder(final @NonNull String name) { return new ScoreboardOperationArgument.Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link ScoreboardOperationArgument}. * * @param name Component name * @param Command sender type @@ -84,11 +84,11 @@ public final class ScoreboardOperationArgument extends CommandArgument @NonNull ScoreboardOperationArgument of(final @NonNull String name) { - return ScoreboardOperationArgument.newBuilder(name).asRequired().build(); + return ScoreboardOperationArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link ScoreboardOperationArgument}. * * @param name Component name * @param Command sender type @@ -96,7 +96,7 @@ public final class ScoreboardOperationArgument extends CommandArgument @NonNull ScoreboardOperationArgument optional(final @NonNull String name) { - return ScoreboardOperationArgument.newBuilder(name).asOptional().build(); + return ScoreboardOperationArgument.builder(name).asOptional().build(); } /** @@ -112,7 +112,7 @@ public final class ScoreboardOperationArgument extends CommandArgument implements ArgumentParser { return intermediate.flatMapParsedValue(value -> { if (source instanceof ServerCommandSource) { - return this.resolveServer(commandContext, source, value); - } else if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { - return this.resolveClient(commandContext, source, value); + return this.resolveServer(commandContext, (ServerCommandSource) source, value); + } else if (source instanceof FabricClientCommandSource) { + return this.resolveClient(commandContext, (FabricClientCommandSource) source, value); } else { throw new IllegalStateException("Cannot have non-server command source when not on client"); } @@ -80,7 +79,7 @@ abstract class SidedArgumentParser implements ArgumentParser { */ protected abstract @NonNull ArgumentParseResult<@NonNull R> resolveClient( @NonNull CommandContext<@NonNull C> context, - @NonNull CommandSource source, + @NonNull FabricClientCommandSource source, @NonNull I value ); @@ -95,7 +94,7 @@ abstract class SidedArgumentParser implements ArgumentParser { */ protected abstract @NonNull ArgumentParseResult<@NonNull R> resolveServer( @NonNull CommandContext<@NonNull C> context, - @NonNull CommandSource source, + @NonNull ServerCommandSource source, @NonNull I value ); diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/StatusEffectArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/StatusEffectArgument.java index 6de6f854..4f3ffce7 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/StatusEffectArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/StatusEffectArgument.java @@ -63,19 +63,19 @@ public final class StatusEffectArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static StatusEffectArgument.@NonNull Builder newBuilder(final @NonNull String name) { + public static @NonNull Builder builder(final @NonNull String name) { return new StatusEffectArgument.Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link StatusEffectArgument}. * * @param name Component name * @param Command sender type @@ -83,11 +83,11 @@ public final class StatusEffectArgument extends CommandArgument @NonNull StatusEffectArgument of(final @NonNull String name) { - return StatusEffectArgument.newBuilder(name).asRequired().build(); + return StatusEffectArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link StatusEffectArgument}. * * @param name Component name * @param Command sender type @@ -95,11 +95,11 @@ public final class StatusEffectArgument extends CommandArgument @NonNull StatusEffectArgument optional(final @NonNull String name) { - return StatusEffectArgument.newBuilder(name).asOptional().build(); + return StatusEffectArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link StatusEffectArgument} with the specified default value. * * @param name Argument name * @param defaultValue Default value @@ -111,9 +111,7 @@ public final class StatusEffectArgument extends CommandArgumentnewBuilder(name) - .asOptionalWithDefault(Registry.STATUS_EFFECT.getId(defaultValue).toString()) - .build(); + return StatusEffectArgument.builder(name).asOptionalWithDefault(defaultValue).build(); } @@ -130,7 +128,7 @@ public final class StatusEffectArgument extends CommandArgument extends CommandArgument asOptionalWithDefault(final @NonNull StatusEffect defaultValue) { + return this.asOptionalWithDefault(Registry.STATUS_EFFECT.getId(defaultValue).toString()); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/TeamArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/TeamArgument.java index 71ffd53f..350d642a 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/TeamArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/TeamArgument.java @@ -32,9 +32,7 @@ import cloud.commandframework.exceptions.parsing.NoInputProvidedException; import cloud.commandframework.exceptions.parsing.ParserException; import cloud.commandframework.fabric.FabricCaptionKeys; import cloud.commandframework.fabric.FabricCommandContextKeys; -import net.minecraft.client.MinecraftClient; -import net.minecraft.command.CommandSource; -import net.minecraft.command.argument.EntityAnchorArgumentType; +import net.fabricmc.fabric.api.client.command.v1.FabricClientCommandSource; import net.minecraft.scoreboard.Team; import net.minecraft.server.command.ServerCommandSource; import org.checkerframework.checker.nullness.qual.NonNull; @@ -46,7 +44,7 @@ import java.util.Queue; import java.util.function.BiFunction; /** - * An argument parsing an entity anchor. + * An argument for parsing {@link Team Teams}. * * @param the sender type * @since 1.5.0 @@ -72,19 +70,19 @@ public final class TeamArgument extends CommandArgument { } /** - * Create a new builder. + * Create a new {@link Builder}. * * @param name Name of the argument * @param Command sender type * @return Created builder * @since 1.5.0 */ - public static TeamArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new TeamArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link TeamArgument}. * * @param name Component name * @param Command sender type @@ -92,11 +90,11 @@ public final class TeamArgument extends CommandArgument { * @since 1.5.0 */ public static @NonNull TeamArgument of(final @NonNull String name) { - return TeamArgument.newBuilder(name).asRequired().build(); + return TeamArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link TeamArgument}. * * @param name Component name * @param Command sender type @@ -104,11 +102,11 @@ public final class TeamArgument extends CommandArgument { * @since 1.5.0 */ public static @NonNull TeamArgument optional(final @NonNull String name) { - return TeamArgument.newBuilder(name).asOptional().build(); + return TeamArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link TeamArgument} with the specified default value. * * @param name Argument name * @param defaultValue Default value @@ -118,13 +116,13 @@ public final class TeamArgument extends CommandArgument { */ public static @NonNull TeamArgument optional( final @NonNull String name, - final EntityAnchorArgumentType.@NonNull EntityAnchor defaultValue + final @NonNull Team defaultValue ) { - return TeamArgument.newBuilder(name).asOptionalWithDefault(defaultValue.name()).build(); + return TeamArgument.builder(name).asOptionalWithDefault(defaultValue).build(); } /** - * Argument parser for {@link Team}. + * Argument parser for {@link Team Teams}. * * @param sender type * @since 1.5.0 @@ -154,10 +152,10 @@ public final class TeamArgument extends CommandArgument { @Override protected @NonNull ArgumentParseResult resolveClient( final @NonNull CommandContext context, - final @NonNull CommandSource source, + final @NonNull FabricClientCommandSource source, final @NonNull String value ) { - final Team result = MinecraftClient.getInstance().getNetworkHandler().getWorld().getScoreboard().getTeam(value); + final Team result = source.getClient().getNetworkHandler().getWorld().getScoreboard().getTeam(value); if (result == null) { return ArgumentParseResult.failure(new UnknownTeamException(context, value)); } @@ -167,10 +165,10 @@ public final class TeamArgument extends CommandArgument { @Override protected @NonNull ArgumentParseResult resolveServer( final @NonNull CommandContext context, - final @NonNull CommandSource source, + final @NonNull ServerCommandSource source, final @NonNull String value ) { - final Team result = ((ServerCommandSource) source).getWorld().getScoreboard().getTeam(value); + final Team result = source.getWorld().getScoreboard().getTeam(value); if (result == null) { return ArgumentParseResult.failure(new UnknownTeamException(context, value)); } @@ -192,7 +190,7 @@ public final class TeamArgument extends CommandArgument { } /** - * Build a new team argument. + * Build a new {@link TeamArgument}. * * @return Constructed argument * @since 1.5.0 @@ -208,6 +206,18 @@ public final class TeamArgument extends CommandArgument { ); } + /** + * Sets the command argument to be optional, with the specified default value. + * + * @param defaultValue default value + * @return this builder + * @see CommandArgument.Builder#asOptionalWithDefault(String) + * @since 1.5.0 + */ + public @NonNull Builder asOptionalWithDefault(final @NonNull Team defaultValue) { + return this.asOptionalWithDefault(defaultValue.getName()); + } + } /** diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/TimeArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/TimeArgument.java index d6a6b27e..3f5d811a 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/TimeArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/TimeArgument.java @@ -60,19 +60,19 @@ public final class TimeArgument extends CommandArgument { } /** - * Create a new builder. + * Create a new {@link Builder}. * * @param name Name of the argument * @param Command sender type * @return Created builder * @since 1.5.0 */ - public static TimeArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new TimeArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link TimeArgument}. * * @param name Component name * @param Command sender type @@ -80,11 +80,11 @@ public final class TimeArgument extends CommandArgument { * @since 1.5.0 */ public static @NonNull TimeArgument of(final @NonNull String name) { - return TimeArgument.newBuilder(name).asRequired().build(); + return TimeArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link TimeArgument}. * * @param name Component name * @param Command sender type @@ -92,11 +92,11 @@ public final class TimeArgument extends CommandArgument { * @since 1.5.0 */ public static @NonNull TimeArgument optional(final @NonNull String name) { - return TimeArgument.newBuilder(name).asOptional().build(); + return TimeArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value. + * Create a new optional {@link TimeArgument} with the specified default value. * * @param name Argument name * @param defaultTime Default time, in ticks @@ -108,7 +108,7 @@ public final class TimeArgument extends CommandArgument { final @NonNull String name, final @NonNull MinecraftTime defaultTime ) { - return TimeArgument.newBuilder(name).asOptionalWithDefault(defaultTime.toString()).build(); + return TimeArgument.builder(name).asOptionalWithDefault(defaultTime).build(); } @@ -125,7 +125,7 @@ public final class TimeArgument extends CommandArgument { } /** - * Build a new time argument. + * Build a new {@link TimeArgument}. * * @return Constructed argument * @since 1.5.0 @@ -141,6 +141,18 @@ public final class TimeArgument extends CommandArgument { ); } + /** + * Sets the command argument to be optional, with the specified default value. + * + * @param defaultValue default value + * @return this builder + * @see CommandArgument.Builder#asOptionalWithDefault(String) + * @since 1.5.0 + */ + public @NonNull Builder asOptionalWithDefault(final @NonNull MinecraftTime defaultValue) { + return this.asOptionalWithDefault(defaultValue.toString()); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/BlockPosArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/BlockPosArgument.java index 661890f6..e630951c 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/BlockPosArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/BlockPosArgument.java @@ -36,7 +36,7 @@ import java.util.List; import java.util.function.BiFunction; /** - * An argument for resolving block coordinates. + * An argument for resolving {@link BlockCoordinates}. * * @param the sender type * @since 1.5.0 @@ -62,19 +62,19 @@ public final class BlockPosArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static BlockPosArgument.@NonNull Builder newBuilder(final @NonNull String name) { + public static BlockPosArgument.@NonNull Builder builder(final @NonNull String name) { return new BlockPosArgument.Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link BlockPosArgument}. * * @param name Component name * @param Command sender type @@ -82,11 +82,11 @@ public final class BlockPosArgument extends CommandArgument @NonNull BlockPosArgument of(final @NonNull String name) { - return BlockPosArgument.newBuilder(name).asRequired().build(); + return BlockPosArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument + * Create a new optional {@link BlockPosArgument}. * * @param name Component name * @param Command sender type @@ -94,11 +94,11 @@ public final class BlockPosArgument extends CommandArgument @NonNull BlockPosArgument optional(final @NonNull String name) { - return BlockPosArgument.newBuilder(name).asOptional().build(); + return BlockPosArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument + * Create a new optional {@link BlockPosArgument} with the specified default value. * * @param name Component name * @param defaultValue default value @@ -107,20 +107,11 @@ public final class BlockPosArgument extends CommandArgument @NonNull BlockPosArgument optional(final @NonNull String name, final @NonNull BlockPos defaultValue) { - return BlockPosArgument.newBuilder(name) - .asOptionalWithDefault(serializeBlockPos(defaultValue)) + return BlockPosArgument.builder(name) + .asOptionalWithDefault(defaultValue) .build(); } - private static @NonNull String serializeBlockPos(final @NonNull BlockPos pos) { - return String.format( - "%s %s %s", - pos.getX(), - pos.getY(), - pos.getZ() - ); - } - /** * Builder for {@link BlockPosArgument}. * @@ -134,7 +125,7 @@ public final class BlockPosArgument extends CommandArgument extends CommandArgument asOptionalWithDefault(final @NonNull BlockPos defaultValue) { + return this.asOptionalWithDefault(String.format( + "%s %s %s", + defaultValue.getX(), + defaultValue.getY(), + defaultValue.getZ() + )); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/ColumnPosArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/ColumnPosArgument.java index e928cfe6..9e01e8e3 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/ColumnPosArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/ColumnPosArgument.java @@ -36,7 +36,7 @@ import java.util.List; import java.util.function.BiFunction; /** - * An argument for resolving column (xz) coordinates. + * An argument for resolving {@link ColumnCoordinates column (xz) coordinates}. * * @param the sender type * @since 1.5.0 @@ -62,19 +62,19 @@ public final class ColumnPosArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static ColumnPosArgument.@NonNull Builder newBuilder(final @NonNull String name) { + public static ColumnPosArgument.@NonNull Builder builder(final @NonNull String name) { return new ColumnPosArgument.Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link ColumnPosArgument}. * * @param name Component name * @param Command sender type @@ -82,11 +82,11 @@ public final class ColumnPosArgument extends CommandArgument @NonNull ColumnPosArgument of(final @NonNull String name) { - return ColumnPosArgument.newBuilder(name).asRequired().build(); + return ColumnPosArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument + * Create a new optional {@link ColumnPosArgument}. * * @param name Component name * @param Command sender type @@ -94,11 +94,11 @@ public final class ColumnPosArgument extends CommandArgument @NonNull ColumnPosArgument optional(final @NonNull String name) { - return ColumnPosArgument.newBuilder(name).asOptional().build(); + return ColumnPosArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument + * Create a new optional {@link ColumnPosArgument} with the specified default value. * * @param name Component name * @param defaultValue default value, y coordinate will be ignored as it is always 0 @@ -107,19 +107,11 @@ public final class ColumnPosArgument extends CommandArgument @NonNull ColumnPosArgument optional(final @NonNull String name, final @NonNull BlockPos defaultValue) { - return ColumnPosArgument.newBuilder(name) - .asOptionalWithDefault(serializeColumnPos(defaultValue)) + return ColumnPosArgument.builder(name) + .asOptionalWithDefault(defaultValue) .build(); } - private static @NonNull String serializeColumnPos(final @NonNull BlockPos pos) { - return String.format( - "%s %s", - pos.getX(), - pos.getZ() - ); - } - /** * Builder for {@link ColumnPosArgument}. * @@ -133,7 +125,7 @@ public final class ColumnPosArgument extends CommandArgument extends CommandArgument asOptionalWithDefault(final @NonNull BlockPos defaultValue) { + return this.asOptionalWithDefault(String.format( + "%s %s", + defaultValue.getX(), + defaultValue.getZ() + )); + } + } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MessageArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MessageArgument.java index 9daf2714..0bf09337 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MessageArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MessageArgument.java @@ -61,19 +61,19 @@ public final class MessageArgument extends CommandArgument { } /** - * Create a new builder. + * Create a new {@link Builder}. * * @param name Name of the argument * @param Command sender type * @return Created builder * @since 1.5.0 */ - public static MessageArgument.@NonNull Builder newBuilder(final @NonNull String name) { + public static MessageArgument.@NonNull Builder builder(final @NonNull String name) { return new MessageArgument.Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link MessageArgument}. * * @param name Component name * @param Command sender type @@ -81,11 +81,11 @@ public final class MessageArgument extends CommandArgument { * @since 1.5.0 */ public static @NonNull MessageArgument of(final @NonNull String name) { - return MessageArgument.newBuilder(name).asRequired().build(); + return MessageArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument + * Create a new optional {@link MessageArgument}. * * @param name Component name * @param Command sender type @@ -93,11 +93,11 @@ public final class MessageArgument extends CommandArgument { * @since 1.5.0 */ public static @NonNull MessageArgument optional(final @NonNull String name) { - return MessageArgument.newBuilder(name).asOptional().build(); + return MessageArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument with a default value + * Create a new optional {@link MessageArgument} with the specified value. * * @param name Argument name * @param defaultValue Default value @@ -109,7 +109,7 @@ public final class MessageArgument extends CommandArgument { final @NonNull String name, final @NonNull String defaultValue ) { - return MessageArgument.newBuilder(name).asOptionalWithDefault(defaultValue).build(); + return MessageArgument.builder(name).asOptionalWithDefault(defaultValue).build(); } @@ -126,7 +126,7 @@ public final class MessageArgument extends CommandArgument { } /** - * Build a new message argument. + * Build a new {@link MessageArgument}. * * @return Constructed argument * @since 1.5.0 diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MultipleEntitySelectorArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MultipleEntitySelectorArgument.java index aec07db1..06a3296c 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MultipleEntitySelectorArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MultipleEntitySelectorArgument.java @@ -35,7 +35,8 @@ import java.util.List; import java.util.function.BiFunction; /** - * An argument for selecting multiple entities + * An argument for selecting multiple {@link net.minecraft.entity.Entity entities} using an + * {@link net.minecraft.command.EntitySelector}. * * @param the sender type * @since 1.5.0 @@ -61,19 +62,19 @@ public final class MultipleEntitySelectorArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static MultipleEntitySelectorArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new MultipleEntitySelectorArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link MultipleEntitySelectorArgument}. * * @param name Component name * @param Command sender type @@ -81,11 +82,11 @@ public final class MultipleEntitySelectorArgument extends CommandArgument @NonNull MultipleEntitySelectorArgument of(final @NonNull String name) { - return MultipleEntitySelectorArgument.newBuilder(name).asRequired().build(); + return MultipleEntitySelectorArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument + * Create a new optional {@link MultipleEntitySelectorArgument}. * * @param name Component name * @param Command sender type @@ -93,7 +94,7 @@ public final class MultipleEntitySelectorArgument extends CommandArgument @NonNull MultipleEntitySelectorArgument optional(final @NonNull String name) { - return MultipleEntitySelectorArgument.newBuilder(name).asOptional().build(); + return MultipleEntitySelectorArgument.builder(name).asOptional().build(); } /** @@ -109,7 +110,7 @@ public final class MultipleEntitySelectorArgument extends CommandArgument the sender type * @since 1.5.0 @@ -61,19 +62,19 @@ public final class MultiplePlayerSelectorArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static MultiplePlayerSelectorArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new MultiplePlayerSelectorArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link MultiplePlayerSelectorArgument}. * * @param name Component name * @param Command sender type @@ -81,11 +82,11 @@ public final class MultiplePlayerSelectorArgument extends CommandArgument @NonNull MultiplePlayerSelectorArgument of(final @NonNull String name) { - return MultiplePlayerSelectorArgument.newBuilder(name).asRequired().build(); + return MultiplePlayerSelectorArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link MultiplePlayerSelectorArgument}. * * @param name Component name * @param Command sender type @@ -93,7 +94,7 @@ public final class MultiplePlayerSelectorArgument extends CommandArgument @NonNull MultiplePlayerSelectorArgument optional(final @NonNull String name) { - return MultiplePlayerSelectorArgument.newBuilder(name).asOptional().build(); + return MultiplePlayerSelectorArgument.builder(name).asOptional().build(); } /** @@ -109,7 +110,7 @@ public final class MultiplePlayerSelectorArgument extends CommandArgument the sender type * @since 1.5.0 @@ -61,19 +62,19 @@ public final class SingleEntitySelectorArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static SingleEntitySelectorArgument.@NonNull Builder newBuilder(final @NonNull String name) { + public static SingleEntitySelectorArgument.@NonNull Builder builder(final @NonNull String name) { return new SingleEntitySelectorArgument.Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link SingleEntitySelectorArgument}. * * @param name Component name * @param Command sender type @@ -81,11 +82,11 @@ public final class SingleEntitySelectorArgument extends CommandArgument @NonNull SingleEntitySelectorArgument of(final @NonNull String name) { - return SingleEntitySelectorArgument.newBuilder(name).asRequired().build(); + return SingleEntitySelectorArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link SingleEntitySelectorArgument}. * * @param name Component name * @param Command sender type @@ -93,7 +94,7 @@ public final class SingleEntitySelectorArgument extends CommandArgument @NonNull SingleEntitySelectorArgument optional(final @NonNull String name) { - return SingleEntitySelectorArgument.newBuilder(name).asOptional().build(); + return SingleEntitySelectorArgument.builder(name).asOptional().build(); } /** @@ -109,7 +110,7 @@ public final class SingleEntitySelectorArgument extends CommandArgument the sender type * @since 1.5.0 @@ -61,19 +62,19 @@ public final class SinglePlayerSelectorArgument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static SinglePlayerSelectorArgument.@NonNull Builder newBuilder(final @NonNull String name) { - return new SinglePlayerSelectorArgument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link SinglePlayerSelectorArgument}. * * @param name Component name * @param Command sender type @@ -81,11 +82,11 @@ public final class SinglePlayerSelectorArgument extends CommandArgument @NonNull SinglePlayerSelectorArgument of(final @NonNull String name) { - return SinglePlayerSelectorArgument.newBuilder(name).asRequired().build(); + return SinglePlayerSelectorArgument.builder(name).asRequired().build(); } /** - * Create a new optional command argument. + * Create a new optional {@link SinglePlayerSelectorArgument}. * * @param name Component name * @param Command sender type @@ -93,7 +94,7 @@ public final class SinglePlayerSelectorArgument extends CommandArgument @NonNull SinglePlayerSelectorArgument optional(final @NonNull String name) { - return SinglePlayerSelectorArgument.newBuilder(name).asOptional().build(); + return SinglePlayerSelectorArgument.builder(name).asOptional().build(); } /** @@ -109,7 +110,7 @@ public final class SinglePlayerSelectorArgument extends CommandArgument the sender type * @since 1.5.0 */ -public final class Vec2Argument extends CommandArgument { +public final class Vec2dArgument extends CommandArgument { private final boolean centerIntegers; - Vec2Argument( + Vec2dArgument( final boolean required, final @NonNull String name, final @NonNull String defaultValue, @@ -76,31 +76,31 @@ public final class Vec2Argument extends CommandArgument Command sender type * @return Created builder * @since 1.5.0 */ - public static Vec2Argument.@NonNull Builder newBuilder(final @NonNull String name) { - return new Vec2Argument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link Vec2dArgument}. * * @param name Component name * @param Command sender type * @return Created argument * @since 1.5.0 */ - public static @NonNull Vec2Argument of(final @NonNull String name) { - return Vec2Argument.newBuilder(name).asRequired().build(); + public static @NonNull Vec2dArgument of(final @NonNull String name) { + return Vec2dArgument.builder(name).asRequired().build(); } /** - * Create a new required command argument. + * Create a new required {@link Vec2dArgument}. * * @param name Component name * @param centerIntegers whether to center integers to x.5. @@ -108,24 +108,24 @@ public final class Vec2Argument extends CommandArgument @NonNull Vec2Argument of(final @NonNull String name, final boolean centerIntegers) { - return Vec2Argument.newBuilder(name).centerIntegers(centerIntegers).asRequired().build(); + public static @NonNull Vec2dArgument of(final @NonNull String name, final boolean centerIntegers) { + return Vec2dArgument.builder(name).centerIntegers(centerIntegers).asRequired().build(); } /** - * Create a new optional command argument + * Create a new optional {@link Vec2dArgument}. * * @param name Component name * @param Command sender type * @return Created argument * @since 1.5.0 */ - public static @NonNull Vec2Argument optional(final @NonNull String name) { - return Vec2Argument.newBuilder(name).asOptional().build(); + public static @NonNull Vec2dArgument optional(final @NonNull String name) { + return Vec2dArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument + * Create a new optional {@link Vec2dArgument}. * * @param name Component name * @param centerIntegers whether to center integers to x.5. @@ -133,12 +133,12 @@ public final class Vec2Argument extends CommandArgument @NonNull Vec2Argument optional(final @NonNull String name, final boolean centerIntegers) { - return Vec2Argument.newBuilder(name).centerIntegers(centerIntegers).asOptional().build(); + public static @NonNull Vec2dArgument optional(final @NonNull String name, final boolean centerIntegers) { + return Vec2dArgument.builder(name).centerIntegers(centerIntegers).asOptional().build(); } /** - * Create a new optional command argument + * Create a new optional {@link Vec2dArgument} with the specified default value. * * @param name Component name * @param defaultValue default value, y will be ignored as it is always 0 @@ -146,14 +146,12 @@ public final class Vec2Argument extends CommandArgument @NonNull Vec2Argument optional(final @NonNull String name, final @NonNull Vec3d defaultValue) { - return Vec2Argument.newBuilder(name) - .asOptionalWithDefault(serializeXandZ(defaultValue)) - .build(); + public static @NonNull Vec2dArgument optional(final @NonNull String name, final @NonNull Vec3d defaultValue) { + return Vec2dArgument.builder(name).asOptionalWithDefault(defaultValue).build(); } /** - * Create a new optional command argument + * Create a new optional {@link Vec2dArgument} with the specified default value. * * @param name Component name * @param defaultValue default value, y will be ignored as it is always 0 @@ -162,27 +160,16 @@ public final class Vec2Argument extends CommandArgument @NonNull Vec2Argument optional( + public static @NonNull Vec2dArgument optional( final @NonNull String name, final boolean centerIntegers, final @NonNull Vec3d defaultValue ) { - return Vec2Argument.newBuilder(name) - .centerIntegers(centerIntegers) - .asOptionalWithDefault(serializeXandZ(defaultValue)) - .build(); - } - - private static @NonNull String serializeXandZ(final @NonNull Vec3d vec3d) { - return String.format( - "%.10f %.10f", - vec3d.x, - vec3d.z - ); + return Vec2dArgument.builder(name).centerIntegers(centerIntegers).asOptionalWithDefault(defaultValue).build(); } /** - * Builder for {@link Vec2Argument}. + * Builder for {@link Vec2dArgument}. * * @param sender type * @since 1.5.0 @@ -218,14 +205,30 @@ public final class Vec2Argument extends CommandArgument asOptionalWithDefault(final @NonNull Vec3d defaultValue) { + return this.asOptionalWithDefault(String.format( + "%.10f %.10f", + defaultValue.x, + defaultValue.z + )); + } + + /** + * Build a new {@link Vec2dArgument}. * * @return Constructed argument * @since 1.5.0 */ @Override - public @NonNull Vec2Argument build() { - return new Vec2Argument<>( + public @NonNull Vec2dArgument build() { + return new Vec2dArgument<>( this.isRequired(), this.getName(), this.getDefaultValue(), diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/Vec3Argument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/Vec3dArgument.java similarity index 68% rename from cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/Vec3Argument.java rename to cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/Vec3dArgument.java index 3ee103d7..6ac760e5 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/Vec3Argument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/Vec3dArgument.java @@ -36,16 +36,16 @@ import java.util.List; import java.util.function.BiFunction; /** - * An argument for resolving coordinates from 3 doubles. + * An argument for resolving {@link Coordinates} from 3 doubles. * * @param the sender type * @since 1.5.0 */ -public final class Vec3Argument extends CommandArgument { +public final class Vec3dArgument extends CommandArgument { private final boolean centerIntegers; - Vec3Argument( + Vec3dArgument( final boolean required, final @NonNull String name, final @NonNull String defaultValue, @@ -76,31 +76,31 @@ public final class Vec3Argument extends CommandArgument { } /** - * Create a new builder. + * Create a new {@link Builder}. * * @param name Name of the argument * @param Command sender type * @return Created builder * @since 1.5.0 */ - public static Vec3Argument.@NonNull Builder newBuilder(final @NonNull String name) { - return new Vec3Argument.Builder<>(name); + public static @NonNull Builder builder(final @NonNull String name) { + return new Builder<>(name); } /** - * Create a new required command argument. + * Create a new required {@link Vec3dArgument}. * * @param name Component name * @param Command sender type * @return Created argument * @since 1.5.0 */ - public static @NonNull Vec3Argument of(final @NonNull String name) { - return Vec3Argument.newBuilder(name).asRequired().build(); + public static @NonNull Vec3dArgument of(final @NonNull String name) { + return Vec3dArgument.builder(name).asRequired().build(); } /** - * Create a new required command argument. + * Create a new required {@link Vec3dArgument}. * * @param name Component name * @param centerIntegers whether to center integers to x.5. @@ -108,24 +108,24 @@ public final class Vec3Argument extends CommandArgument { * @return Created argument * @since 1.5.0 */ - public static @NonNull Vec3Argument of(final @NonNull String name, final boolean centerIntegers) { - return Vec3Argument.newBuilder(name).centerIntegers(centerIntegers).asRequired().build(); + public static @NonNull Vec3dArgument of(final @NonNull String name, final boolean centerIntegers) { + return Vec3dArgument.builder(name).centerIntegers(centerIntegers).asRequired().build(); } /** - * Create a new optional command argument + * Create a new optional {@link Vec3dArgument}. * * @param name Component name * @param Command sender type * @return Created argument * @since 1.5.0 */ - public static @NonNull Vec3Argument optional(final @NonNull String name) { - return Vec3Argument.newBuilder(name).asOptional().build(); + public static @NonNull Vec3dArgument optional(final @NonNull String name) { + return Vec3dArgument.builder(name).asOptional().build(); } /** - * Create a new optional command argument + * Create a new optional {@link Vec3dArgument}. * * @param name Component name * @param centerIntegers whether to center integers to x.5. @@ -133,12 +133,12 @@ public final class Vec3Argument extends CommandArgument { * @return Created argument * @since 1.5.0 */ - public static @NonNull Vec3Argument optional(final @NonNull String name, final boolean centerIntegers) { - return Vec3Argument.newBuilder(name).centerIntegers(centerIntegers).asOptional().build(); + public static @NonNull Vec3dArgument optional(final @NonNull String name, final boolean centerIntegers) { + return Vec3dArgument.builder(name).centerIntegers(centerIntegers).asOptional().build(); } /** - * Create a new optional command argument + * Create a new optional {@link Vec3dArgument} with the specified default value. * * @param name Component name * @param defaultValue default value @@ -146,14 +146,12 @@ public final class Vec3Argument extends CommandArgument { * @return Created argument * @since 1.5.0 */ - public static @NonNull Vec3Argument optional(final @NonNull String name, final @NonNull Vec3d defaultValue) { - return Vec3Argument.newBuilder(name) - .asOptionalWithDefault(serializeVec3(defaultValue)) - .build(); + public static @NonNull Vec3dArgument optional(final @NonNull String name, final @NonNull Vec3d defaultValue) { + return Vec3dArgument.builder(name).asOptionalWithDefault(defaultValue).build(); } /** - * Create a new optional command argument + * Create a new optional {@link Vec3dArgument} with the specified default value. * * @param name Component name * @param defaultValue default value @@ -162,28 +160,16 @@ public final class Vec3Argument extends CommandArgument { * @return Created argument * @since 1.5.0 */ - public static @NonNull Vec3Argument optional( + public static @NonNull Vec3dArgument optional( final @NonNull String name, final boolean centerIntegers, final @NonNull Vec3d defaultValue ) { - return Vec3Argument.newBuilder(name) - .centerIntegers(centerIntegers) - .asOptionalWithDefault(serializeVec3(defaultValue)) - .build(); - } - - private static @NonNull String serializeVec3(final @NonNull Vec3d vec3d) { - return String.format( - "%.10f %.10f %.10f", - vec3d.x, - vec3d.y, - vec3d.z - ); + return Vec3dArgument.builder(name).centerIntegers(centerIntegers).asOptionalWithDefault(defaultValue).build(); } /** - * Builder for {@link Vec3Argument}. + * Builder for {@link Vec3dArgument}. * * @param sender type * @since 1.5.0 @@ -219,14 +205,31 @@ public final class Vec3Argument extends CommandArgument { } /** - * Build a vec3 argument. + * Sets the command argument to be optional, with the specified default value. + * + * @param defaultValue default value + * @return this builder + * @see CommandArgument.Builder#asOptionalWithDefault(String) + * @since 1.5.0 + */ + public @NonNull Builder asOptionalWithDefault(final @NonNull Vec3d defaultValue) { + return this.asOptionalWithDefault(String.format( + "%.10f %.10f %.10f", + defaultValue.x, + defaultValue.y, + defaultValue.z + )); + } + + /** + * Build a new {@link Vec3dArgument}. * * @return Constructed argument * @since 1.5.0 */ @Override - public @NonNull Vec3Argument build() { - return new Vec3Argument<>( + public @NonNull Vec3dArgument build() { + return new Vec3dArgument<>( this.isRequired(), this.getName(), this.getDefaultValue(), diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Coordinates.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Coordinates.java index b112389d..511c87da 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Coordinates.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Coordinates.java @@ -84,7 +84,7 @@ public interface Coordinates { * @return the base coordinates * @since 1.5.0 */ - @NonNull PosArgument getWrappedCoordinates(); + @NonNull PosArgument wrappedCoordinates(); /** * A specialized version of {@link Coordinates} for representing the result of the vanilla {@link Vec2ArgumentType}, diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Selector.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Selector.java index 0826fe37..64ab0315 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Selector.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Selector.java @@ -44,15 +44,15 @@ public interface Selector { * @return the input * @since 1.5.0 */ - @NonNull String getInput(); + @NonNull String inputString(); /** - * If this value came from a parsed selector, this will provide the details of that selector. + * If this value came from a parsed {@link EntitySelector}, this will provide the details of that selector. * * @return the selector * @since 1.5.0 */ - @Nullable EntitySelector getSelector(); + @Nullable EntitySelector selector(); /** * Resolve the value of this selector. diff --git a/cloud-minecraft/cloud-fabric/src/testmod/java/cloud/commandframework/fabric/testmod/FabricExample.java b/cloud-minecraft/cloud-fabric/src/testmod/java/cloud/commandframework/fabric/testmod/FabricExample.java index 04fdcf6c..250874dc 100644 --- a/cloud-minecraft/cloud-fabric/src/testmod/java/cloud/commandframework/fabric/testmod/FabricExample.java +++ b/cloud-minecraft/cloud-fabric/src/testmod/java/cloud/commandframework/fabric/testmod/FabricExample.java @@ -35,7 +35,7 @@ import cloud.commandframework.fabric.argument.ItemDataArgument; import cloud.commandframework.fabric.argument.server.ColumnPosArgument; import cloud.commandframework.fabric.argument.server.MultipleEntitySelectorArgument; import cloud.commandframework.fabric.argument.server.MultiplePlayerSelectorArgument; -import cloud.commandframework.fabric.argument.server.Vec3Argument; +import cloud.commandframework.fabric.argument.server.Vec3dArgument; import cloud.commandframework.fabric.data.Coordinates; import cloud.commandframework.fabric.data.Coordinates.ColumnCoordinates; import cloud.commandframework.fabric.data.MultipleEntitySelector; @@ -56,6 +56,7 @@ import net.minecraft.text.HoverEvent; import net.minecraft.text.LiteralText; import net.minecraft.text.MutableText; import net.minecraft.text.TextColor; +import net.minecraft.text.Texts; import net.minecraft.util.Formatting; import net.minecraft.util.Util; import net.minecraft.util.math.ChunkPos; @@ -118,7 +119,7 @@ public final class FabricExample implements ModInitializer { )); ctx.getSender().sendFeedback( new LiteralText(String.format("Waved at %d players (%s)", selected.size(), - selector.getInput() + selector.inputString() )), false ); @@ -229,7 +230,7 @@ public final class FabricExample implements ModInitializer { manager.command(base.literal("teleport") .permission("cloud.teleport") .argument(MultipleEntitySelectorArgument.of("targets")) - .argument(Vec3Argument.of("location")) + .argument(Vec3dArgument.of("location")) .handler(ctx -> { final MultipleEntitySelector selector = ctx.get("targets"); final Vec3d location = ctx.get("location").position(); @@ -245,7 +246,7 @@ public final class FabricExample implements ModInitializer { try { player = ctx.getSender().getPlayer(); } catch (final CommandSyntaxException e) { - ctx.getSender().sendFeedback(new LiteralText("Must be a player to use this command"), false); + ctx.getSender().sendFeedback(Texts.toText(e.getRawMessage()), false); return; } final Vec3d vec = ctx.get("chunk_position").position();