From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Mon, 11 Jul 2022 20:44:19 -0500 Subject: [PATCH] Chat Preview API diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index a5b09ab0171dd100f9bcf81869346b1d11814092..bea0eca314eef1adc3c9625b596f29f8b6f9856f 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -2628,12 +2628,29 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { + // Purpur start + return this.chatDecorator; + } + public void setChatDecorator(ChatDecorator chatDecorator) { + this.chatDecorator = chatDecorator; + } + private ChatDecorator chatDecorator = (entityplayer, ichatbasecomponent) -> { + // Purpur end // Paper start - fix non-player sender if (entityplayer == null) { return CompletableFuture.completedFuture(ichatbasecomponent); } // Paper end + // Purpur start + net.kyori.adventure.text.Component adventureComponent = io.papermc.paper.adventure.PaperAdventure.asAdventure(ichatbasecomponent); + org.purpurmc.purpur.event.player.PlayerPreviewChatEvent purpurPreviewEvent = new org.purpurmc.purpur.event.player.PlayerPreviewChatEvent(entityplayer.getBukkitEntity(), adventureComponent); + if (!purpurPreviewEvent.callEvent()) { + return CompletableFuture.completedFuture(null); + } + if (!adventureComponent.equals(purpurPreviewEvent.getQuery())) { + return CompletableFuture.completedFuture(io.papermc.paper.adventure.PaperAdventure.asVanilla(purpurPreviewEvent.getQuery())); + } + // Purpur end return CompletableFuture.supplyAsync(() -> { AsyncPlayerChatPreviewEvent event = new AsyncPlayerChatPreviewEvent(true, entityplayer.getBukkitEntity(), CraftChatMessage.fromComponent(ichatbasecomponent), new LazyPlayerSet(this)); String originalFormat = event.getFormat(), originalMessage = event.getMessage(); @@ -2647,7 +2664,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop