feature: chat manager support utf8

This commit is contained in:
2025-11-01 16:58:18 +08:00
parent d6971fb22f
commit f76a3666b1

View File

@@ -38,7 +38,7 @@ export type ChatError =
* Base interface for chat messages and toasts * Base interface for chat messages and toasts
*/ */
interface ChatBasicMessage { interface ChatBasicMessage {
message: string | MinecraftTextComponent; message: string | MinecraftTextComponent | MinecraftTextComponent[];
prefix?: string; prefix?: string;
brackets?: string; brackets?: string;
bracketColor?: string; bracketColor?: string;
@@ -235,7 +235,10 @@ export class ChatManager {
} else { } else {
// Handle MinecraftTextComponent for private message // Handle MinecraftTextComponent for private message
[success, errorMsg] = chatbox.sendFormattedMessageToPlayer( [success, errorMsg] = chatbox.sendFormattedMessageToPlayer(
JSON.stringify(message.message), textutils.serialiseJSON(message.message, {
unicode_strings: true,
allow_repetitions: true,
}),
message.targetPlayer, message.targetPlayer,
message.prefix, message.prefix,
message.brackets, message.brackets,
@@ -258,7 +261,10 @@ export class ChatManager {
} else { } else {
// Handle MinecraftTextComponent for global message // Handle MinecraftTextComponent for global message
[success, errorMsg] = chatbox.sendFormattedMessage( [success, errorMsg] = chatbox.sendFormattedMessage(
JSON.stringify(message.message), textutils.serialiseJSON(message.message, {
unicode_strings: true,
allow_repetitions: true,
}),
message.prefix, message.prefix,
message.brackets, message.brackets,
message.bracketColor, message.bracketColor,
@@ -329,11 +335,17 @@ export class ChatManager {
const messageJson = const messageJson =
typeof toast.message === "string" typeof toast.message === "string"
? toast.message ? toast.message
: JSON.stringify(toast.message); : textutils.serialiseJSON(toast.message, {
unicode_strings: true,
allow_repetitions: true,
});
const titleJson = const titleJson =
typeof toast.title === "string" typeof toast.title === "string"
? toast.title ? toast.title
: JSON.stringify(toast.title); : textutils.serialiseJSON(toast.title, {
unicode_strings: true,
allow_repetitions: true,
});
[success, errorMsg] = chatbox.sendFormattedToastToPlayer( [success, errorMsg] = chatbox.sendFormattedToastToPlayer(
messageJson, messageJson,
@@ -426,7 +438,7 @@ export class ChatManager {
private receiveLoop(): void { private receiveLoop(): void {
while (this.isRunning) { while (this.isRunning) {
try { try {
// Listen for chatbox_message events (note: event name might be "chat" based on event.ts) // Listen for chatbox_message events
const event = pullEventAs(ChatBoxEvent, "chat"); const event = pullEventAs(ChatBoxEvent, "chat");
if (event) { if (event) {