Send brigadier permissions to bukkit command manager

This commit is contained in:
Alexander Söderberg 2020-09-24 23:39:07 +02:00 committed by Alexander Söderberg
parent e8a1a9a6cf
commit d3ed876df6
5 changed files with 29 additions and 6 deletions

View file

@ -29,6 +29,7 @@ import com.intellectualsites.commands.CommandTree;
import com.intellectualsites.commands.arguments.CommandArgument;
import com.intellectualsites.commands.brigadier.CloudBrigadierManager;
import com.intellectualsites.commands.context.CommandContext;
import com.intellectualsites.commands.permission.CommandPermission;
import com.mojang.brigadier.arguments.ArgumentType;
import org.bukkit.Bukkit;
import org.bukkit.Material;
@ -41,6 +42,7 @@ import javax.annotation.Nonnull;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.UUID;
import java.util.function.BiPredicate;
import java.util.logging.Level;
class PaperBrigadierListener<C> implements Listener {
@ -124,12 +126,15 @@ class PaperBrigadierListener<C> implements Listener {
if (node == null) {
return;
}
final BiPredicate<BukkitBrigadierCommandSource, CommandPermission> permissionChecker = (s, p) -> {
final C sender = paperCommandManager.getCommandSenderMapper().apply(s.getBukkitSender());
return paperCommandManager.hasPermission(sender, p);
};
event.setLiteral(this.brigadierManager.createLiteralCommandNode(node,
event.getLiteral(),
event.getBrigadierCommand(),
event.getBrigadierCommand(),
(s, p) -> p.toString().isEmpty()
|| s.getBukkitSender().hasPermission(p.toString())));
permissionChecker));
}
}