Chat Preview API (#1050)

This commit is contained in:
BillyGalbreath
2022-07-17 13:21:21 -05:00
committed by GitHub
parent db9c5adb60
commit 8aa5c259c5
2 changed files with 142 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: BillyGalbreath <blake.galbreath@gmail.com>
Date: Mon, 11 Jul 2022 21:09:14 -0500
Subject: [PATCH] Chat Preview API
diff --git a/src/main/java/org/purpurmc/purpur/event/player/PlayerPreviewChatEvent.java b/src/main/java/org/purpurmc/purpur/event/player/PlayerPreviewChatEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..502896f69a139c9524625a2c0d9029f85276146b
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/event/player/PlayerPreviewChatEvent.java
@@ -0,0 +1,90 @@
+package org.purpurmc.purpur.event.player;
+
+import net.kyori.adventure.text.Component;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+import org.bukkit.event.player.PlayerEvent;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class PlayerPreviewChatEvent extends PlayerEvent implements Cancellable {
+ private static final HandlerList handlers = new HandlerList();
+ private final String originalQuery;
+ private Component query;
+
+ public PlayerPreviewChatEvent(@NotNull Player who, @NotNull String originalQuery, @Nullable Component query) {
+ super(who, !Bukkit.isPrimaryThread());
+ this.originalQuery = originalQuery;
+ this.query = query;
+ }
+
+ /**
+ * The original query string as sent from the client
+ *
+ * @return The original query string
+ */
+ @NotNull
+ public String getOriginalQuery() {
+ return originalQuery;
+ }
+
+ /**
+ * Get the current query.
+ * <p>
+ * Null queries represent "no changes".
+ *
+ * @return Current query
+ */
+ @Nullable
+ public Component getQuery() {
+ return this.query;
+ }
+
+ /**
+ * Get the current query.
+ * <p>
+ * Null queries represent "no changes".
+ *
+ * @param query The current query
+ */
+ public void setQuery(@Nullable Component query) {
+ this.query = query;
+ }
+
+ /**
+ * Gets the cancellation state of this event.
+ * <p>
+ * A cancelled event tells the client there are "no changes"
+ * to the chat, the same as setting the query to null.
+ *
+ * @return true if this event is cancelled
+ */
+ @Override
+ public boolean isCancelled() {
+ return this.query == null;
+ }
+
+ /**
+ * Sets the cancellation state of this event.
+ * <p>
+ * A cancelled event tells the client there are "no changes"
+ * to the chat, the same as setting the query to null.
+ */
+ @Override
+ public void setCancelled(boolean cancel) {
+ this.query = null;
+ }
+
+ @Override
+ @NotNull
+ public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ @NotNull
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+}