1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите BungeeCord TextComponent и String

Тема в разделе "Разработка плагинов для новичков", создана пользователем Limon-mine, 3 янв 2022.

Статус темы:
Закрыта.
  1. Автор темы
    Limon-mine

    Limon-mine Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Limon_MineDel
    Есть у меня list в конфиге я его конвертирую в строку.

    for (String s : main.instance.config.getStringList("alert-newpost")) {

    И там мне надо заменять 2 слова на TextComponent, но так выдаёт ошибку, но если textcomponent.tostring() то там системный текст показано на скрине.
    Как мне заменять в строке слова на textcomponent?
     

    Вложения:

  2. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Если тебе нужно сделать одно слово к примеру кликабельным, то используй что-то типо такого:

    Код:
                    BaseComponent clickable = new TextComponent("КЛИК");
                    clickable.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "url"));
                    BaseComponent baseComponent = new TextComponent("Кликабельное слово: ");
                    baseComponent.addExtra(clickable);
                    p.sendMessage(baseComponent);
    А если тебе нужно из TextComponent получить текст, то textComponent.toLegacyText();
     
  3. Автор темы
    Limon-mine

    Limon-mine Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Limon_MineDel
    У меня есть в конфиге например такой лист
    list:
    - 'Привет '
    - 'Группа в вк {vk}'
    - 'Дискорд {discord} '
    Я знаю как их сделать кликабельными, но мне надо заменять {vk} и {discord} на кликабельные. назвстр.replace("{vk}", vk) не получится, а как заменять в строке слова на textcomponent я больше не знаю.
     
  4. Абсик

    Абсик Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Abcik
    Тебе придется создавать textComponent для каждого отдельного компонента строки. Затем сложить их все вместе.
     
  5. Автор темы
    Limon-mine

    Limon-mine Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Limon_MineDel
    А как мне разделить list из конфига преобразованный в строку?
     
  6. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    line.split(" ").forEach(s -> {
    //перебираешь
    })
     
  7. Автор темы
    Limon-mine

    Limon-mine Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Limon_MineDel
    я так и не понил
     
  8. swat1x

    swat1x Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    swat1x
    Сначала хотя бы основы Java подучи, ибо без неё ты ничего дельного не сотворишь
     
  9. Автор темы
    Limon-mine

    Limon-mine Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Limon_MineDel
    в книге об этом не написано
     
  10. swat1x

    swat1x Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    swat1x
    Не написано о циклах while и for? Или не написано о массивах и получении их используя .split()?
     
  11. Автор темы
    Limon-mine

    Limon-mine Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Limon_MineDel
    Про .split() там не написано.
     
  12. swat1x

    swat1x Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    swat1x
    Типо такого варианта тут наговнокодить получилось

    Код:
    public void tc(){
        String listLine = "Группа в вк %vk";
        String placeholder = "%vk";
        TextComponent tc = new TextComponent("");
        if(listLine.contains(placeholder)){
            String[] args = listLine.split(placeholder);
            int i = 0;
            for(String s : args){
                i++;
                tc.addExtra(s);
                if(i == 1 || i < args.length){
                    TextComponent link = new TextComponent("ССЫЛКА");
                    link.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://vk.com/группа"));
                    tc.addExtra(link);
                }
            }
        }
    }
    
     
Статус темы:
Закрыта.

Поделиться этой страницей