diff --git a/cloud-core/src/main/java/cloud/commandframework/Command.java b/cloud-core/src/main/java/cloud/commandframework/Command.java index a552c19c..743e0c9b 100644 --- a/cloud-core/src/main/java/cloud/commandframework/Command.java +++ b/cloud-core/src/main/java/cloud/commandframework/Command.java @@ -48,8 +48,8 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.function.BiFunction; import java.util.function.Consumer; -import java.util.function.Function; /** * A command consists out of a chain of {@link CommandArgument command arguments}. @@ -495,7 +495,7 @@ public class Command { final @NonNull TypeToken outputType, final @NonNull Pair names, final @NonNull Pair, Class> parserPair, - final @NonNull Function, O> mapper, + final @NonNull BiFunction, O> mapper, final @NonNull Description description) { if (this.commandManager == null) { throw new IllegalStateException("This cannot be called from a command that has no command manager attached"); @@ -559,7 +559,7 @@ public class Command { final @NonNull Triplet names, final @NonNull Triplet, Class, Class> parserTriplet, - final @NonNull Function, O> mapper, + final @NonNull BiFunction, O> mapper, final @NonNull Description description) { if (this.commandManager == null) { throw new IllegalStateException("This cannot be called from a command that has no command manager attached"); diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentPair.java b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentPair.java index 6892e7fd..c7f4b022 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentPair.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentPair.java @@ -31,7 +31,7 @@ import cloud.commandframework.types.tuples.Pair; import io.leangen.geantyref.TypeToken; import org.checkerframework.checker.nullness.qual.NonNull; -import java.util.function.Function; +import java.util.function.BiFunction; /** * A compound argument consisting of two inner arguments @@ -59,7 +59,7 @@ public class ArgumentPair extends CompoundArgument, C, O> final @NonNull Pair<@NonNull String, @NonNull String> names, final @NonNull Pair<@NonNull Class, @NonNull Class> types, final @NonNull Pair<@NonNull ArgumentParser, @NonNull ArgumentParser> parserPair, - final @NonNull Function<@NonNull Pair<@NonNull U, @NonNull V>, @NonNull O> mapper, + final @NonNull BiFunction<@NonNull C, @NonNull Pair<@NonNull U, @NonNull V>, @NonNull O> mapper, final @NonNull TypeToken valueType) { super(required, name, names, parserPair, types, mapper, o -> Pair.of((U) o[0], (V) o[1]), valueType); } @@ -129,7 +129,7 @@ public class ArgumentPair extends CompoundArgument, C, O> this.names, this.types, this.parserPair, - Function.identity(), + (sender, pair) -> pair, new TypeToken>() { }); } @@ -143,7 +143,7 @@ public class ArgumentPair extends CompoundArgument, C, O> * @return Created pair */ public @NonNull ArgumentPair withMapper(final @NonNull TypeToken clazz, - final @NonNull Function<@NonNull Pair<@NonNull U, + final @NonNull BiFunction<@NonNull C, @NonNull Pair<@NonNull U, @NonNull V>, @NonNull O> mapper) { return new ArgumentPair(this.required, this.name, this.names, this.types, this.parserPair, mapper, clazz); } @@ -158,7 +158,7 @@ public class ArgumentPair extends CompoundArgument, C, O> */ public @NonNull ArgumentPair<@NonNull C, @NonNull U, @NonNull V, @NonNull O> withMapper( final @NonNull Class clazz, - final @NonNull Function<@NonNull Pair<@NonNull U, @NonNull V>, @NonNull O> mapper) { + final @NonNull BiFunction<@NonNull C, @NonNull Pair<@NonNull U, @NonNull V>, @NonNull O> mapper) { return this.withMapper(TypeToken.get(clazz), mapper); } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentTriplet.java b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentTriplet.java index edfb055f..23fac6d6 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentTriplet.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/ArgumentTriplet.java @@ -31,7 +31,7 @@ import cloud.commandframework.types.tuples.Triplet; import io.leangen.geantyref.TypeToken; import org.checkerframework.checker.nullness.qual.NonNull; -import java.util.function.Function; +import java.util.function.BiFunction; /** * A compound argument consisting of three inner arguments @@ -61,7 +61,8 @@ public class ArgumentTriplet extends CompoundArgument, @NonNull Class, @NonNull Class> types, final @NonNull Triplet<@NonNull ArgumentParser, @NonNull ArgumentParser, @NonNull ArgumentParser> parserTriplet, - final @NonNull Function<@NonNull Triplet, @NonNull O> mapper, + final @NonNull BiFunction<@NonNull C, + @NonNull Triplet, @NonNull O> mapper, final @NonNull TypeToken valueType) { super(required, name, names, parserTriplet, types, mapper, o -> Triplet.of((U) o[0], (V) o[1], (W) o[2]), valueType); } @@ -140,7 +141,7 @@ public class ArgumentTriplet extends CompoundArgument triplet, new TypeToken>() { }); } @@ -155,7 +156,7 @@ public class ArgumentTriplet extends CompoundArgument @NonNull ArgumentTriplet<@NonNull C, @NonNull U, @NonNull V, @NonNull W, @NonNull O> withMapper(final @NonNull TypeToken clazz, - final @NonNull Function<@NonNull Triplet<@NonNull U, + final @NonNull BiFunction<@NonNull C, @NonNull Triplet<@NonNull U, @NonNull V, @NonNull W>, @NonNull O> mapper) { return new ArgumentTriplet<>(this.required, this.name, this.names, this.types, this.parserTriplet, mapper, clazz); } @@ -169,8 +170,9 @@ public class ArgumentTriplet extends CompoundArgument @NonNull ArgumentTriplet withMapper(final @NonNull Class clazz, - final @NonNull Function<@NonNull Triplet<@NonNull U, - @NonNull V, @NonNull W>, @NonNull O> mapper) { + final @NonNull BiFunction<@NonNull C, + @NonNull Triplet<@NonNull U, @NonNull V, + @NonNull W>, @NonNull O> mapper) { return new ArgumentTriplet<>(this.required, this.name, this.names, this.types, this.parserTriplet, mapper, TypeToken.get(clazz)); } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/CompoundArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/CompoundArgument.java index 65cb2be4..09fb0b1b 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/CompoundArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/CompoundArgument.java @@ -33,6 +33,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; import java.util.List; import java.util.Queue; +import java.util.function.BiFunction; import java.util.function.Function; /** @@ -53,7 +54,7 @@ public class CompoundArgument extends CommandArgument mapper, + final @NonNull BiFunction<@NonNull C, @NonNull T, @NonNull O> mapper, final @NonNull Function<@NonNull Object[], @NonNull T> tupleFactory, final @NonNull TypeToken valueType) { super(required, @@ -98,11 +99,11 @@ public class CompoundArgument extends CommandArgument implements ArgumentParser { private final Object[] parsers; - private final Function mapper; + private final BiFunction mapper; private final Function tupleFactory; private CompoundParser(final @NonNull Tuple parserTuple, - final @NonNull Function<@NonNull T, @NonNull O> mapper, + final @NonNull BiFunction<@NonNull C, @NonNull T, @NonNull O> mapper, final @NonNull Function<@NonNull Object[], @NonNull T> tupleFactory) { this.parsers = parserTuple.toArray(); this.mapper = mapper; @@ -128,7 +129,8 @@ public class CompoundArgument extends CommandArgument new Vector2(pair.getFirst(), pair.getSecond())) + (sender, pair) -> new Vector2(pair.getFirst(), pair.getSecond())) ) .handler(c -> { final Vector2 vector2 = c.get("vec");