java - Bukkit 聊天可点击按钮
问题描述
我实际上正在编写一个插件,在命令中它会提示一条确认消息,我想单击一个按钮(在聊天文本上)进行确认和取消。我不喜欢复制粘贴别人的代码,也不想使用别人的类。我正在尝试使用 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个问题。
- 您缺少依赖项。将以下依赖项添加到您的 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>
java.awt.TextComponent
您已在课堂上导入InfoCommand
,这是错误的。因此,删除该导入并添加以下内容:
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.TextComponent;
推荐阅读
- graphql - Weaviate 中的 Graphql 查询过滤器
- git - 如何在 Linux 的 Visual Studio Code 中永久配置 git 用户名和密码?
- python - 具有连续和分类数据的特征选择(使用 Boruta、决策树等)
- javascript - 未捕获的类型错误:无法在 javascript 函数中读取 null 的属性“样式”:
- javascript - Highcharts - 如何使用自定义图例导出图表?
- php - Laravel 资源路由未使用 {{method_field('PATCH')}} 在数据库中更新
- javascript - 限制最多一次使用任何字符 在 Javascript 中使用正则表达式
- python - 在 matplotlib 中用输入绘制抛物线
- angular8 - 我需要用两个条件 angular 8 过滤一个数组
- react-native - 当用户更改字体大小时,反应式保持元素布局