Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Две json кнопки в одном сообщении

Метки:
Теги Теги
json
Статус
Закрыто для дальнейших ответов.

loredmaxed3

Новичок
Пользователь
Баллы
6
Имя в Minecraft
loredmaxed3
Есть 2 json кнопки которые хорошо работают в двух разных пустых сообщениях (тоесть там только по 1 кнопке). Но когда пытаюсь их соединить в одно, получаю не то, что-бы хотелось. Не то что бы это проблема, но приятней было бы видеть две кнопки в одной строке.

https://yapx.ru/album/VgG2Y

Вот код, которым я пытался это сделать:
String json_agree = "{\"text\":\"[Подтвердить]\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/biz selltostate_user_agree_button\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[{\"text\":\"Нажмите, что-бы подтвердить продажу\",\"color\":\"dark_green\"}]}}";
String json_disagree = "{\"text\":\"[Отклонить]\",\"color\":\"dark_red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/biz selltostate_user_disagree_button\"},\"hoverEvent\":{\"action\":\"show_text\",\"contents\":[{\"text\":\"Нажмите, что-бы отклонить продажу\",\"color\":\"dark_red\"}]}}";

sender.sendMessage(ComponentSerializer.parse(json_agree) + " " + ComponentSerializer.parse(json_disagree));

VgG2Y
 
Ну, как вариант, через два разных компонента.
HTML:
TextComponent c1 = new TextComponent("[Подтвердить] ");
c1.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/biz selltostate_user_agree_button"));
c1.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, "Нажмите чтобы подтвердить продажу");

TextComponent c2 = new TextComponent("[Отклонить] ");
c2.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/biz selltostate_user_disagree_button"));
c2.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, "Нажмите чтобы отклонить продажу");

c1.addExtra(c2);

player.spigot().sendMessage(c1);
 
Компоненты нельзя объединять при помощи плюса, это не строки и не числа.
Метод .sendMessage() принимает массив BaseComponent.
А ComponentSerializer.parse() как раз возвращает массив BaseComponent.
Таким образом, тебе необходимо объединить два массива в один, чтобы отправить игроку.
Про объединение массивов можно почитать, например, тут: https://www.baeldung.com/java-concatenate-arrays
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх