На самом деле я кодирую плагин, в команде он запрашивает сообщение с подтверждением, и я хочу нажать кнопку (в тексте чата) для подтверждения и отмены. Мне не нравится копировать и вставлять чужой код, и я не хочу использовать чужие классы. Я пытаюсь использовать 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)
Как я могу решить ошибки? Есть ли более простой способ сделать кликабельные кнопки (без других классов или копирования/вставки)?




У тебя 2 проблемы.
<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>
java.awt.TextComponent в свой класс InfoCommand , что неверно. Поэтому удалите этот импорт и добавьте вместо этого:import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.TextComponent;
При использовании внешних библиотек часто рекомендуется использовать Maven. Однако вы можете скачать JAR с hub.spigotmc.org/nexus/content/repositories/snapshots/org/… и поместить его в каталог ваших библиотек.
Я добавил нужную мне версию в свои библиотеки и импортировал то, что вы сказали. Но все равно выдает ошибку Package does not exist.
Вот почему неиспользование Maven обычно раздражает. Другие зависимости не разрешаются автоматически. Последнее, чего не хватает, должно быть: repo.acrylicstyle.xyz/net/md-5/bungeecord-chat/1.12-SNAPSHOT/…
Спасибо, это сработало! В следующий раз попробую использовать Maven.
Я бы не рекомендовал использовать систему, в настоящее время встроенную в кран. Вы должны использовать Kyori/adventure. Это намного лучше, и бумага скоро будет реализовывать это нативно.
Решение с использованием adventure:
Component.text("My Clickable Text").color(NamedTextColor.GREEN).clickEvent(new ClickEvent(<paramaters>)
Я не использую Maven, нужно ли вместо этого помещать что-то в раздел «Библиотеки» моего проекта в среде IDE?