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