fabric: add more nullability annotations
This commit is contained in:
parent
ddf16373fb
commit
c95d0c70cd
11 changed files with 77 additions and 51 deletions
|
|
@ -55,8 +55,9 @@ public final class FabricClientCommandManager<C> extends FabricCommandManager<C,
|
|||
* @see #FabricClientCommandManager(Function, Function, Function) for a more thorough explanation
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public static FabricClientCommandManager<FabricClientCommandSource> createNative(
|
||||
final Function<CommandTree<FabricClientCommandSource>, CommandExecutionCoordinator<FabricClientCommandSource>> 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<C> extends FabricCommandManager<C,
|
|||
* @param backwardsCommandSourceMapper Function that maps the command sender type to {@link FabricClientCommandSource}
|
||||
* @since 1.5.0
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public FabricClientCommandManager(
|
||||
final @NonNull Function<@NonNull CommandTree<C>, @NonNull CommandExecutionCoordinator<C>> commandExecutionCoordinator,
|
||||
final Function<FabricClientCommandSource, C> commandSourceMapper,
|
||||
final Function<C, FabricClientCommandSource> 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<C> extends FabricCommandManager<C,
|
|||
* @since 1.5.0
|
||||
*/
|
||||
@Override
|
||||
public boolean hasPermission(@NonNull final C sender, @NonNull final String permission) {
|
||||
public boolean hasPermission(final @NonNull C sender, final @NonNull String permission) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -139,10 +139,10 @@ public abstract class FabricCommandManager<C, S extends CommandSource> extends C
|
|||
@SuppressWarnings("unchecked")
|
||||
FabricCommandManager(
|
||||
final @NonNull Function<@NonNull CommandTree<C>, @NonNull CommandExecutionCoordinator<C>> commandExecutionCoordinator,
|
||||
final Function<S, C> commandSourceMapper,
|
||||
final Function<C, S> backwardsCommandSourceMapper,
|
||||
final FabricCommandRegistrationHandler<C, S> registrationHandler,
|
||||
final Supplier<S> dummyCommandSourceProvider
|
||||
final @NonNull Function<S, C> commandSourceMapper,
|
||||
final @NonNull Function<C, S> backwardsCommandSourceMapper,
|
||||
final @NonNull FabricCommandRegistrationHandler<C, S> registrationHandler,
|
||||
final @NonNull Supplier<S> dummyCommandSourceProvider
|
||||
) {
|
||||
super(commandExecutionCoordinator, registrationHandler);
|
||||
this.commandSourceMapper = commandSourceMapper;
|
||||
|
|
@ -164,11 +164,13 @@ public abstract class FabricCommandManager<C, S extends CommandSource> extends C
|
|||
((FabricCommandRegistrationHandler<C, S>) this.getCommandRegistrationHandler()).initialize(this);
|
||||
}
|
||||
|
||||
private void registerNativeBrigadierMappings(final CloudBrigadierManager<C, S> brigadier) {
|
||||
private void registerNativeBrigadierMappings(final @NonNull CloudBrigadierManager<C, S> brigadier) {
|
||||
/* Cloud-native argument types */
|
||||
brigadier.registerMapping(new TypeToken<UUIDArgument.UUIDParser<C>>() {}, builder -> builder.toConstant(UuidArgumentType.uuid()));
|
||||
brigadier.registerMapping(new TypeToken<UUIDArgument.UUIDParser<C>>() {
|
||||
}, builder -> builder.toConstant(UuidArgumentType.uuid()));
|
||||
this.registerRegistryEntryMappings();
|
||||
brigadier.registerMapping(new TypeToken<TeamArgument.TeamParser<C>>() {}, builder -> builder.toConstant(TeamArgumentType.team()));
|
||||
brigadier.registerMapping(new TypeToken<TeamArgument.TeamParser<C>>() {
|
||||
}, 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<C, S extends CommandSource> 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<EnumSet<Direction.Axis>>() {}, SwizzleArgumentType.swizzle());
|
||||
this.registerConstantNativeParserSupplier(new TypeToken<EnumSet<Direction.Axis>>() {
|
||||
}, 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<C, S extends CommandSource> 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<C, S extends CommandSource> extends C
|
|||
* @param <T> value type
|
||||
* @since 1.5.0
|
||||
*/
|
||||
final <T> void registerConstantNativeParserSupplier(final Class<T> type, final ArgumentType<T> argument) {
|
||||
final <T> void registerConstantNativeParserSupplier(final @NonNull Class<T> type, final @NonNull ArgumentType<T> argument) {
|
||||
this.registerConstantNativeParserSupplier(TypeToken.get(type), argument);
|
||||
}
|
||||
|
||||
|
|
@ -322,7 +331,10 @@ public abstract class FabricCommandManager<C, S extends CommandSource> extends C
|
|||
* @param <T> value type
|
||||
* @since 1.5.0
|
||||
*/
|
||||
final <T> void registerConstantNativeParserSupplier(final TypeToken<T> type, final ArgumentType<T> argument) {
|
||||
final <T> void registerConstantNativeParserSupplier(
|
||||
final @NonNull TypeToken<T> type,
|
||||
final @NonNull ArgumentType<T> argument
|
||||
) {
|
||||
this.getParserRegistry().registerParserSupplier(type, params -> new WrappedBrigadierParser<>(argument));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -79,8 +79,9 @@ public final class FabricServerCommandManager<C> extends FabricCommandManager<C,
|
|||
* @see #FabricServerCommandManager(Function, Function, Function) for a more thorough explanation
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public static FabricServerCommandManager<ServerCommandSource> createNative(
|
||||
final Function<CommandTree<ServerCommandSource>, CommandExecutionCoordinator<ServerCommandSource>> 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<C> extends FabricCommandManager<C,
|
|||
* @since 1.5.0
|
||||
*/
|
||||
public FabricServerCommandManager(
|
||||
final @NonNull Function<@NonNull CommandTree<C>, @NonNull CommandExecutionCoordinator<C>> commandExecutionCoordinator,
|
||||
final Function<ServerCommandSource, C> commandSourceMapper,
|
||||
final Function<C, ServerCommandSource> 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<C> extends FabricCommandManager<C,
|
|||
* @since 1.5.0
|
||||
*/
|
||||
@Override
|
||||
public boolean hasPermission(@NonNull final C sender, @NonNull final String permission) {
|
||||
public boolean hasPermission(final @NonNull C sender, final @NonNull String permission) {
|
||||
final ServerCommandSource source = this.getBackwardsCommandSourceMapper().apply(sender);
|
||||
return Permissions.check(source, permission, source.getMinecraftServer().getOpPermissionLevel());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ public final class FabricArgumentParsers {
|
|||
* @return a parser instance
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public static <C> ArgumentParser<C, MinecraftTime> time() {
|
||||
public static <C> @NonNull ArgumentParser<C, MinecraftTime> time() {
|
||||
return new WrappedBrigadierParser<C, Integer>(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 <C> ArgumentParser<C, SinglePlayerSelector> singlePlayerSelector() {
|
||||
public static <C> @NonNull ArgumentParser<C, SinglePlayerSelector> singlePlayerSelector() {
|
||||
return new WrappedBrigadierParser<C, EntitySelector>(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 <C> ArgumentParser<C, MultiplePlayerSelector> multiplePlayerSelector() {
|
||||
public static <C> @NonNull ArgumentParser<C, MultiplePlayerSelector> multiplePlayerSelector() {
|
||||
return new WrappedBrigadierParser<C, EntitySelector>(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 <C> ArgumentParser<C, SingleEntitySelector> singleEntitySelector() {
|
||||
public static <C> @NonNull ArgumentParser<C, SingleEntitySelector> singleEntitySelector() {
|
||||
return new WrappedBrigadierParser<C, EntitySelector>(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 <C> ArgumentParser<C, MultipleEntitySelector> multipleEntitySelector() {
|
||||
public static <C> @NonNull ArgumentParser<C, MultipleEntitySelector> multipleEntitySelector() {
|
||||
return new WrappedBrigadierParser<C, EntitySelector>(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 <C> ArgumentParser<C, Message> message() {
|
||||
public static <C> @NonNull ArgumentParser<C, Message> message() {
|
||||
return new WrappedBrigadierParser<C, MessageArgumentType.MessageFormat>(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);
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ public final class IntRangeArgument<C> extends CommandArgument<C, NumberRange.In
|
|||
*/
|
||||
public static <C> @NonNull IntRangeArgument<C> optional(
|
||||
final @NonNull String name,
|
||||
final NumberRange.IntRange defaultValue
|
||||
final NumberRange.@NonNull IntRange defaultValue
|
||||
) {
|
||||
final StringBuilder value = new StringBuilder(6);
|
||||
if (defaultValue.getMin() != null) {
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ public final class ScoreboardCriterionArgument<C> extends CommandArgument<C, Sco
|
|||
*/
|
||||
public static <C> @NonNull ScoreboardCriterionArgument<C> optional(
|
||||
final @NonNull String name,
|
||||
final ScoreboardCriterion defaultCriterion
|
||||
final @NonNull ScoreboardCriterion defaultCriterion
|
||||
) {
|
||||
return ScoreboardCriterionArgument.<C>newBuilder(name).asOptionalWithDefault(defaultCriterion.getName()).build();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ abstract class SidedArgumentParser<C, I, R> implements ArgumentParser<C, R> {
|
|||
});
|
||||
}
|
||||
|
||||
protected abstract ArgumentParseResult<I> 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<C, I, R> implements ArgumentParser<C, R> {
|
|||
* @return a resolved value
|
||||
* @since 1.5.0
|
||||
*/
|
||||
protected abstract ArgumentParseResult<R> resolveClient(CommandContext<C> 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<C, I, R> implements ArgumentParser<C, R> {
|
|||
* @return a resolved value
|
||||
* @since 1.5.0
|
||||
*/
|
||||
protected abstract ArgumentParseResult<R> resolveServer(CommandContext<C> context, CommandSource source, I value);
|
||||
protected abstract @NonNull ArgumentParseResult<@NonNull R> resolveServer(
|
||||
@NonNull CommandContext<@NonNull C> context,
|
||||
@NonNull CommandSource source,
|
||||
@NonNull I value
|
||||
);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ public final class TeamArgument<C> extends CommandArgument<C, Team> {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected ArgumentParseResult<String> parseIntermediate(
|
||||
protected @NonNull ArgumentParseResult<String> parseIntermediate(
|
||||
@NonNull final CommandContext<@NonNull C> commandContext,
|
||||
@NonNull final Queue<@NonNull String> inputQueue
|
||||
) {
|
||||
|
|
@ -150,7 +150,7 @@ public final class TeamArgument<C> extends CommandArgument<C, Team> {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected ArgumentParseResult<Team> resolveClient(
|
||||
protected @NonNull ArgumentParseResult<Team> resolveClient(
|
||||
final @NonNull CommandContext<C> context,
|
||||
final @NonNull CommandSource source,
|
||||
final @NonNull String value
|
||||
|
|
@ -163,7 +163,7 @@ public final class TeamArgument<C> extends CommandArgument<C, Team> {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected ArgumentParseResult<Team> resolveServer(
|
||||
protected @NonNull ArgumentParseResult<Team> resolveServer(
|
||||
final @NonNull CommandContext<C> context,
|
||||
final @NonNull CommandSource source,
|
||||
final @NonNull String value
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ public final class TimeArgument<C> extends CommandArgument<C, MinecraftTime> {
|
|||
*/
|
||||
public static <C> @NonNull TimeArgument<C> optional(
|
||||
final @NonNull String name,
|
||||
final MinecraftTime defaultTime
|
||||
final @NonNull MinecraftTime defaultTime
|
||||
) {
|
||||
return TimeArgument.<C>newBuilder(name).asOptionalWithDefault(defaultTime.toString()).build();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<V> {
|
|||
* @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<V> {
|
|||
* @return all matched entities
|
||||
* @since 1.5.0
|
||||
*/
|
||||
Collection<V> get();
|
||||
@NonNull Collection<V> get();
|
||||
|
||||
/**
|
||||
* A specialized selector that can only return one value.
|
||||
|
|
@ -73,7 +74,7 @@ public interface Selector<V> {
|
|||
interface Single<V> extends Selector<V> {
|
||||
|
||||
@Override
|
||||
default Collection<V> get() {
|
||||
default @NonNull Collection<V> get() {
|
||||
return Collections.singletonList(this.getSingle());
|
||||
}
|
||||
|
||||
|
|
@ -83,7 +84,7 @@ public interface Selector<V> {
|
|||
* @return the value
|
||||
* @since 1.5.0
|
||||
*/
|
||||
V getSingle();
|
||||
@NonNull V getSingle();
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue