Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с JS (Minecraft)

Максим Иванов Ученик (90), открыт 2 дня назад
Пишу плагин для Minecraft Bedrock сервера 1.21.73.1 уже всё перепробовал нужно добавлять префикс в моём случае это:
 const PREFIX = "§7[Гражданин] §r"; 
Я не знал, как сделать нейронка посоветовала такой код:
 import { world } from "@minecraft/server"; 

const PREFIX = "§7[Гражданин] §r";

// Подписка через систему событий 1.21.xx
world.afterEvents.chatSend.subscribe((event) => {
const player = event.sender;
player.sendMessage(`${PREFIX}${player.name}: ${event.message}`);
});
Но в нём появляется ошибка:
 [2025-04-12 23:07:14:365 ERROR] [Scripting] TypeError: cannot read property 'subscribe' of undefined    at <anonymous> (chat.js:6) 


[2025-04-12 23:07:14:375 ERROR] [Scripting] Plugin [Prefiks - 1.0.0] - [chat.js] ran with error: [TypeError: cannot read property 'subscribe' of undefined at <anonymous> (chat.js:6)
]
Кто разбирается помогите, я определил, что не верно подписываюсь, а как надо нигде не могу найти, пожалуйста пол дня бьюсь с этим
2 ответа
МГЕ Хэвик Мыслитель (5126) 2 дня назад
В вашем коде проблема заключается в том, что вы пытаетесь использовать событие 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, так как функционал может отличаться в разных версиях.
Максим ИвановУченик (90) 2 дня назад
Спасибо, но ошибка о неверной подписке осталась:

 [2025-04-12 23:11:42:865 ERROR] [Scripting] TypeError: cannot read property 'subscribe' of undefined    at <anonymous> (chat.js:6) 


[2025-04-12 23:11:42:875 ERROR] [Scripting] Plugin [Prefiks - 1.0.0] - [chat.js] ran with error: [TypeError: cannot read property 'subscribe' of undefined at <anonymous> (chat.js:6)
]
Ivan Ivanov Гуру (3708) 2 дня назад
Ошибка говорит о том, что 'chatSend' не существует. Наверное выбрал не ту версию скрипт апи.
Похожие вопросы