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