Кнопки Bukkit Chat Clickable

На самом деле я кодирую плагин, в команде он запрашивает сообщение с подтверждением, и я хочу нажать кнопку (в тексте чата) для подтверждения и отмены. Мне не нравится копировать и вставлять чужой код, и я не хочу использовать чужие классы. Я пытаюсь использовать TextComponents, но не могу заставить его работать. Вот код команды

package myPackage;

import java.awt.TextComponent;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class InfoCommand implements CommandExecutor {

    public TextComponent TextComponent;
    @Override
    public boolean onCommand(CommandSender sender, Command cmnd, String alias, String[] args) {
        if (!(sender instanceof Player)) {
            return false;
        }
        Player player = (Player) sender;
        player.sendMessage(new String[] {
                            "Confirmation message.",
                            "Do you want to confirm?"});
        TextComponent message = new TextComponent ("Yes");
        message.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/command"));
        return true;
    }            
}

Мне выдает 3 ошибки:

TextComponent(String) is not public in TextComponent; cannot be accesed from outside package (В строке, где я определяю TextComponent)

Cannot find symbol (В строке ClickEvent)

Package ClickEvent does not exist (В строке ClickEvent)

Как я могу решить ошибки? Есть ли более простой способ сделать кликабельные кнопки (без других классов или копирования/вставки)?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
2 368
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

У тебя 2 проблемы.

  1. Вам не хватает зависимости. Добавьте следующую зависимость в ваш pom.xml:
<dependency>
        <groupId>org.spigotmc</groupId>
        <artifactId>spigot-api</artifactId>
        <version>1.12.2-R0.1-SNAPSHOT</version><!--change this value depending on the version-->
        <type>jar</type>
        <scope>provided</scope>
</dependency>
  1. Вы импортировали java.awt.TextComponent в свой класс InfoCommand , что неверно. Поэтому удалите этот импорт и добавьте вместо этого:
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.TextComponent;

Я не использую Maven, нужно ли вместо этого помещать что-то в раздел «Библиотеки» моего проекта в среде IDE?

GospelBG 13.12.2020 15:37

При использовании внешних библиотек часто рекомендуется использовать Maven. Однако вы можете скачать JAR с hub.spigotmc.org/nexus/content/repositories/snapshots/org/… и поместить его в каталог ваших библиотек.

TimonNetherlands 13.12.2020 15:41

Я добавил нужную мне версию в свои библиотеки и импортировал то, что вы сказали. Но все равно выдает ошибку Package does not exist.

GospelBG 13.12.2020 15:50

Вот почему неиспользование Maven обычно раздражает. Другие зависимости не разрешаются автоматически. Последнее, чего не хватает, должно быть: repo.acrylicstyle.xyz/net/md-5/bungeecord-chat/1.12-SNAPSHOT‌​/…

TimonNetherlands 13.12.2020 15:56

Спасибо, это сработало! В следующий раз попробую использовать Maven.

GospelBG 13.12.2020 16:00

Я бы не рекомендовал использовать систему, в настоящее время встроенную в кран. Вы должны использовать Kyori/adventure. Это намного лучше, и бумага скоро будет реализовывать это нативно.

Решение с использованием adventure:

Component.text("My Clickable Text").color(NamedTextColor.GREEN).clickEvent(new ClickEvent(<paramaters>)

Другие вопросы по теме