/* * Decompiled with CFR 0.152. * * Could not load the following classes: * com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent * com.mojang.brigadier.builder.LiteralArgumentBuilder * com.mojang.brigadier.tree.LiteralCommandNode * com.mojang.brigadier.tree.RootCommandNode * org.bukkit.command.Command * org.bukkit.entity.Player * org.bukkit.event.EventHandler * org.bukkit.event.Listener * org.bukkit.plugin.Plugin */ package de.maxhenkel.voicechat.commodore; import com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.tree.LiteralCommandNode; import com.mojang.brigadier.tree.RootCommandNode; import de.maxhenkel.voicechat.commodore.AbstractCommodore; import de.maxhenkel.voicechat.commodore.Commodore; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.function.Predicate; import org.bukkit.command.Command; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.plugin.Plugin; final class PaperCommodore extends AbstractCommodore implements Commodore, Listener { private final List commands = new ArrayList(); PaperCommodore(Plugin plugin) { plugin.getServer().getPluginManager().registerEvents((Listener)this, plugin); } @Override public void register(LiteralCommandNode node) { Objects.requireNonNull(node, "node"); this.commands.add(new CommodoreCommand(node, null)); } @Override public void register(Command command, LiteralCommandNode node, Predicate permissionTest) { Objects.requireNonNull(command, "command"); Objects.requireNonNull(node, "node"); Objects.requireNonNull(permissionTest, "permissionTest"); try { PaperCommodore.setRequiredHackyFieldsRecursively(node, DUMMY_SUGGESTION_PROVIDER); } catch (Throwable e) { e.printStackTrace(); } Collection aliases = PaperCommodore.getAliases(command); if (!aliases.contains(node.getLiteral())) { node = PaperCommodore.renameLiteralNode(node, command.getName()); } for (String alias : aliases) { if (node.getLiteral().equals(alias)) { this.commands.add(new CommodoreCommand(node, permissionTest)); continue; } LiteralCommandNode redirectNode = ((LiteralArgumentBuilder)LiteralArgumentBuilder.literal((String)alias).redirect(node)).build(); this.commands.add(new CommodoreCommand(redirectNode, permissionTest)); } } @EventHandler public void onPlayerSendCommandsEvent(AsyncPlayerSendCommandsEvent event) { if (event.isAsynchronous() || !event.hasFiredAsync()) { for (CommodoreCommand command : this.commands) { command.apply(event.getPlayer(), event.getCommandNode()); } } } static void ensureSetup() { } static { try { Class.forName("com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent"); } catch (ClassNotFoundException e) { throw new UnsupportedOperationException("Not running on modern Paper!", e); } } private static final class CommodoreCommand { private final LiteralCommandNode node; private final Predicate permissionTest; private CommodoreCommand(LiteralCommandNode node, Predicate permissionTest) { this.node = node; this.permissionTest = permissionTest; } public void apply(Player player, RootCommandNode root) { if (this.permissionTest != null && !this.permissionTest.test((Player)player)) { return; } AbstractCommodore.removeChild(root, this.node.getName()); root.addChild(this.node); } } }