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 { private CheckedBiFunction executor; private BiFunction> completer; public LambdaCommand executor(CheckedBiFunction executor) { this.executor = Objects.requireNonNull(executor); return this; } public LambdaCommand completer(BiFunction> 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 tabComplete(CommandSender sender, ExecutionContext context, Location location) { return completer == null ? super.tabComplete(sender, context, location) : completer.apply(sender, context); } }