PlayerChatEvent
Package:
com.hypixel.hytale.server.core.event.events.playerImplements:IAsyncEvent<String>,ICancellableCancellable: Yes Async: Yes
Asynchronous event dispatched when a player sends a chat message. Listeners receive a CompletableFuture and can perform asynchronous operations before the message is sent. See also SendCommonAssetsEvent for another async event.
All data fields are mutable, allowing listeners to modify the sender, target list, message content, and formatting before the message is delivered. Cancelling this event prevents the chat message from being broadcast.
Fields / Accessors
Section titled “Fields / Accessors”| Field | Type | Accessor | Mutable | Nullable |
|---|---|---|---|---|
sender | PlayerRef | getSender() | Yes | No |
targets | List<PlayerRef> | getTargets() | Yes | No |
content | String | getContent() | Yes | No |
formatter | PlayerChatEvent.Formatter | getFormatter() | Yes | No |
- sender — The player who sent the message. Mutable via
setSender(@Nonnull PlayerRef). - targets — The list of players who will receive the message. Mutable via
setTargets(@Nonnull List<PlayerRef>). - content — The text content of the chat message. Mutable via
setContent(@Nonnull String). - formatter — The formatter used to convert the message into a
Messageobject for display. Defaults toDEFAULT_FORMATTERwhich uses theserver.chat.playerMessagetranslation withusernameandmessageparameters. Mutable viasetFormatter(@Nonnull PlayerChatEvent.Formatter).
Inner Types
Section titled “Inner Types”Formatter (interface)
Section titled “Formatter (interface)”Functional interface for formatting chat messages.
public interface Formatter { @Nonnull Message format(@Nonnull PlayerRef var1, @Nonnull String var2);}The default formatter (DEFAULT_FORMATTER) uses Message.translation("server.chat.playerMessage").param("username", playerRef.getUsername()).param("message", msg).
Fired By
Section titled “Fired By”GamePacketHandler(line 367) viaeventBus dispatchForAsync— EventBus async dispatch when player sends a chat message.
Listening
Section titled “Listening”Because PlayerChatEvent implements IAsyncEvent, use registerAsync for async handling or register for synchronous handling.
// Synchronous listener:getEventRegistry().register(PlayerChatEvent.class, event -> { String content = event.getContent();
// Example: censor profanity event.setContent(censorProfanity(content));});
// Async listener (can perform I/O):getEventRegistry().registerAsync(PlayerChatEvent.class, future -> { return future.thenApply(event -> { event.setContent(event.getContent().toUpperCase()); return event; });});Related Events
Section titled “Related Events”PlayerConnectEvent— Fired when a player connects to the server.PlayerDisconnectEvent— Fired when a player disconnects from the server.