- Баллы
- 36
У меня есть json текст который я получаю с разных мест сервера, например из чата. Я хочу запарсить теги MiniMessage и получить новый json. Простыми словами, я могу запарсить json, получить Component из Adventure API и пройтись по его детям, если это TextComponent, я получу его текст, запаршу через MiniMessage и добавлю полученный компонент в список детей. Проблема заключается в том, что если получится так, что текст будет разделен на части, то с большой вероятностью я не смогу правильно запарсить теги из MiniMessage.
Для примера, у меня есть текст: "some <green>green &ctext</green>", если он будет отправлен игроку в чат, я получу примерно такой json:
Как видите, этот json изначально будет не совсем удачным для парсинга тегов предложенном мною выше способом.
Я перепробовал все, что мог придумать, но, к сожалению, все безуспешно. Это был простой пример ситуации. Может быть такое, что теги будут вложены или разделены не на 2 а больше компонентов. Также может случиться так, что тег будет разбит прямо в том месте, где расположены аргументы, например «<tag:'test» и «text'>». Без понятия, как можно поддерживать все возможные ситуации.
Я понимаю, что могу просто убрать стандартное форматирование в первом тексте, но контроля над всем текстом у меня нет. Например, если этот текст есть в конфиге какого-то закрытого плагина, который парсит свои плейсхолдеры со стандартным форматированием, то я ничего не смогу сделать.
Буду благодарен за ваши предложения.
Для примера, у меня есть текст: "some <green>green &ctext</green>", если он будет отправлен игроку в чат, я получу примерно такой json:
Код:
{
"text":"",
"extra":[
{
"text":"some<green>test",
"color":"gold"
},
{
"text":"text</green>",
"color":"red"
}
]
}
Я перепробовал все, что мог придумать, но, к сожалению, все безуспешно. Это был простой пример ситуации. Может быть такое, что теги будут вложены или разделены не на 2 а больше компонентов. Также может случиться так, что тег будет разбит прямо в том месте, где расположены аргументы, например «<tag:'test» и «text'>». Без понятия, как можно поддерживать все возможные ситуации.
Я понимаю, что могу просто убрать стандартное форматирование в первом тексте, но контроля над всем текстом у меня нет. Например, если этот текст есть в конфиге какого-то закрытого плагина, который парсит свои плейсхолдеры со стандартным форматированием, то я ничего не смогу сделать.
Буду благодарен за ваши предложения.