diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricClientCommandManager.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricClientCommandManager.java index dca9fe3b..370dad7b 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricClientCommandManager.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/FabricClientCommandManager.java @@ -55,8 +55,9 @@ public final class FabricClientCommandManager extends FabricCommandManager createNative( - final Function, CommandExecutionCoordinator> execCoordinator + public static @NonNull FabricClientCommandManager<@NonNull FabricClientCommandSource> createNative( + final @NonNull Function<@NonNull CommandTree<@NonNull FabricClientCommandSource>, + @NonNull CommandExecutionCoordinator<@NonNull FabricClientCommandSource>> execCoordinator ) { return new FabricClientCommandManager<>(execCoordinator, Function.identity(), Function.identity()); } @@ -76,11 +77,11 @@ public final class FabricClientCommandManager extends FabricCommandManager, @NonNull CommandExecutionCoordinator> commandExecutionCoordinator, - final Function commandSourceMapper, - final Function backwardsCommandSourceMapper + final @NonNull Function<@NonNull CommandTree<@NonNull C>, + @NonNull CommandExecutionCoordinator<@NonNull C>> commandExecutionCoordinator, + final @NonNull Function<@NonNull FabricClientCommandSource, @NonNull C> commandSourceMapper, + final @NonNull Function<@NonNull C, @NonNull FabricClientCommandSource> backwardsCommandSourceMapper ) { super( commandExecutionCoordinator, @@ -110,7 +111,7 @@ public final class FabricClientCommandManager extends FabricCommandManager extends C @SuppressWarnings("unchecked") FabricCommandManager( final @NonNull Function<@NonNull CommandTree, @NonNull CommandExecutionCoordinator> commandExecutionCoordinator, - final Function commandSourceMapper, - final Function backwardsCommandSourceMapper, - final FabricCommandRegistrationHandler registrationHandler, - final Supplier dummyCommandSourceProvider + final @NonNull Function commandSourceMapper, + final @NonNull Function backwardsCommandSourceMapper, + final @NonNull FabricCommandRegistrationHandler registrationHandler, + final @NonNull Supplier dummyCommandSourceProvider ) { super(commandExecutionCoordinator, registrationHandler); this.commandSourceMapper = commandSourceMapper; @@ -164,11 +164,13 @@ public abstract class FabricCommandManager extends C ((FabricCommandRegistrationHandler) this.getCommandRegistrationHandler()).initialize(this); } - private void registerNativeBrigadierMappings(final CloudBrigadierManager brigadier) { + private void registerNativeBrigadierMappings(final @NonNull CloudBrigadierManager brigadier) { /* Cloud-native argument types */ - brigadier.registerMapping(new TypeToken>() {}, builder -> builder.toConstant(UuidArgumentType.uuid())); + brigadier.registerMapping(new TypeToken>() { + }, builder -> builder.toConstant(UuidArgumentType.uuid())); this.registerRegistryEntryMappings(); - brigadier.registerMapping(new TypeToken>() {}, builder -> builder.toConstant(TeamArgumentType.team())); + brigadier.registerMapping(new TypeToken>() { + }, builder -> builder.toConstant(TeamArgumentType.team())); this.getParserRegistry().registerParserSupplier(TypeToken.get(Team.class), params -> new TeamArgument.TeamParser<>()); /* Wrapped/Constant Brigadier types, native value type */ @@ -180,9 +182,13 @@ public abstract class FabricCommandManager extends C this.registerConstantNativeParserSupplier(OperationArgumentType.Operation.class, OperationArgumentType.operation()); this.registerConstantNativeParserSupplier(ParticleEffect.class, ParticleArgumentType.particle()); this.registerConstantNativeParserSupplier(AngleArgumentType.Angle.class, AngleArgumentType.angle()); - this.registerConstantNativeParserSupplier(new TypeToken>() {}, SwizzleArgumentType.swizzle()); + this.registerConstantNativeParserSupplier(new TypeToken>() { + }, SwizzleArgumentType.swizzle()); this.registerConstantNativeParserSupplier(Identifier.class, IdentifierArgumentType.identifier()); - this.registerConstantNativeParserSupplier(EntityAnchorArgumentType.EntityAnchor.class, EntityAnchorArgumentType.entityAnchor()); + this.registerConstantNativeParserSupplier( + EntityAnchorArgumentType.EntityAnchor.class, + EntityAnchorArgumentType.entityAnchor() + ); this.registerConstantNativeParserSupplier(NumberRange.IntRange.class, NumberRangeArgumentType.numberRange()); this.registerConstantNativeParserSupplier(NumberRange.FloatRange.class, NumberRangeArgumentType.method_30918()); // todo: can we add a compound argument -- MC `ItemStackArgument` is just type and tag, and count is separate @@ -207,7 +213,10 @@ public abstract class FabricCommandManager extends C this.registerConstantNativeParserSupplier(Team.class, TeamArgumentType.team()); this.registerConstantNativeParserSupplier(/* slot *, ItemSlotArgumentType.itemSlot()); this.registerConstantNativeParserSupplier(CommandFunction.class, FunctionArgumentType.function()); */ - this.getParserRegistry().registerParserSupplier(TypeToken.get(MinecraftTime.class), params -> FabricArgumentParsers.time()); + this.getParserRegistry().registerParserSupplier( + TypeToken.get(MinecraftTime.class), + params -> FabricArgumentParsers.time() + ); /* Wrapped brigadier requiring parameters */ // score holder: single vs multiple @@ -310,7 +319,7 @@ public abstract class FabricCommandManager extends C * @param value type * @since 1.5.0 */ - final void registerConstantNativeParserSupplier(final Class type, final ArgumentType argument) { + final void registerConstantNativeParserSupplier(final @NonNull Class type, final @NonNull ArgumentType argument) { this.registerConstantNativeParserSupplier(TypeToken.get(type), argument); } @@ -322,7 +331,10 @@ public abstract class FabricCommandManager extends C * @param value type * @since 1.5.0 */ - final void registerConstantNativeParserSupplier(final TypeToken type, final ArgumentType argument) { + final void registerConstantNativeParserSupplier( + final @NonNull TypeToken type, + final @NonNull ArgumentType argument + ) { this.getParserRegistry().registerParserSupplier(type, params -> new WrappedBrigadierParser<>(argument)); } 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 faf458e5..8dfaa0b1 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 @@ -79,8 +79,9 @@ public final class FabricServerCommandManager extends FabricCommandManager createNative( - final Function, CommandExecutionCoordinator> execCoordinator + public static @NonNull FabricServerCommandManager<@NonNull ServerCommandSource> createNative( + final @NonNull Function<@NonNull CommandTree<@NonNull ServerCommandSource>, + @NonNull CommandExecutionCoordinator<@NonNull ServerCommandSource>> execCoordinator ) { return new FabricServerCommandManager<>(execCoordinator, Function.identity(), Function.identity()); } @@ -101,9 +102,10 @@ public final class FabricServerCommandManager extends FabricCommandManager, @NonNull CommandExecutionCoordinator> commandExecutionCoordinator, - final Function commandSourceMapper, - final Function backwardsCommandSourceMapper + final @NonNull Function<@NonNull CommandTree<@NonNull C>, + @NonNull CommandExecutionCoordinator<@NonNull C>> commandExecutionCoordinator, + final @NonNull Function<@NonNull ServerCommandSource, @NonNull C> commandSourceMapper, + final @NonNull Function<@NonNull C, @NonNull ServerCommandSource> backwardsCommandSourceMapper ) { super( commandExecutionCoordinator, @@ -159,7 +161,7 @@ public final class FabricServerCommandManager extends FabricCommandManager ArgumentParser time() { + public static @NonNull ArgumentParser time() { return new WrappedBrigadierParser(TimeArgumentType.time()) .map((ctx, val) -> ArgumentParseResult.success(MinecraftTime.of(val))); } @@ -81,7 +81,7 @@ public final class FabricArgumentParsers { * @return a parser instance * @since 1.5.0 */ - public static ArgumentParser singlePlayerSelector() { + public static @NonNull ArgumentParser singlePlayerSelector() { return new WrappedBrigadierParser(EntityArgumentType.player()) .map((ctx, entitySelector) -> { final CommandSource either = ctx.get(FabricCommandContextKeys.NATIVE_COMMAND_SOURCE); @@ -107,7 +107,7 @@ public final class FabricArgumentParsers { * @return a parser instance * @since 1.5.0 */ - public static ArgumentParser multiplePlayerSelector() { + public static @NonNull ArgumentParser multiplePlayerSelector() { return new WrappedBrigadierParser(EntityArgumentType.players()) .map((ctx, entitySelector) -> { final CommandSource either = ctx.get(FabricCommandContextKeys.NATIVE_COMMAND_SOURCE); @@ -133,7 +133,7 @@ public final class FabricArgumentParsers { * @return a parser instance * @since 1.5.0 */ - public static ArgumentParser singleEntitySelector() { + public static @NonNull ArgumentParser singleEntitySelector() { return new WrappedBrigadierParser(EntityArgumentType.entity()) .map((ctx, entitySelector) -> { final CommandSource either = ctx.get(FabricCommandContextKeys.NATIVE_COMMAND_SOURCE); @@ -159,7 +159,7 @@ public final class FabricArgumentParsers { * @return a parser instance * @since 1.5.0 */ - public static ArgumentParser multipleEntitySelector() { + public static @NonNull ArgumentParser multipleEntitySelector() { return new WrappedBrigadierParser(EntityArgumentType.entities()) .map((ctx, entitySelector) -> { final CommandSource either = ctx.get(FabricCommandContextKeys.NATIVE_COMMAND_SOURCE); @@ -185,7 +185,7 @@ public final class FabricArgumentParsers { * @return a parser instance * @since 1.5.0 */ - public static ArgumentParser message() { + public static @NonNull ArgumentParser message() { return new WrappedBrigadierParser(MessageArgumentType.message()) .map((ctx, format) -> { final CommandSource either = ctx.get(FabricCommandContextKeys.NATIVE_COMMAND_SOURCE); @@ -213,8 +213,8 @@ public final class FabricArgumentParsers { private final Text contents; static MessageImpl from( - final ServerCommandSource source, - final MessageArgumentType.MessageFormat message, + final @NonNull ServerCommandSource source, + final MessageArgumentType.@NonNull MessageFormat message, final boolean useSelectors ) throws CommandSyntaxException { final Text contents = message.format(source, useSelectors); 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 555a5136..d8f5577f 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 @@ -107,7 +107,7 @@ public final class IntRangeArgument extends CommandArgument @NonNull IntRangeArgument optional( final @NonNull String name, - final NumberRange.IntRange defaultValue + final NumberRange.@NonNull IntRange defaultValue ) { final StringBuilder value = new StringBuilder(6); if (defaultValue.getMin() != null) { diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ScoreboardCriterionArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ScoreboardCriterionArgument.java index 881dabd1..b58f7d3d 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ScoreboardCriterionArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/ScoreboardCriterionArgument.java @@ -106,7 +106,7 @@ public final class ScoreboardCriterionArgument extends CommandArgument @NonNull ScoreboardCriterionArgument optional( final @NonNull String name, - final ScoreboardCriterion defaultCriterion + final @NonNull ScoreboardCriterion defaultCriterion ) { return ScoreboardCriterionArgument.newBuilder(name).asOptionalWithDefault(defaultCriterion.getName()).build(); } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/SidedArgumentParser.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/SidedArgumentParser.java index a7a63c73..e73a64f4 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/SidedArgumentParser.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/SidedArgumentParser.java @@ -65,7 +65,7 @@ abstract class SidedArgumentParser implements ArgumentParser { }); } - protected abstract ArgumentParseResult parseIntermediate( + protected abstract @NonNull ArgumentParseResult<@NonNull I> parseIntermediate( @NonNull CommandContext<@NonNull C> commandContext, @NonNull Queue<@NonNull String> inputQueue ); @@ -79,7 +79,11 @@ abstract class SidedArgumentParser implements ArgumentParser { * @return a resolved value * @since 1.5.0 */ - protected abstract ArgumentParseResult resolveClient(CommandContext context, CommandSource source, I value); + protected abstract @NonNull ArgumentParseResult<@NonNull R> resolveClient( + @NonNull CommandContext<@NonNull C> context, + @NonNull CommandSource source, + @NonNull I value + ); /** * Resolve the final value for this argument when running on the server. @@ -90,6 +94,10 @@ abstract class SidedArgumentParser implements ArgumentParser { * @return a resolved value * @since 1.5.0 */ - protected abstract ArgumentParseResult resolveServer(CommandContext context, CommandSource source, I value); + protected abstract @NonNull ArgumentParseResult<@NonNull R> resolveServer( + @NonNull CommandContext<@NonNull C> context, + @NonNull CommandSource source, + @NonNull I value + ); } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/TeamArgument.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/TeamArgument.java index ceebb758..6bd85035 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/TeamArgument.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/argument/TeamArgument.java @@ -138,7 +138,7 @@ public final class TeamArgument extends CommandArgument { } @Override - protected ArgumentParseResult parseIntermediate( + protected @NonNull ArgumentParseResult parseIntermediate( @NonNull final CommandContext<@NonNull C> commandContext, @NonNull final Queue<@NonNull String> inputQueue ) { @@ -150,7 +150,7 @@ public final class TeamArgument extends CommandArgument { } @Override - protected ArgumentParseResult resolveClient( + protected @NonNull ArgumentParseResult resolveClient( final @NonNull CommandContext context, final @NonNull CommandSource source, final @NonNull String value @@ -163,7 +163,7 @@ public final class TeamArgument extends CommandArgument { } @Override - protected ArgumentParseResult resolveServer( + protected @NonNull ArgumentParseResult resolveServer( final @NonNull CommandContext context, final @NonNull CommandSource source, final @NonNull String value 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 69529d6e..60af1b46 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 @@ -104,7 +104,7 @@ public final class TimeArgument extends CommandArgument { */ public static @NonNull TimeArgument optional( final @NonNull String name, - final MinecraftTime defaultTime + final @NonNull MinecraftTime defaultTime ) { return TimeArgument.newBuilder(name).asOptionalWithDefault(defaultTime.toString()).build(); } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MinecraftTime.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MinecraftTime.java index 4e1fb36c..4bdbb894 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MinecraftTime.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/MinecraftTime.java @@ -24,6 +24,8 @@ package cloud.commandframework.fabric.data; +import org.checkerframework.checker.nullness.qual.NonNull; + import java.time.temporal.TemporalUnit; import java.util.Objects; import java.util.concurrent.TimeUnit; @@ -50,7 +52,7 @@ public final class MinecraftTime { * @return a time holder * @since 1.5.0 */ - public static MinecraftTime of(final long ticks) { + public static @NonNull MinecraftTime of(final long ticks) { return ticks == 0 ? ZERO : new MinecraftTime(ticks); } @@ -62,7 +64,7 @@ public final class MinecraftTime { * @return a time holder * @since 1.5.0 */ - public static MinecraftTime of(final long amount, final TemporalUnit unit) { + public static @NonNull MinecraftTime of(final long amount, final @NonNull TemporalUnit unit) { requireNonNull(unit, "unit"); return new MinecraftTime(Math.round(amount / 50d * unit.getDuration().toMillis())); } @@ -75,7 +77,7 @@ public final class MinecraftTime { * @return a time holder * @since 1.5.0 */ - public static MinecraftTime of(final long amount, final TimeUnit unit) { + public static @NonNull MinecraftTime of(final long amount, final @NonNull TimeUnit unit) { requireNonNull(unit, "unit"); return amount == 0 ? ZERO : new MinecraftTime(TimeUnit.MILLISECONDS.convert(amount, unit) / 50); } @@ -114,7 +116,7 @@ public final class MinecraftTime { * @return the target duration, as represented by the provided unit * @since 1.5.0 */ - public long convertTo(final TemporalUnit unit) { + public long convertTo(final @NonNull TemporalUnit unit) { return this.ticks * 50 / unit.getDuration().toMillis(); } @@ -125,7 +127,7 @@ public final class MinecraftTime { * @return the target duration, as represented by the provided unit * @since 1.5.0 */ - public long convertTo(final TimeUnit unit) { + public long convertTo(final @NonNull TimeUnit unit) { return unit.convert(this.ticks * 50, TimeUnit.MILLISECONDS); } diff --git a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Selector.java b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Selector.java index 45e295c2..58ba8ec9 100644 --- a/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Selector.java +++ b/cloud-minecraft/cloud-fabric/src/main/java/cloud/commandframework/fabric/data/Selector.java @@ -25,6 +25,7 @@ package cloud.commandframework.fabric.data; import net.minecraft.command.EntitySelector; +import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import java.util.Collection; @@ -44,7 +45,7 @@ public interface Selector { * @return the input * @since 1.5.0 */ - String getInput(); + @NonNull String getInput(); /** * If this value came from a parsed selector, this will provide the details of that selector. @@ -62,7 +63,7 @@ public interface Selector { * @return all matched entities * @since 1.5.0 */ - Collection get(); + @NonNull Collection get(); /** * A specialized selector that can only return one value. @@ -73,7 +74,7 @@ public interface Selector { interface Single extends Selector { @Override - default Collection get() { + default @NonNull Collection get() { return Collections.singletonList(this.getSingle()); } @@ -83,7 +84,7 @@ public interface Selector { * @return the value * @since 1.5.0 */ - V getSingle(); + @NonNull V getSingle(); }