В вашем коде проблема заключается в том, что вы пытаетесь использовать событие chatSend, которое, похоже, не существует в API Minecraft Bedrock Edition. На самом деле, для обработки чата в Bedrock Edition нужно использовать другие подходы.
В Minecraft Bedrock Edition API (@minecraft/server) нет поддержки событий для перехвата отправки сообщений в чате непосредственно так, как это делается в Java Edition и других системах. В вашем случае вы можете использовать событие onChat для обработки сообщений.
Однако, на данный момент прямого доступа к изменению текста сообщений в чате нет, так как ограничения API не позволяют вам перехватывать и изменять отправляемые игроками сообщения. Вы можете реализовать логику, которая будет реагировать на сообщения и отправлять свои собственные с префиксом.
Вот пример, как можно реализовать поведение, которое вы хотите:
import { world, Player } from "@minecraft/server";
const PREFIX = "§7[Гражданин] §r";
// Подписка на событие получения сообщений
world.afterEvents.chatSend.subscribe((event) => {
const player = event.sender;
const message = event.message;
// Отправляем сообщение обратно с префиксом
player.sendMessage(`${PREFIX}${
player.name }: ${message}`);
});
В этом коде, когда игрок отправляет сообщение, вы получаете событие. Затем вы отправляете новое сообщение с префиксом, добавленным перед текстом.
Если вы хотите, чтобы система работала так, чтобы сообщения других игроков тоже содержали префиксы, вам нужно будет реализовать и отправлять сообщения от имени игроков, что может быть ограничено в текущих версиях API.
Обратите внимание:
- В данном коде происходит только отправка сообщения от имени отправителя с префиксом. Полностью изменить сообщение от игрока не получится.
- Убедитесь, что версия вашего сервера или среды разработки и выбранные вами библиотеки актуальны и соответствуют необходимым версии Minecraft Bedrock API, так как функционал может отличаться в разных версиях.