TabCompleteEvent tabCompleteEvent = new TabCompleteEvent( con, con.getServer(), tabComplete.getCursor(), suggestions ); bungee.getPluginManager().callEvent( tabCompleteEvent ); if ( tabCompleteEvent.isCancelled() ) List<String> results = tabCompleteEvent.getSuggestions(); if ( !results.isEmpty() )
@EventHandler public void onTabComplete(TabCompleteEvent event) { String cursor = event.getCursor().toLowerCase(); if (!(cursor.startsWith("/ban ") || cursor.startsWith("/ban-ip ") || cursor.startsWith("/banip ") || cursor.startsWith("/check ") || cursor.startsWith("/history ") || cursor.startsWith("/ipban ") return; if (event.getSender() instanceof ProxiedPlayer) { // Check if the player has permission for tab complete ProxiedPlayer pp = (ProxiedPlayer) event.getSender(); boolean deny = false; if (!Universal.get().hasPerms(pp, "ab.all")) { event.setCancelled(true); return; event.getSuggestions().add(p.getName());
@Override public void handle(TabCompleteRequest tabComplete) throws Exception { if ( bungee.getConfig().getTabThrottle() > 0 ) { long now = System.currentTimeMillis(); if ( lastTabCompletion > 0 && (now - lastTabCompletion) <= bungee.getConfig().getTabThrottle() ) { throw CancelSendSignal.INSTANCE; } lastTabCompletion = now; } List<String> suggestions = new ArrayList<>(); if ( tabComplete.getCursor().startsWith( "/" ) ) { bungee.getPluginManager().dispatchCommand( con, tabComplete.getCursor().substring( 1 ), suggestions ); } TabCompleteEvent tabCompleteEvent = new TabCompleteEvent( con, con.getServer(), tabComplete.getCursor(), suggestions ); bungee.getPluginManager().callEvent( tabCompleteEvent ); if ( tabCompleteEvent.isCancelled() ) { throw CancelSendSignal.INSTANCE; } List<String> results = tabCompleteEvent.getSuggestions(); if ( !results.isEmpty() ) { con.unsafe().sendPacket( new TabCompleteResponse( results ) ); throw CancelSendSignal.INSTANCE; } }