Skip to content

Commit a5d9514

Browse files
committed
Fix handling of sub-commands for Paper 1.20.6+ servers.
1 parent d8be9dd commit a5d9514

2 files changed

Lines changed: 20 additions & 4 deletions

File tree

spigot/paper/src/main/java/dev/bluetree242/advancedplhide/spigot/paper/PaperEventListener.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import dev.bluetree242.advancedplhide.Group;
2929
import dev.bluetree242.advancedplhide.impl.completer.RootNodeCommandCompleter;
3030
import dev.bluetree242.advancedplhide.impl.completer.SuggestionCommandCompleterList;
31+
import dev.bluetree242.advancedplhide.impl.subcompleter.SuggestionSubCommandCompleterList;
32+
import dev.bluetree242.advancedplhide.utils.Constants;
3133
import org.bukkit.entity.Player;
3234
import org.bukkit.event.EventHandler;
3335
import org.bukkit.event.EventPriority;
@@ -56,15 +58,29 @@ public static boolean isAvailable() {
5658

5759
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
5860
public void onSuggestions(AsyncPlayerSendSuggestionsEvent e) {
61+
5962
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+
}
6276
}
6377

6478
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
6579
public void onCommands(AsyncPlayerSendCommandsEvent<?> e) {
80+
if (!e.isAsynchronous()) return;
81+
6682
Group group = getGroup.apply(e.getPlayer());
6783
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));
6985
}
7086
}

spigot/src/main/java/dev/bluetree242/advancedplhide/spigot/listener/packet/SpigotPacketListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ private void onTabcomplete(PacketEvent e) {
7373
if (suggestionsOrigin == null) suggestionsOrigin = core.getModernHandler().getSuggestions(e);
7474
if (!notCompleted.contains(" ")) {
7575
SuggestionCommandCompleterList suggestions = new SuggestionCommandCompleterList(suggestionsOrigin);
76-
CompleterModifier.handleCompleter(suggestions, core.getGroupForPlayer(e.getPlayer()), e.getPlayer().hasPermission("plhide.whitelist-mode"));
76+
CompleterModifier.handleCompleter(suggestions, core.getGroupForPlayer(e.getPlayer()), e.getPlayer().hasPermission(Constants.WHITELIST_MODE_PERMISSION));
7777
core.getModernHandler().writeSuggestions(e, matchModifier, suggestions.export());
7878
} else {
7979
SuggestionSubCommandCompleterList suggestions = new SuggestionSubCommandCompleterList(suggestionsOrigin, notCompleted);

0 commit comments

Comments
 (0)