Skip to content

Commit

Permalink
Make it compile
Browse files Browse the repository at this point in the history
  • Loading branch information
jpenilla committed Jan 21, 2024
1 parent 516c878 commit af6b54b
Show file tree
Hide file tree
Showing 55 changed files with 3,146 additions and 5,927 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,9 @@
import org.spongepowered.api.command.registrar.tree.CommandTreeNode;

/**
* An {@link ArgumentParser} which also supplies a special {@link CommandTreeNode.Argument}.
*
* @param <C> sender type
* @param <T> value type
* Implemented by {@link ArgumentParser} which also supply a special {@link CommandTreeNode.Argument}.
*/
public interface NodeSupplyingArgumentParser<C, T> extends ArgumentParser<C, T> {
public interface NodeSource {

/**
* Get the node for this parser.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
//
package cloud.commandframework.sponge;

import cloud.commandframework.captions.CaptionProvider;
import cloud.commandframework.captions.StandardCaptionRegistry;

/**
Expand All @@ -36,56 +37,52 @@ public class SpongeCaptionRegistry<C> extends StandardCaptionRegistry<C> {
* Default caption for {@link SpongeCaptionKeys#ARGUMENT_PARSE_FAILURE_REGISTRY_ENTRY_UNKNOWN_ENTRY}
*/
public static final String ARGUMENT_PARSE_FAILURE_REGISTRY_ENTRY_UNKNOWN_ENTRY =
"No such entry '{id}' in registry '{registry}'.";
"No such entry '{id}' in registry '{registry}'.";

/**
* Default caption for {@link SpongeCaptionKeys#ARGUMENT_PARSE_FAILURE_USER_CANNOT_FIND_USER_WITH_NAME}
*/
public static final String ARGUMENT_PARSE_FAILURE_USER_CANNOT_FIND_USER_WITH_NAME =
"Cannot find a user with the name '{name}'.";
"Cannot find a user with the name '{name}'.";

/**
* Default caption for {@link SpongeCaptionKeys#ARGUMENT_PARSE_FAILURE_USER_CANNOT_FIND_USER_WITH_UUID}
*/
public static final String ARGUMENT_PARSE_FAILURE_USER_CANNOT_FIND_USER_WITH_UUID =
"Cannot find a user with the UUID '{uuid}'.";
"Cannot find a user with the UUID '{uuid}'.";

/**
* Default caption for {@link SpongeCaptionKeys#ARGUMENT_PARSE_FAILURE_USER_INVALID_INPUT}
*/
public static final String ARGUMENT_PARSE_FAILURE_USER_INVALID_INPUT =
"Input '{input}' is not a valid UUID or username.";
"Input '{input}' is not a valid UUID or username.";

/**
* Default caption for {@link SpongeCaptionKeys#ARGUMENT_PARSE_FAILURE_GAME_PROFILE_TOO_MANY_SELECTED}
*/
public static final String ARGUMENT_PARSE_FAILURE_GAME_PROFILE_TOO_MANY_SELECTED =
"The provided selector matched multiple game profiles, but only one is allowed.";
"The provided selector matched multiple game profiles, but only one is allowed.";

protected SpongeCaptionRegistry() {
super();

this.registerMessageFactory(
this.registerProvider(CaptionProvider.<C>constantProvider()
.putCaptions(
SpongeCaptionKeys.ARGUMENT_PARSE_FAILURE_REGISTRY_ENTRY_UNKNOWN_ENTRY,
(caption, sender) -> ARGUMENT_PARSE_FAILURE_REGISTRY_ENTRY_UNKNOWN_ENTRY
);
this.registerMessageFactory(
ARGUMENT_PARSE_FAILURE_REGISTRY_ENTRY_UNKNOWN_ENTRY)
.putCaptions(
SpongeCaptionKeys.ARGUMENT_PARSE_FAILURE_USER_CANNOT_FIND_USER_WITH_NAME,
(caption, sender) -> ARGUMENT_PARSE_FAILURE_USER_CANNOT_FIND_USER_WITH_NAME
);
this.registerMessageFactory(
ARGUMENT_PARSE_FAILURE_USER_CANNOT_FIND_USER_WITH_NAME)
.putCaptions(
SpongeCaptionKeys.ARGUMENT_PARSE_FAILURE_USER_CANNOT_FIND_USER_WITH_UUID,
(caption, sender) -> ARGUMENT_PARSE_FAILURE_USER_CANNOT_FIND_USER_WITH_UUID
);
this.registerMessageFactory(
ARGUMENT_PARSE_FAILURE_USER_CANNOT_FIND_USER_WITH_UUID)
.putCaptions(
SpongeCaptionKeys.ARGUMENT_PARSE_FAILURE_USER_INVALID_INPUT,
(caption, sender) -> ARGUMENT_PARSE_FAILURE_USER_INVALID_INPUT
);
this.registerMessageFactory(
ARGUMENT_PARSE_FAILURE_USER_INVALID_INPUT)
.putCaptions(
SpongeCaptionKeys.ARGUMENT_PARSE_FAILURE_GAME_PROFILE_TOO_MANY_SELECTED,
(caption, sender) -> ARGUMENT_PARSE_FAILURE_GAME_PROFILE_TOO_MANY_SELECTED
);
ARGUMENT_PARSE_FAILURE_GAME_PROFILE_TOO_MANY_SELECTED)
.build());
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -31,36 +31,9 @@
import cloud.commandframework.meta.CommandMeta;
import cloud.commandframework.meta.SimpleCommandMeta;
import cloud.commandframework.sponge.annotation.specifier.Center;
import cloud.commandframework.sponge.argument.BlockInputArgument;
import cloud.commandframework.sponge.argument.BlockPredicateArgument;
import cloud.commandframework.sponge.argument.ComponentArgument;
import cloud.commandframework.sponge.argument.DataContainerArgument;
import cloud.commandframework.sponge.argument.GameProfileArgument;
import cloud.commandframework.sponge.argument.GameProfileCollectionArgument;
import cloud.commandframework.sponge.argument.ItemStackPredicateArgument;
import cloud.commandframework.sponge.argument.MultipleEntitySelectorArgument;
import cloud.commandframework.sponge.argument.MultiplePlayerSelectorArgument;
import cloud.commandframework.sponge.argument.NamedTextColorArgument;
import cloud.commandframework.sponge.argument.OperatorArgument;
import cloud.commandframework.sponge.argument.ProtoItemStackArgument;
import cloud.commandframework.sponge.argument.RegistryEntryArgument;
import cloud.commandframework.sponge.argument.ResourceKeyArgument;
import cloud.commandframework.sponge.argument.SingleEntitySelectorArgument;
import cloud.commandframework.sponge.argument.SinglePlayerSelectorArgument;
import cloud.commandframework.sponge.argument.UserArgument;
import cloud.commandframework.sponge.argument.Vector2dArgument;
import cloud.commandframework.sponge.argument.Vector2iArgument;
import cloud.commandframework.sponge.argument.Vector3dArgument;
import cloud.commandframework.sponge.argument.Vector3iArgument;
import cloud.commandframework.sponge.argument.WorldArgument;
import cloud.commandframework.sponge.data.BlockPredicate;
import cloud.commandframework.sponge.data.GameProfileCollection;
import cloud.commandframework.sponge.data.ItemStackPredicate;
import cloud.commandframework.sponge.data.MultipleEntitySelector;
import cloud.commandframework.sponge.data.MultiplePlayerSelector;
import cloud.commandframework.sponge.data.ProtoItemStack;
import cloud.commandframework.sponge.data.SingleEntitySelector;
import cloud.commandframework.sponge.data.SinglePlayerSelector;
import cloud.commandframework.sponge.parser.RegistryEntryParser;
import cloud.commandframework.sponge.parser.Vector2dParser;
import cloud.commandframework.sponge.parser.Vector3dParser;
import cloud.commandframework.state.RegistrationState;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Inject;
Expand All @@ -72,27 +45,38 @@
import java.util.HashSet;
import java.util.Set;
import java.util.function.Consumer;
import net.kyori.adventure.text.format.NamedTextColor;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.spongepowered.api.ResourceKey;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.command.CommandCause;
import org.spongepowered.api.command.parameter.managed.operator.Operator;
import org.spongepowered.api.data.persistence.DataContainer;
import org.spongepowered.api.entity.living.player.User;
import org.spongepowered.api.event.lifecycle.RegisterCommandEvent;
import org.spongepowered.api.profile.GameProfile;
import org.spongepowered.api.registry.DefaultedRegistryType;
import org.spongepowered.api.registry.Registry;
import org.spongepowered.api.registry.RegistryType;
import org.spongepowered.api.registry.RegistryTypes;
import org.spongepowered.api.world.server.ServerWorld;
import org.spongepowered.math.vector.Vector2d;
import org.spongepowered.math.vector.Vector2i;
import org.spongepowered.math.vector.Vector3d;
import org.spongepowered.math.vector.Vector3i;
import org.spongepowered.plugin.PluginContainer;

import static cloud.commandframework.sponge.parser.BlockInputParser.blockInputParser;
import static cloud.commandframework.sponge.parser.BlockPredicateParser.blockPredicateParser;
import static cloud.commandframework.sponge.parser.ComponentParser.componentParser;
import static cloud.commandframework.sponge.parser.DataContainerParser.dataContainerParser;
import static cloud.commandframework.sponge.parser.GameProfileCollectionParser.gameProfileCollectionParser;
import static cloud.commandframework.sponge.parser.GameProfileParser.gameProfileParser;
import static cloud.commandframework.sponge.parser.ItemStackPredicateParser.itemStackPredicateParser;
import static cloud.commandframework.sponge.parser.MultipleEntitySelectorParser.multipleEntitySelectorParser;
import static cloud.commandframework.sponge.parser.MultiplePlayerSelectorParser.multiplePlayerSelectorParser;
import static cloud.commandframework.sponge.parser.NamedTextColorParser.namedTextColorParser;
import static cloud.commandframework.sponge.parser.OperatorParser.operatorParser;
import static cloud.commandframework.sponge.parser.ProtoItemStackParser.protoItemStackParser;
import static cloud.commandframework.sponge.parser.ResourceKeyParser.resourceKeyParser;
import static cloud.commandframework.sponge.parser.SingleEntitySelectorParser.singleEntitySelectorParser;
import static cloud.commandframework.sponge.parser.SinglePlayerSelectorParser.singlePlayerSelectorParser;
import static cloud.commandframework.sponge.parser.UserParser.userParser;
import static cloud.commandframework.sponge.parser.Vector2iParser.vector2iParser;
import static cloud.commandframework.sponge.parser.Vector3iParser.vector3iParser;
import static cloud.commandframework.sponge.parser.WorldParser.worldParser;

/**
* Command manager for Sponge API v8.
* <p>
Expand Down Expand Up @@ -146,98 +130,38 @@ private void checkLateCreation() {
}

private void registerParsers() {
this.parserRegistry().registerParserSupplier(
TypeToken.get(ComponentArgument.class),
params -> new ComponentArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(NamedTextColor.class),
params -> new NamedTextColorArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(Operator.class),
params -> new OperatorArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(ServerWorld.class),
params -> new WorldArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(ProtoItemStack.class),
params -> new ProtoItemStackArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(ItemStackPredicate.class),
params -> new ItemStackPredicateArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(ResourceKey.class),
params -> new ResourceKeyArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(GameProfile.class),
params -> new GameProfileArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(GameProfileCollection.class),
params -> new GameProfileCollectionArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(BlockInputArgument.class),
params -> new BlockInputArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(BlockPredicate.class),
params -> new BlockPredicateArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(User.class),
params -> new UserArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(DataContainer.class),
params -> new DataContainerArgument.Parser<>()
);

// Position arguments
this.parserRegistry().registerAnnotationMapper(
Center.class,
(annotation, type) -> ParserParameters.single(SpongeParserParameters.CENTER_INTEGERS, true)
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(Vector2d.class),
params -> new Vector2dArgument.Parser<>(params.get(SpongeParserParameters.CENTER_INTEGERS, false))
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(Vector3d.class),
params -> new Vector3dArgument.Parser<>(params.get(SpongeParserParameters.CENTER_INTEGERS, false))
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(Vector2i.class),
params -> new Vector2iArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(Vector3i.class),
params -> new Vector3iArgument.Parser<>()
);

// Entity selectors
this.parserRegistry().registerParserSupplier(
TypeToken.get(SinglePlayerSelector.class),
params -> new SinglePlayerSelectorArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(MultiplePlayerSelector.class),
params -> new MultiplePlayerSelectorArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(SingleEntitySelector.class),
params -> new SingleEntitySelectorArgument.Parser<>()
);
this.parserRegistry().registerParserSupplier(
TypeToken.get(MultipleEntitySelector.class),
params -> new MultipleEntitySelectorArgument.Parser<>()
);
this.parserRegistry()
.registerParser(componentParser())
.registerParser(namedTextColorParser())
.registerParser(operatorParser())
.registerParser(worldParser())
.registerParser(protoItemStackParser())
.registerParser(itemStackPredicateParser())
.registerParser(resourceKeyParser())
.registerParser(gameProfileParser())
.registerParser(gameProfileCollectionParser())
.registerParser(blockInputParser())
.registerParser(blockPredicateParser())
.registerParser(userParser())
.registerParser(dataContainerParser())
.registerAnnotationMapper(
Center.class,
(annotation, type) -> ParserParameters.single(SpongeParserParameters.CENTER_INTEGERS, true)
)
.registerParserSupplier(
TypeToken.get(Vector2d.class),
params -> new Vector2dParser<>(params.get(SpongeParserParameters.CENTER_INTEGERS, false))
)
.registerParserSupplier(
TypeToken.get(Vector3d.class),
params -> new Vector3dParser<>(params.get(SpongeParserParameters.CENTER_INTEGERS, false))
)
.registerParser(vector2iParser())
.registerParser(vector3iParser())
.registerParser(singlePlayerSelectorParser())
.registerParser(multiplePlayerSelectorParser())
.registerParser(singleEntitySelectorParser())
.registerParser(multipleEntitySelectorParser());

this.registerRegistryParsers();
}
Expand Down Expand Up @@ -266,7 +190,7 @@ private void registerRegistryParsers() {

this.parserRegistry().registerParserSupplier(
TypeToken.get(valueType),
params -> new RegistryEntryArgument.Parser<>(defaultedRegistryType)
params -> new RegistryEntryParser<>(defaultedRegistryType)
);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,16 +57,6 @@
*/
public final class SpongeParserMapper<C> {

private static final Class<?> DELEGATING_SUGGESTIONS_PROVIDER; // todo - ugly

static {
try {
DELEGATING_SUGGESTIONS_PROVIDER = Class.forName("cloud.commandframework.arguments.DelegatingSuggestionsProvider");
} catch (final ClassNotFoundException e) {
throw new RuntimeException(e);
}
}

private final Map<Class<?>, Mapping<C, ?>> mappers = new HashMap<>();

SpongeParserMapper() {
Expand Down Expand Up @@ -100,8 +90,8 @@ CommandTreeNode.Argument<? extends CommandTreeNode.Argument<?>> mapParser(final
return apply;
}
result = apply;
} else if (parser instanceof NodeSupplyingArgumentParser) {
result = ((NodeSupplyingArgumentParser<C, ?>) parser).node();
} else if (parser instanceof NodeSource) {
result = ((NodeSource) parser).node();
} else {
result = CommandTreeNodeTypes.STRING.get().createNode().customCompletions().word();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@

import static java.util.Objects.requireNonNull;

final class SpongeRegistrationHandler<C> implements CommandRegistrationHandler {
final class SpongeRegistrationHandler<C> implements CommandRegistrationHandler<C> {

private SpongeCommandManager<C> commandManager;
private final Set<cloud.commandframework.Command<C>> registeredCommands = new HashSet<>();
Expand Down Expand Up @@ -74,10 +74,9 @@ void initialize(final @NonNull SpongeCommandManager<C> commandManager) {
);
}

@SuppressWarnings("unchecked")
@Override
public boolean registerCommand(cloud.commandframework.@NonNull Command command) {
this.registeredCommands.add((cloud.commandframework.Command<C>) command);
public boolean registerCommand(cloud.commandframework.@NonNull Command<C> command) {
this.registeredCommands.add(command);
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@
//
package cloud.commandframework.sponge.annotation.specifier;

import cloud.commandframework.sponge.argument.Vector2dArgument;
import cloud.commandframework.sponge.argument.Vector3dArgument;
import cloud.commandframework.sponge.parser.Vector2dParser;
import cloud.commandframework.sponge.parser.Vector3dParser;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* Annotation used to enable coordinate centering for {@link Vector3dArgument} and {@link Vector2dArgument}.
* Annotation used to enable coordinate centering for {@link Vector3dParser} and {@link Vector2dParser}.
*/
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
Expand Down
Loading

0 comments on commit af6b54b

Please sign in to comment.