From 8a08b86f4bf32ea261637c80a47d0d81d86569e4 Mon Sep 17 00:00:00 2001 From: Owen <23108066+Owen1212055@users.noreply.github.com> Date: Sat, 30 Jul 2022 12:28:24 -0400 Subject: [PATCH] Custom Chat Completions API (#8212) --- ...stom-Chat-Completion-Suggestions-API.patch | 36 +++++++++++++++++++ ...stom-Chat-Completion-Suggestions-API.patch | 33 +++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 patches/api/0389-Custom-Chat-Completion-Suggestions-API.patch create mode 100644 patches/server/0927-Custom-Chat-Completion-Suggestions-API.patch diff --git a/patches/api/0389-Custom-Chat-Completion-Suggestions-API.patch b/patches/api/0389-Custom-Chat-Completion-Suggestions-API.patch new file mode 100644 index 000000000..62cde4be4 --- /dev/null +++ b/patches/api/0389-Custom-Chat-Completion-Suggestions-API.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> +Date: Sat, 30 Jul 2022 11:23:11 -0400 +Subject: [PATCH] Custom Chat Completion Suggestions API + + +diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java +index 3fcfe8651a9c422fa9c8ff77556477f1461424cf..b607c229cfb1e95b17b6a0073380089ef5e1b675 100644 +--- a/src/main/java/org/bukkit/entity/Player.java ++++ b/src/main/java/org/bukkit/entity/Player.java +@@ -2570,6 +2570,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM + * @throws IllegalArgumentException If the level is negative or greater than {@code 4} (i.e. not within {@code [0, 4]}). + */ + void sendOpLevel(byte level); ++ ++ /** ++ * Adds custom chat completion suggestions that the client will ++ * suggest when typing in chat. ++ * ++ * @param completions custom completions ++ */ ++ void addAdditionalChatCompletions(@NotNull java.util.Collection completions); ++ ++ /** ++ * Removes custom chat completion suggestions that the client ++ * suggests when typing in chat. ++ * ++ * Note: this only applies to previously added custom completions, ++ * online player names are always suggested and cannot be removed. ++ * ++ * @param completions custom completions ++ */ ++ void removeAdditionalChatCompletions(@NotNull java.util.Collection completions); + // Paper end + + // Spigot start diff --git a/patches/server/0927-Custom-Chat-Completion-Suggestions-API.patch b/patches/server/0927-Custom-Chat-Completion-Suggestions-API.patch new file mode 100644 index 000000000..9efa33b2d --- /dev/null +++ b/patches/server/0927-Custom-Chat-Completion-Suggestions-API.patch @@ -0,0 +1,33 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> +Date: Sat, 30 Jul 2022 11:23:05 -0400 +Subject: [PATCH] Custom Chat Completion Suggestions API + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +index 9f34358dfcb95104c5bb9e63fbe295e6e049a55d..ef9c3a7b15a4901e1662e6d55504b9cbbb804ad3 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +@@ -654,6 +654,22 @@ public class CraftPlayer extends CraftHumanEntity implements Player { + + this.getHandle().getServer().getPlayerList().sendPlayerPermissionLevel(this.getHandle(), level, false); + } ++ ++ @Override ++ public void addAdditionalChatCompletions(@NotNull Collection completions) { ++ this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundCustomChatCompletionsPacket( ++ net.minecraft.network.protocol.game.ClientboundCustomChatCompletionsPacket.Action.ADD, ++ new ArrayList<>(completions) ++ )); ++ } ++ ++ @Override ++ public void removeAdditionalChatCompletions(@NotNull Collection completions) { ++ this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundCustomChatCompletionsPacket( ++ net.minecraft.network.protocol.game.ClientboundCustomChatCompletionsPacket.Action.REMOVE, ++ new ArrayList<>(completions) ++ )); ++ } + // Paper end + + @Override