Button 按钮
top.mrxiaom.hologram.vector.displays.ui.widget.Button (opens new window)
按钮就是一个加了点击事件和准星悬停事件的标签,可以让玩家的准星悬停到按钮上时,触发按钮的样式变化,移开则复原。通过计算出三维空间中按钮矩形的平面与具体区域,使用射线计算来实现这个功能。
这个元素使用单个文本展示实体构成。基于 TextElement,可以查阅界面通用元素文档来查看基础通用的属性。可以直接通过 new 来实例化一个标签,具体用法请见上方 Javadoc 相关文档。
Button 额外可用的属性依然只有一个 text,可以使用字符串来按 MiniMessage 解析,也可以使用 Component 来使用更精确的富文本格式。
Button 可以设置点击事件和悬停状态变化事件,为了旧版本兼容着想,setOnClick 和 setOnElementClick 是同一个方法的不同包装,用法如下:
java
//e.setOnElementClick((meta, btn) -> {
e.setOnClick((meta, btn) -> {
// 点击执行操作,可以从 meta 中拿到这次点击的相应元数据
meta.getPlayer();
meta.getAction();
btn.getId();
})
需要设置悬停状态变化事件,使用 setOnHoverStateChange,其简单用法基本都包装在 HoverStateChange (opens new window) 接口中了,详见 Javadoc 中以 hover 开头的静态方法
java
// 悬停时显示 50% 透明度黑色背景,不悬停时显示完全透明背景
e.setOnHoverStateChange(hoverBg(0x80000000, 0));
一个简单用例:
java
terminal.addElement(new Button("button1"), e -> {
e.setText("<#FF0000>测试");
e.setScale(0.25f);
e.setPos(10, 0);
e.setFullBrightness();
e.setOnHoverStateChange(hoverBg(0x80000000, 0));
e.setOnClick((meta, e) -> {
meta.getPlayer().sendMessage("你以 " + meta.getAction() + " 方式点击了按钮 " + e.getId());
});
});
上次更新: 2026/08/11, 03:39:33