diff --git a/.checkstyle/checkstyle.xml b/.checkstyle/checkstyle.xml index c4d2ecce..dd0f4e04 100644 --- a/.checkstyle/checkstyle.xml +++ b/.checkstyle/checkstyle.xml @@ -100,6 +100,7 @@ + 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 916920dc..e5f9a439 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 @@ -206,7 +206,6 @@ public abstract class FabricCommandManager extends C /* Wrapped brigadier requiring parameters */ // score holder: single vs multiple - // entity argument type: single or multiple, players or any entity -- returns EntitySelector, but do we want that? } @SuppressWarnings({"unchecked", "rawtypes"}) 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 17fba4fc..bf65bd50 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 @@ -73,17 +73,12 @@ public final class FabricArgumentParsers { .map((ctx, val) -> ArgumentParseResult.success(MinecraftTime.of(val))); } - /* - public static ArgumentParser commandFunction() { - // TODO: Should probably write our own parser for this, it's either Identifier or tag. - // Server parsers - return new WrappedBrigadierParser(FunctionArgumentType.function()).map((ctx, val) -> { - final CommandSource source = ctx.get(FabricCommandContextKeys.NATIVE_COMMAND_SOURCE); - source.getCompletions() - }) - } - */ - + /** + * A parser for {@link SinglePlayerSelector}. + * + * @param sender type + * @return a parser instance + */ public static ArgumentParser singlePlayerSelector() { return new WrappedBrigadierParser(EntityArgumentType.player()) .map((ctx, entitySelector) -> { @@ -103,6 +98,12 @@ public final class FabricArgumentParsers { }); } + /** + * A parser for {@link MultiplePlayerSelector}. + * + * @param sender type + * @return a parser instance + */ public static ArgumentParser multiplePlayerSelector() { return new WrappedBrigadierParser(EntityArgumentType.players()) .map((ctx, entitySelector) -> { @@ -122,6 +123,12 @@ public final class FabricArgumentParsers { }); } + /** + * A parser for {@link SingleEntitySelector}. + * + * @param sender type + * @return a parser instance + */ public static ArgumentParser singleEntitySelector() { return new WrappedBrigadierParser(EntityArgumentType.entity()) .map((ctx, entitySelector) -> { @@ -141,6 +148,12 @@ public final class FabricArgumentParsers { }); } + /** + * A parser for {@link MultipleEntitySelector}. + * + * @param sender type + * @return a parser instance + */ public static ArgumentParser multipleEntitySelector() { return new WrappedBrigadierParser(EntityArgumentType.entities()) .map((ctx, entitySelector) -> { @@ -160,6 +173,12 @@ public final class FabricArgumentParsers { }); } + /** + * A parser for {@link Message}. + * + * @param sender type + * @return a parser instance + */ public static ArgumentParser message() { return new WrappedBrigadierParser(MessageArgumentType.message()) .map((ctx, format) -> { @@ -214,12 +233,12 @@ public final class FabricArgumentParsers { } @Override - public Collection getMentionedEntities() { + public @NonNull Collection getMentionedEntities() { return this.mentionedEntities; } @Override - public Text getContents() { + public @NonNull Text getContents() { return this.contents; } 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 6414f978..a3ca452b 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 @@ -94,21 +94,6 @@ public final class ScoreboardOperationArgument extends CommandArgumentnewBuilder(name).asOptional().build(); } - /* (todo: there's no way to get a parseable form from an unknown Operation) - * Create a new optional command argument with a default value - * - * @param name Argument name - * @param defaultTag Default tag value - * @param Command sender type - * @return Created argument - * - public static @NonNull ScoreboardOperationArgument optional( - final @NonNull String name, - final Operation defaultTag - ) { - return ScoreboardOperationArgument.newBuilder(name).asOptionalWithDefault(defaultTag.toString()).build(); - }*/ - public static final class Builder extends TypedBuilder> { Builder(final @NonNull String name) { 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 73fbb7e4..7b49b366 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 @@ -25,11 +25,8 @@ package cloud.commandframework.fabric.argument; import cloud.commandframework.arguments.CommandArgument; -import cloud.commandframework.arguments.parser.ArgumentParseResult; -import cloud.commandframework.brigadier.argument.WrappedBrigadierParser; import cloud.commandframework.context.CommandContext; import cloud.commandframework.fabric.data.MinecraftTime; -import net.minecraft.command.argument.TimeArgumentType; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; @@ -87,7 +84,7 @@ public final class TimeArgument extends CommandArgument { * * @param name Component name * @param Command sender type - * @return Created argument + * @return Created argument */ public static @NonNull TimeArgument optional(final @NonNull String name) { return TimeArgument.newBuilder(name).asOptional().build(); @@ -97,7 +94,7 @@ public final class TimeArgument extends CommandArgument { * Create a new optional command argument with a default value * * @param name Argument name - * @param defaultTime Default time, in ticks + * @param defaultTime Default time, in ticks * @param Command sender type * @return Created argument */ diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/CommandFunctionArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/CommandFunctionArgument.java deleted file mode 100644 index 974dcc7b..00000000 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/CommandFunctionArgument.java +++ /dev/null @@ -1,313 +0,0 @@ -// -// MIT License -// -// Copyright (c) 2021 Alexander Söderberg & Contributors -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -package cloud.commandframework.fabric.argument.server; - -import cloud.commandframework.arguments.CommandArgument; -import cloud.commandframework.arguments.parser.ArgumentParseResult; -import cloud.commandframework.arguments.parser.ArgumentParser; -import cloud.commandframework.captions.CaptionVariable; -import cloud.commandframework.context.CommandContext; -import cloud.commandframework.exceptions.parsing.NoInputProvidedException; -import cloud.commandframework.exceptions.parsing.ParserException; -import cloud.commandframework.fabric.FabricCaptionKeys; -import cloud.commandframework.fabric.FabricCommandContextKeys; -import com.mojang.brigadier.StringReader; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import io.leangen.geantyref.TypeToken; -import net.minecraft.command.CommandSource; -import net.minecraft.server.function.CommandFunction; -import net.minecraft.util.Identifier; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.RegistryKey; -import org.checkerframework.checker.nullness.qual.NonNull; -import org.checkerframework.checker.nullness.qual.Nullable; - -import java.util.ArrayList; -import java.util.List; -import java.util.Queue; -import java.util.Set; -import java.util.function.BiFunction; - -import static java.util.Objects.requireNonNull; - -/** - * Get a value from a registry. - * - *

Both static and dynamic registries are supported.

- * - * @param the command sender type - * @since 1.4.0 - */ -public class CommandFunctionArgument extends CommandArgument { - - CommandFunctionArgument( - final boolean required, - final @NonNull String name, - final @NonNull RegistryKey> registry, - final @NonNull String defaultValue, - final @NonNull TypeToken valueType, - final @Nullable BiFunction, String, List> suggestionsProvider - ) { - super(required, name, new RegistryEntryParser<>(registry), defaultValue, valueType, suggestionsProvider); - } - - /** - * Create a new builder. - * - * @param name Name of the argument - * @param type The type of registry entry - * @param registry A key for the registry to get values from - * @param Command sender type - * @param Registry entry type - * @return Created builder - */ - public static CommandFunctionArgument.@NonNull Builder newBuilder( - final @NonNull String name, - final @NonNull Class type, - final @NonNull RegistryKey> registry) { - return new CommandFunctionArgument.Builder<>(registry, type, name); - } - - /** - * Create a new builder. - * - * @param name Name of the argument - * @param type The type of registry entry - * @param registry A key for the registry to get values from - * @param Command sender type - * @param Registry entry type - * @return Created builder - */ - public static CommandFunctionArgument.@NonNull Builder newBuilder( - final @NonNull String name, - final @NonNull TypeToken type, - final @NonNull RegistryKey> registry) { - return new CommandFunctionArgument.Builder<>(registry, type, name); - } - - /** - * Create a new required command argument. - * - * @param name Argument name - * @param type The type of registry entry - * @param registry A key for the registry to get values from - * @param Command sender type - * @param Registry entry type - * @return Created argument - */ - public static @NonNull CommandFunctionArgument of( - final @NonNull String name, - final @NonNull Class type, - final @NonNull RegistryKey> registry - ) { - return CommandFunctionArgument.newBuilder(name, type, registry).asRequired().build(); - } - - /** - * Create a new optional command argument - * - * @param name Argument name - * @param type The type of registry entry - * @param registry A key for the registry to get values from - * @param Command sender type - * @param Registry entry type - * @return Created argument - */ - public static @NonNull CommandFunctionArgument optional( - final @NonNull String name, - final @NonNull Class type, - final @NonNull RegistryKey> registry - ) { - return CommandFunctionArgument.newBuilder(name, type, registry).asOptional().build(); - } - - /** - * Create a new optional command argument with a default value - * - * @param name Argument name - * @param type The type of registry entry - * @param registry A key for the registry to get values from - * @param defaultValue Default value - * @param Command sender type - * @param Registry entry type - * @return Created argument - */ - public static @NonNull CommandFunctionArgument optional( - final @NonNull String name, - final @NonNull Class type, - final @NonNull RegistryKey> registry, - final @NonNull RegistryKey defaultValue - ) { - return CommandFunctionArgument.newBuilder(name, type, registry) - .asOptionalWithDefault(defaultValue.getValue().toString()) - .build(); - } - - /** - * A parser for values stored in a {@link Registry} - * - * @param Command sender type - * @param Registry entry type - */ - public static final class RegistryEntryParser implements ArgumentParser { - private final RegistryKey> registryIdent; - - /** - * Create a new parser for registry entries. - * - * @param registryIdent the registry identifier - */ - public RegistryEntryParser(final RegistryKey> registryIdent) { - this.registryIdent = requireNonNull(registryIdent, "registryIdent"); - } - - @Override - public @NonNull ArgumentParseResult<@NonNull V> parse( - @NonNull final CommandContext<@NonNull C> commandContext, - @NonNull final Queue<@NonNull String> inputQueue - ) { - final String possibleIdentifier = inputQueue.peek(); - if (possibleIdentifier == null) { - return ArgumentParseResult.failure(new NoInputProvidedException( - CommandFunctionArgument.class, - commandContext - )); - } - - final Identifier key; - try { - key = Identifier.fromCommandInput(new StringReader(possibleIdentifier)); - } catch (final CommandSyntaxException ex) { - return ArgumentParseResult.failure(ex); - } - inputQueue.poll(); - - final Registry registry = this.getRegistry(commandContext); - if (registry == null) { - return ArgumentParseResult.failure(new IllegalArgumentException("Unknown registry " + this.registryIdent)); - } - - final V entry = registry.get(key); - if (entry == null) { - return ArgumentParseResult.failure(new UnknownEntryException(commandContext, key, this.registryIdent)); - } - - return ArgumentParseResult.success(entry); - } - - @SuppressWarnings("unchecked") - Registry getRegistry(final CommandContext ctx) { - final CommandSource reverseMapped = ctx.get(FabricCommandContextKeys.NATIVE_COMMAND_SOURCE); - // First try dynamic registries (for things loaded from data-packs) - Registry registry = reverseMapped.getRegistryManager().getOptional(this.registryIdent).orElse(null); - if (registry == null) { - // And then static registries - registry = (Registry) Registry.REGISTRIES.get(this.registryIdent.getValue()); - } - return registry; - } - - @Override - public @NonNull List<@NonNull String> suggestions( - final @NonNull CommandContext commandContext, - final @NonNull String input - ) { - final Set ids = this.getRegistry(commandContext).getIds(); - final List results = new ArrayList<>(ids.size()); - for (final Identifier entry : ids) { - if (entry.getNamespace().equals(NAMESPACE_MINECRAFT)) { - results.add(entry.getPath()); - } - results.add(entry.toString()); - } - - return results; - } - - @Override - public boolean isContextFree() { - return true; - } - - /** - * Get the registry associated with this parser - * @return the registry - */ - public RegistryKey> getRegistry() { - return this.registryIdent; - } - - } - - /** - * A builder for registry entry arguments. - * - * @param The sender type - * @param The registry value type - */ - public static final class Builder extends TypedBuilder> { - - Builder( - final @NonNull String name - ) { - super(valueType, name); - } - - @Override - public @NonNull CommandFunctionArgument<@NonNull C, @NonNull V> build() { - return new CommandFunctionArgument<>( - this.isRequired(), - this.getName(), - this.getDefaultValue(), - this.getValueType(), - this.getSuggestionsProvider() - ); - } - } - - /** - * An exception thrown when an entry in a registry could not be found. - */ - private static final class UnknownEntryException extends ParserException { - - private static final long serialVersionUID = 7694424294461849903L; - - UnknownEntryException( - final CommandContext context, - final Identifier key, - final RegistryKey> registry - ) { - super( - CommandFunctionArgument.class, - context, - FabricCaptionKeys.ARGUMENT_PARSE_FAILURE_REGISTRY_ENTRY_UNKNOWN_ENTRY, - CaptionVariable.of("id", key.toString()), - CaptionVariable.of("registry", registry.toString()) - ); - } - - } - -} 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 07c62cf2..22bce41c 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 @@ -25,26 +25,12 @@ package cloud.commandframework.fabric.argument.server; import cloud.commandframework.arguments.CommandArgument; -import cloud.commandframework.arguments.parser.ArgumentParseResult; -import cloud.commandframework.brigadier.argument.WrappedBrigadierParser; import cloud.commandframework.context.CommandContext; -import cloud.commandframework.fabric.FabricCommandContextKeys; import cloud.commandframework.fabric.argument.FabricArgumentParsers; import cloud.commandframework.fabric.data.Message; -import cloud.commandframework.fabric.mixin.MessageArgumentTypeMessageFormatAccess; -import cloud.commandframework.fabric.mixin.MessageArgumentTypeMessageSelectorAccess; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.command.CommandSource; -import net.minecraft.command.argument.MessageArgumentType; -import net.minecraft.entity.Entity; -import net.minecraft.server.command.ServerCommandSource; -import net.minecraft.text.Text; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; import java.util.List; import java.util.function.BiFunction; @@ -99,7 +85,7 @@ public final class MessageArgument extends CommandArgument { * * @param name Component name * @param Command sender type - * @return Created argument + * @return Created argument */ public static @NonNull MessageArgument optional(final @NonNull String name) { return MessageArgument.newBuilder(name).asOptional().build(); @@ -108,9 +94,9 @@ public final class MessageArgument extends CommandArgument { /** * Create a new optional command argument with a default value * - * @param name Argument name + * @param name Argument name * @param defaultValue Default value - * @param Command sender type + * @param Command sender type * @return Created argument */ public static @NonNull MessageArgument optional( @@ -134,7 +120,12 @@ public final class MessageArgument extends CommandArgument { */ @Override public @NonNull MessageArgument build() { - return new MessageArgument<>(this.isRequired(), this.getName(), this.getDefaultValue(), this.getSuggestionsProvider()); + return new MessageArgument<>( + this.isRequired(), + this.getName(), + this.getDefaultValue(), + this.getSuggestionsProvider() + ); } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/MultipleEntitySelectorArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MultipleEntitySelectorArgument.java similarity index 90% rename from cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/MultipleEntitySelectorArgument.java rename to cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MultipleEntitySelectorArgument.java index 644ce1e3..a41f54d2 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/MultipleEntitySelectorArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MultipleEntitySelectorArgument.java @@ -21,10 +21,11 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package cloud.commandframework.fabric.argument; +package cloud.commandframework.fabric.argument.server; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.context.CommandContext; +import cloud.commandframework.fabric.argument.FabricArgumentParsers; import cloud.commandframework.fabric.data.MultipleEntitySelector; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; @@ -83,7 +84,7 @@ public final class MultipleEntitySelectorArgument extends CommandArgument Command sender type - * @return Created argument + * @return Created argument */ public static @NonNull MultipleEntitySelectorArgument optional(final @NonNull String name) { return MultipleEntitySelectorArgument.newBuilder(name).asOptional().build(); @@ -102,7 +103,12 @@ public final class MultipleEntitySelectorArgument extends CommandArgument build() { - return new MultipleEntitySelectorArgument<>(this.isRequired(), this.getName(), this.getDefaultValue(), this.getSuggestionsProvider()); + return new MultipleEntitySelectorArgument<>( + this.isRequired(), + this.getName(), + this.getDefaultValue(), + this.getSuggestionsProvider() + ); } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/MultiplePlayerSelectorArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MultiplePlayerSelectorArgument.java similarity index 90% rename from cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/MultiplePlayerSelectorArgument.java rename to cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MultiplePlayerSelectorArgument.java index 281db858..ae3d0c25 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/MultiplePlayerSelectorArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/MultiplePlayerSelectorArgument.java @@ -21,10 +21,11 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package cloud.commandframework.fabric.argument; +package cloud.commandframework.fabric.argument.server; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.context.CommandContext; +import cloud.commandframework.fabric.argument.FabricArgumentParsers; import cloud.commandframework.fabric.data.MultiplePlayerSelector; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; @@ -83,7 +84,7 @@ public final class MultiplePlayerSelectorArgument extends CommandArgument Command sender type - * @return Created argument + * @return Created argument */ public static @NonNull MultiplePlayerSelectorArgument optional(final @NonNull String name) { return MultiplePlayerSelectorArgument.newBuilder(name).asOptional().build(); @@ -102,7 +103,12 @@ public final class MultiplePlayerSelectorArgument extends CommandArgument build() { - return new MultiplePlayerSelectorArgument<>(this.isRequired(), this.getName(), this.getDefaultValue(), this.getSuggestionsProvider()); + return new MultiplePlayerSelectorArgument<>( + this.isRequired(), + this.getName(), + this.getDefaultValue(), + this.getSuggestionsProvider() + ); } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/SingleEntitySelectorArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/SingleEntitySelectorArgument.java similarity index 90% rename from cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/SingleEntitySelectorArgument.java rename to cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/SingleEntitySelectorArgument.java index fe23093c..608c0b9e 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/SingleEntitySelectorArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/SingleEntitySelectorArgument.java @@ -21,10 +21,11 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package cloud.commandframework.fabric.argument; +package cloud.commandframework.fabric.argument.server; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.context.CommandContext; +import cloud.commandframework.fabric.argument.FabricArgumentParsers; import cloud.commandframework.fabric.data.SingleEntitySelector; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; @@ -83,7 +84,7 @@ public final class SingleEntitySelectorArgument extends CommandArgument Command sender type - * @return Created argument + * @return Created argument */ public static @NonNull SingleEntitySelectorArgument optional(final @NonNull String name) { return SingleEntitySelectorArgument.newBuilder(name).asOptional().build(); @@ -102,7 +103,12 @@ public final class SingleEntitySelectorArgument extends CommandArgument build() { - return new SingleEntitySelectorArgument<>(this.isRequired(), this.getName(), this.getDefaultValue(), this.getSuggestionsProvider()); + return new SingleEntitySelectorArgument<>( + this.isRequired(), + this.getName(), + this.getDefaultValue(), + this.getSuggestionsProvider() + ); } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/SinglePlayerSelectorArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/SinglePlayerSelectorArgument.java similarity index 90% rename from cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/SinglePlayerSelectorArgument.java rename to cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/SinglePlayerSelectorArgument.java index 67c9776a..6facd7b9 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/SinglePlayerSelectorArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/server/SinglePlayerSelectorArgument.java @@ -21,10 +21,11 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // -package cloud.commandframework.fabric.argument; +package cloud.commandframework.fabric.argument.server; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.context.CommandContext; +import cloud.commandframework.fabric.argument.FabricArgumentParsers; import cloud.commandframework.fabric.data.SinglePlayerSelector; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; @@ -83,7 +84,7 @@ public final class SinglePlayerSelectorArgument extends CommandArgument Command sender type - * @return Created argument + * @return Created argument */ public static @NonNull SinglePlayerSelectorArgument optional(final @NonNull String name) { return SinglePlayerSelectorArgument.newBuilder(name).asOptional().build(); @@ -102,7 +103,12 @@ public final class SinglePlayerSelectorArgument extends CommandArgument build() { - return new SinglePlayerSelectorArgument<>(this.isRequired(), this.getName(), this.getDefaultValue(), this.getSuggestionsProvider()); + return new SinglePlayerSelectorArgument<>( + this.isRequired(), + this.getName(), + this.getDefaultValue(), + this.getSuggestionsProvider() + ); } } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Message.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Message.java index 0c1a2fab..9bac72c4 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Message.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Message.java @@ -26,6 +26,7 @@ package cloud.commandframework.fabric.data; import net.minecraft.entity.Entity; import net.minecraft.text.Text; +import org.checkerframework.checker.nullness.qual.NonNull; import java.util.Collection; @@ -34,8 +35,18 @@ import java.util.Collection; */ public interface Message { - Collection getMentionedEntities(); + /** + * Get the collection of entities mentioned in this message. + * + * @return the mentioned entities + */ + @NonNull Collection getMentionedEntities(); - Text getContents(); + /** + * Get the parsed text contents of this message. + * + * @return the parsed text + */ + @NonNull Text getContents(); } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MultipleEntitySelector.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MultipleEntitySelector.java index 8040a3c0..f751833b 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MultipleEntitySelector.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MultipleEntitySelector.java @@ -29,12 +29,22 @@ import org.checkerframework.checker.nullness.qual.NonNull; import java.util.Collection; +/** + * A selector for multiple entities. + */ public final class MultipleEntitySelector implements Selector { private final String inputString; private final net.minecraft.command.EntitySelector entitySelector; private final Collection selectedEntities; + /** + * Create a new MultipleEntitySelector. + * + * @param inputString input string + * @param entitySelector entity selector + * @param selectedEntities selected entities + */ public MultipleEntitySelector( final @NonNull String inputString, final @NonNull EntitySelector entitySelector, diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MultipleGameProfileSelector.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MultipleGameProfileSelector.java deleted file mode 100644 index 3215c228..00000000 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MultipleGameProfileSelector.java +++ /dev/null @@ -1,35 +0,0 @@ -// -// MIT License -// -// Copyright (c) 2021 Alexander Söderberg & Contributors -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -package cloud.commandframework.fabric.data; - -import com.mojang.authlib.GameProfile; -import net.minecraft.command.EntitySelector; -import org.checkerframework.checker.nullness.qual.Nullable; - -import java.util.Collection; - -public interface MultipleGameProfileSelector extends Selector { - -} diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MultiplePlayerSelector.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MultiplePlayerSelector.java index c2b53cd1..17e3dbc4 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MultiplePlayerSelector.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MultiplePlayerSelector.java @@ -29,12 +29,22 @@ import org.checkerframework.checker.nullness.qual.NonNull; import java.util.Collection; +/** + * A selector for multiple players. + */ public final class MultiplePlayerSelector implements Selector { private final String inputString; private final EntitySelector entitySelector; private final Collection selectedPlayers; + /** + * Create a new MultiplePlayerSelector. + * + * @param inputString input string + * @param entitySelector entity selector + * @param selectedPlayers selected players + */ public MultiplePlayerSelector( final @NonNull String inputString, final @NonNull EntitySelector entitySelector, diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/SingleEntitySelector.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/SingleEntitySelector.java index 97904d0b..45f47334 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/SingleEntitySelector.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/SingleEntitySelector.java @@ -27,12 +27,22 @@ import net.minecraft.command.EntitySelector; import net.minecraft.entity.Entity; import org.checkerframework.checker.nullness.qual.NonNull; +/** + * A selector for a single entity. + */ public final class SingleEntitySelector implements Selector.Single { private final String inputString; private final EntitySelector entitySelector; private final Entity selectedEntity; + /** + * Create a new SingleEntitySelector. + * + * @param inputString input string + * @param entitySelector entity selector + * @param selectedEntity selected entity + */ public SingleEntitySelector( final @NonNull String inputString, final @NonNull EntitySelector entitySelector, diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/SinglePlayerSelector.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/SinglePlayerSelector.java index 6a1be34c..428fe25c 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/SinglePlayerSelector.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/SinglePlayerSelector.java @@ -27,12 +27,22 @@ import net.minecraft.command.EntitySelector; import net.minecraft.server.network.ServerPlayerEntity; import org.checkerframework.checker.nullness.qual.NonNull; +/** + * A selector for a single player. + */ public final class SinglePlayerSelector implements Selector.Single { private final String inputString; private final EntitySelector entitySelector; private final ServerPlayerEntity selectedPlayer; + /** + * Create a new SinglePlayerSelector. + * + * @param inputString input string + * @param entitySelector entity selector + * @param selectedPlayer selected player + */ public SinglePlayerSelector( final @NonNull String inputString, final @NonNull EntitySelector entitySelector, diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/internal/EntitySelectorAccess.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/internal/EntitySelectorAccess.java index 2b174ab3..76b075c3 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/internal/EntitySelectorAccess.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/internal/EntitySelectorAccess.java @@ -27,8 +27,18 @@ import org.checkerframework.checker.nullness.qual.NonNull; public interface EntitySelectorAccess { + /** + * Get the last parsed input string + * + * @return input string + */ @NonNull String inputString(); + /** + * Set the last parsed input string + * + * @param inputString input string + */ void inputString(@NonNull String inputString); } diff --git a/cloud-minecraft/cloud-fabric/src/testmod/java/cloud/commandframework/fabric/testmod/FabricClientExample.java b/cloud-minecraft/cloud-fabric/src/testmod/java/cloud/commandframework/fabric/testmod/FabricClientExample.java index a71a85b0..940100a9 100644 --- a/cloud-minecraft/cloud-fabric/src/testmod/java/cloud/commandframework/fabric/testmod/FabricClientExample.java +++ b/cloud-minecraft/cloud-fabric/src/testmod/java/cloud/commandframework/fabric/testmod/FabricClientExample.java @@ -30,7 +30,7 @@ import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.command.v1.FabricClientCommandSource; import net.minecraft.text.LiteralText; -public class FabricClientExample implements ClientModInitializer { +public final class FabricClientExample implements ClientModInitializer { @Override public void onInitializeClient() { final FabricClientCommandManager commandManager = 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 68b34997..38721844 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 @@ -30,7 +30,7 @@ import cloud.commandframework.arguments.standard.IntegerArgument; import cloud.commandframework.arguments.standard.StringArgument; import cloud.commandframework.execution.CommandExecutionCoordinator; import cloud.commandframework.fabric.FabricServerCommandManager; -import cloud.commandframework.fabric.argument.MultiplePlayerSelectorArgument; +import cloud.commandframework.fabric.argument.server.MultiplePlayerSelectorArgument; import cloud.commandframework.fabric.data.MultiplePlayerSelector; import cloud.commandframework.meta.CommandMeta; import com.google.gson.JsonObject;