通用界面元素
top.mrxiaom.hologram.vector.displays.ui.api.Element (opens new window)
所有元素的基类,所有界面元素基本都可以通过 setXXX 方法设置以下这些属性。
| 属性 | 说明 |
|---|---|
additionalRotation | 额外旋转量,通常设置 roll 用来在界面布局平面上旋转,设置 yaw 和 pitch 的场景一般不多 |
align | 这个界面元素的九宫格对齐方式,也就是经典的左上、中上、右上、左中、居中、右中、左下、中下、右下这九种对齐方式。设置不同的对齐方式决定了界面元素的起始坐标在哪里 |
enabled | 是否启用这个元素,这决定了元素的点击事件和 hitTest 是否会被执行 |
parent | 这个元素的父元素,通常为 null 代表根面板 Terminal,设置父元素将会使用这个父元素的相对坐标 |
pos、x、y | 这个元素相对于 align 在平面上的 x、y 偏移位置 |
scale | 这个元素的展示实体缩放大小,可以设置 x、y 方向上的缩放 |
有一些属性会被隐含在 EntityTextDisplayWrapper (opens new window)、EntityItemDisplayWrapper (opens new window) 等包装中,可以方便地设置展示实体的各种样式:
| 属性 | 说明 |
|---|---|
brightness | 展示实体的方块亮度和天空亮度,可以直接调用 setFullBrightness() 使其保持全亮度 |
viewRange | 展示实体的可见距离 (格数) |
backgroundColor | 文本展示实体的背景颜色,支持整数 (0xFFFFFFFF) 和字符串 ("#FFFFFFFF") 形式的十六进制颜色格式 |
shadow | 文本展示实体的文字是否有阴影 |
seeThroughBlocks | 文本展示实体是否穿过方块可视 |
textAlignment | 文本展示实体在多行文字下的文字对齐方式 |
textOpacity | 文本展示实体的文字不透明度 |
itemStack | 物品展示实体的 Bukkit 物品实例 |
displayType | 物品展示实体的物品显示方式,例如第一人称手、固定、掉落物、GUI、头盔等 |
虽然可以通过 getHologram() 来获取虚拟实体实例,但是不推荐修改实体的坐标、变换 (translation、rotation、scale) 等,坐标和变换应当由本依赖库来管理和更新。仅推荐修改以下属性:
| 属性 | 说明 |
|---|---|
glowing | 实体是否有发光效果 |
pose | 实体的姿势,对于展示实体来说不常用 |
potion | 实体的状态效果,对于展示实体来说不常用 |
billboard | 展示实体的朝向跟随方式,是指定轴跟随玩家朝向旋转,还是固定朝向,默认固定 |
interpolationDurationXXX | 展示实体运动插值时间,单位为 tick,设置大于 0 可以在变换的时候带上匀速插值动画 |
这些基本是最上游的属性,在下游可能还会有更多属性可用。无论如何,在编辑属性之后,需要执行 update(); 更新相关属性,需要执行 updateLocation(); 更新虚拟实体位置。
元素还有一些内部只读属性,例如 width 和 height,用于让元素实现计算自身大小,从而服务于 hitTest 使得框架可以得知玩家准星是否落在这个元素上,以及触发点击操作。
如果需要自行实现自定义元素,建议参考现有已经实现的元素的源代码:
- 简单的单个实体元素:
Label(opens new window) - 带有点击和准星悬停事件的 Label:
Button(opens new window) - 复杂的组合实体元素:
Triangle(opens new window)、ScrollBar(opens new window)
建议基于已有的下游包装进行实现,会方便不少:
- 文本展示实体元素
TextElement(opens new window) - 物品展示实体元素
ItemElement(opens new window)
上次更新: 2026/08/11, 03:39:33