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 extends Registry> 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 extends Registry> 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 extends Registry> 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 extends Registry> 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 extends Registry> 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 extends Registry> 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 extends Registry> registryIdent;
-
- /**
- * Create a new parser for registry entries.
- *
- * @param registryIdent the registry identifier
- */
- public RegistryEntryParser(final RegistryKey extends Registry> 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 extends Registry>> 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 extends Registry>> 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;