|
28 | 28 | import dev.bluetree242.advancedplhide.Group; |
29 | 29 | import dev.bluetree242.advancedplhide.impl.completer.RootNodeCommandCompleter; |
30 | 30 | import dev.bluetree242.advancedplhide.impl.completer.SuggestionCommandCompleterList; |
| 31 | +import dev.bluetree242.advancedplhide.impl.subcompleter.SuggestionSubCommandCompleterList; |
| 32 | +import dev.bluetree242.advancedplhide.utils.Constants; |
31 | 33 | import org.bukkit.entity.Player; |
32 | 34 | import org.bukkit.event.EventHandler; |
33 | 35 | import org.bukkit.event.EventPriority; |
@@ -56,15 +58,29 @@ public static boolean isAvailable() { |
56 | 58 |
|
57 | 59 | @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) |
58 | 60 | public void onSuggestions(AsyncPlayerSendSuggestionsEvent e) { |
| 61 | + |
59 | 62 | Group group = getGroup.apply(e.getPlayer()); |
60 | | - SuggestionCommandCompleterList suggestions = new SuggestionCommandCompleterList(e.getSuggestions()); |
61 | | - CompleterModifier.handleCompleter(suggestions, group, e.getPlayer().hasPermission("plhide.whitelist-mode")); |
| 63 | + String notCompleted = e.getBuffer(); |
| 64 | + |
| 65 | + if (!notCompleted.trim().startsWith("/")) notCompleted = "/" + notCompleted; |
| 66 | + |
| 67 | + if (!notCompleted.contains(" ")) { |
| 68 | + SuggestionCommandCompleterList suggestions = new SuggestionCommandCompleterList(e.getSuggestions()); |
| 69 | + CompleterModifier.handleCompleter(suggestions, getGroup.apply(e.getPlayer()), e.getPlayer().hasPermission(Constants.WHITELIST_MODE_PERMISSION)); |
| 70 | + suggestions.export(); |
| 71 | + } else { |
| 72 | + SuggestionSubCommandCompleterList suggestions = new SuggestionSubCommandCompleterList(e.getSuggestions(), notCompleted); |
| 73 | + CompleterModifier.handleSubCompleter(suggestions, getGroup.apply(e.getPlayer()), e.getPlayer().hasPermission(Constants.WHITELIST_MODE_PERMISSION)); |
| 74 | + if (suggestions.isCancelled()) e.setCancelled(true); |
| 75 | + } |
62 | 76 | } |
63 | 77 |
|
64 | 78 | @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) |
65 | 79 | public void onCommands(AsyncPlayerSendCommandsEvent<?> e) { |
| 80 | + if (!e.isAsynchronous()) return; |
| 81 | + |
66 | 82 | Group group = getGroup.apply(e.getPlayer()); |
67 | 83 | RootNodeCommandCompleter suggestions = new RootNodeCommandCompleter(e.getCommandNode()); |
68 | | - CompleterModifier.handleCompleter(suggestions, group, e.getPlayer().hasPermission("plhide.whitelist-mode")); |
| 84 | + CompleterModifier.handleCompleter(suggestions, group, e.getPlayer().hasPermission(Constants.WHITELIST_MODE_PERMISSION)); |
69 | 85 | } |
70 | 86 | } |
0 commit comments