diff --git a/Paper-MojangAPI/src/main/java/com/destroystokyo/paper/event/brigadier/AsyncSendPlayerSuggestionsEvent.java b/Paper-MojangAPI/src/main/java/com/destroystokyo/paper/event/brigadier/AsyncPlayerSendSuggestionsEvent.java similarity index 93% rename from Paper-MojangAPI/src/main/java/com/destroystokyo/paper/event/brigadier/AsyncSendPlayerSuggestionsEvent.java rename to Paper-MojangAPI/src/main/java/com/destroystokyo/paper/event/brigadier/AsyncPlayerSendSuggestionsEvent.java index dbdb72984b..13819b6185 100644 --- a/Paper-MojangAPI/src/main/java/com/destroystokyo/paper/event/brigadier/AsyncSendPlayerSuggestionsEvent.java +++ b/Paper-MojangAPI/src/main/java/com/destroystokyo/paper/event/brigadier/AsyncPlayerSendSuggestionsEvent.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.NotNull; * Called when sending Suggestions to the client. Will be called asynchronously if a plugin * marks the AsyncTabComplete event handled asynchronously, otherwise called synchronously. */ -public class AsyncSendPlayerSuggestionsEvent extends PlayerEvent implements Cancellable { +public class AsyncPlayerSendSuggestionsEvent extends PlayerEvent implements Cancellable { private static final HandlerList handlers = new HandlerList(); private boolean cancelled = false; @@ -21,7 +21,7 @@ public class AsyncSendPlayerSuggestionsEvent extends PlayerEvent implements Canc private Suggestions suggestions; private final String buffer; - public AsyncSendPlayerSuggestionsEvent(Player player, Suggestions suggestions, String buffer) { + public AsyncPlayerSendSuggestionsEvent(Player player, Suggestions suggestions, String buffer) { super(player, !Bukkit.isPrimaryThread()); this.suggestions = suggestions; this.buffer = buffer; diff --git a/Spigot-Server-Patches/Implement-Brigadier-Mojang-API.patch b/Spigot-Server-Patches/Implement-Brigadier-Mojang-API.patch index 726f58a6c3..4cd0868bd9 100644 --- a/Spigot-Server-Patches/Implement-Brigadier-Mojang-API.patch +++ b/Spigot-Server-Patches/Implement-Brigadier-Mojang-API.patch @@ -69,7 +69,7 @@ index 0b23a0548d..c988c929f1 100644 public boolean hasPermission(int i) { // CraftBukkit start diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 38ec22f4c0..376f7f8f0b 100644 +index 38ec22f4c0..a180df220e 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -79,7 +79,7 @@ index 38ec22f4c0..376f7f8f0b 100644 - if (((Suggestions) suggestions).isEmpty()) return; // CraftBukkit - don't send through empty suggestions - prevents [] from showing for plugins with nothing more to offer - this.networkManager.sendPacket(new PacketPlayOutTabComplete(packetplayintabcomplete.b(), (Suggestions) suggestions)); // CraftBukkit - decompile error + // Paper start -+ com.destroystokyo.paper.event.brigadier.AsyncSendPlayerSuggestionsEvent suggestEvent = new com.destroystokyo.paper.event.brigadier.AsyncSendPlayerSuggestionsEvent(this.getPlayer(), suggestions, buffer); ++ com.destroystokyo.paper.event.brigadier.AsyncPlayerSendSuggestionsEvent suggestEvent = new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendSuggestionsEvent(this.getPlayer(), suggestions, buffer); + suggestEvent.setCancelled(suggestions.isEmpty()); + if (!suggestEvent.callEvent()) return; + this.networkManager.sendPacket(new PacketPlayOutTabComplete(packetplayintabcomplete.b(), (Suggestions) suggestEvent.getSuggestions())); // CraftBukkit - decompile error // Paper @@ -93,7 +93,7 @@ index 38ec22f4c0..376f7f8f0b 100644 completions.forEach(builder::suggest); - player.playerConnection.sendPacket(new PacketPlayOutTabComplete(packetplayintabcomplete.b(), builder.buildFuture().join())); + Suggestions suggestions = builder.buildFuture().join(); -+ com.destroystokyo.paper.event.brigadier.AsyncSendPlayerSuggestionsEvent suggestEvent = new com.destroystokyo.paper.event.brigadier.AsyncSendPlayerSuggestionsEvent(this.getPlayer(), suggestions, buffer); ++ com.destroystokyo.paper.event.brigadier.AsyncPlayerSendSuggestionsEvent suggestEvent = new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendSuggestionsEvent(this.getPlayer(), suggestions, buffer); + suggestEvent.setCancelled(suggestions.isEmpty()); + if (!suggestEvent.callEvent()) return; + this.networkManager.sendPacket(new PacketPlayOutTabComplete(packetplayintabcomplete.b(), suggestEvent.getSuggestions()));