Как создавать команды с локализованным описанием в плагинах PocketMine?

Как создавать команды с переведенным описанием или использованием, используя PocketMine API в плагинах?

В ванильных командах строки кодов перевода, такие как %pocketmine.command.help.description пройдены. Они являются ссылками на файл lang в оригинальном PocketMine, и плагины не могут их изменять.

Когда игрок выполняет /help, HelpCommand класс объединяет результат Command::getDescription() с помощью формата вывода клиента. Затем он передается Player::sendMessage, который передает строку BaseLang::translateString а потом BaseLang::parseTranslationи затем внутренние переводы поиска при появлении /%[a-zA-Z0-9\.\-]+/, В течение этого процесса невозможно что-либо добавить, если только сервер BaseLang заменяется

2

Решение

Справиться DataPacketSendEvent и изменить TextPackets. Сделайте ваш идентификатор чем-то особенным, что вы можете извлечь из произвольной строки.

Используйте этот обработчик событий:

public function e_dps(DataPacketSendEvent $event){
if(($pk = $event->getPacket()) instanceof TextPacket){
$pk->message = preg_replace_callback(
'/PluginName\-SomeRandomBytesHere\-ForSecurityGenerateThemEveryRestart\-([0-9]+)\-AnotherDelimiterHere/', function($match){
return $this->translate($match[1], $event->getPlayer());
}, $pk->message);
}
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]