diff options
author | Dico200 <dico.karssiens@gmail.com> | 2018-07-25 01:53:23 +0100 |
---|---|---|
committer | Dico200 <dico.karssiens@gmail.com> | 2018-07-25 01:53:23 +0100 |
commit | 44587e49ff1840219d9bc44844d4a3a6cd8ac5de (patch) | |
tree | 276ae9625795e9d79fc7db8592dbcb3a1af60928 /dicore3/command/src/main/java/io/dico/dicore/command/LambdaCommand.java | |
parent | 5e168847c2624b767deb9da310ecfdf169e0f43c (diff) |
Add dicore3-command
Diffstat (limited to 'dicore3/command/src/main/java/io/dico/dicore/command/LambdaCommand.java')
-rw-r--r-- | dicore3/command/src/main/java/io/dico/dicore/command/LambdaCommand.java | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/dicore3/command/src/main/java/io/dico/dicore/command/LambdaCommand.java b/dicore3/command/src/main/java/io/dico/dicore/command/LambdaCommand.java new file mode 100644 index 0000000..71b5ca4 --- /dev/null +++ b/dicore3/command/src/main/java/io/dico/dicore/command/LambdaCommand.java @@ -0,0 +1,35 @@ +package io.dico.dicore.command; + +import io.dico.dicore.exceptions.checkedfunctions.CheckedBiFunction; +import org.bukkit.Location; +import org.bukkit.command.CommandSender; + +import java.util.List; +import java.util.Objects; +import java.util.function.BiFunction; + +public class LambdaCommand extends ExtendedCommand<LambdaCommand> { + private CheckedBiFunction<CommandSender, ExecutionContext, String, CommandException> executor; + private BiFunction<CommandSender, ExecutionContext, List<String>> completer; + + public LambdaCommand executor(CheckedBiFunction<CommandSender, ExecutionContext, String, CommandException> executor) { + this.executor = Objects.requireNonNull(executor); + return this; + } + + public LambdaCommand completer(BiFunction<CommandSender, ExecutionContext, List<String>> completer) { + this.completer = Objects.requireNonNull(completer); + return this; + } + + @Override + public String execute(CommandSender sender, ExecutionContext context) throws CommandException { + return executor.checkedApply(sender, context); + } + + @Override + public List<String> tabComplete(CommandSender sender, ExecutionContext context, Location location) { + return completer == null ? super.tabComplete(sender, context, location) : completer.apply(sender, context); + } + +} |