按钮(Button)
基本信息
| 属性 | 值 |
|---|---|
| 源码类 | lumien.custommainmenu.configuration.elements.Button(继承 Element) |
| 渲染类 | lumien.custommainmenu.gui.GuiCustomButton(继承原版 GuiButton) |
| 配置位置 | 顶层 buttons 对象下的每个键(GuiConfig.loadButtons,GuiConfig.java:229) |
| 元素名 | JSON 键名本身,写入 Button.name(GuiConfig.java:236) |
可配置项
| 字段 | 必填 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
text |
是 | 文本 | — | 常态显示文本,接受任意文本来源(见文本来源) |
posX / posY |
是 | int | — | 相对锚点的像素偏移 |
width / height |
是 | int | — | 同时作为 imageWidth/imageHeight 初值(Button.java:38-39) |
alignment |
否 | 字符串 | button |
锚点,默认 (0.5, 0.25) |
texture |
否 | 贴图 | null |
竖排三态精灵图;null 时用原版按钮贴图 |
imageWidth / imageHeight |
否 | int | = width/height |
自定义贴图里单帧的尺寸 |
normalTextColor |
否 | int | 14737632(0xE0E0E0) |
常态字色 |
hoverTextColor |
否 | int | 16777120(0xFFFFA0) |
悬停字色 |
shadow |
否 | bool | true |
文字是否带阴影 |
hoverText |
否 | 文本 | = text |
悬停文本 |
tooltip |
否 | 文本 | null |
悬停提示框,按 \n 分行 |
pressSound / hoverSound |
否 | 资源名 | null |
点击/悬停音效 |
action |
否 | 对象 | null |
点击行为,见动作类型 |
wrappedButton |
否 | int | -1 |
包裹原版按钮,见包裹原版按钮 |
两种渲染路径
| 条件 | 贴图来源 | 截取位置 |
|---|---|---|
设了 texture |
该贴图 | 源图 (0, (k-1)×imageHeight),尺寸 width×height,即竖排 3 帧(GuiCustomButton.java:74-82) |
未设 texture |
原版 GuiButton.buttonTextures |
y = 46 + k×20,左右各半拼接(GuiCustomButton.java:85-92) |
k 来自原版 getHoverState()(0 常态 / 1 悬停 / 2 禁用)。特例:元素名恰好为 language 且未设 texture 时,直接画原版语言按钮精灵(y=106,悬停则 +height)并提前返回,不画文字(GuiCustomButton.java:46-57)。默认配置里的 language 按钮正是这样用的(text 为空串)。
字色优先级
GuiCustomButton.java:95-102:显式 packedFGColour > 禁用态 10526880 > 悬停态 hoverTextColor > normalTextColor。
交互
- 普通按钮在
GuiCustom.initGui里从 ID 6000 起递增分配(GuiCustom.java:121-128);actionPerformed仅在id >= 6000时执行action.perform(...)(GuiCustom.java:523-526)。 - 点击音效:设了
pressSound就播它,否则退回原版按钮音(GuiCustomButton.java:181-188);悬停音效只在首次进入悬停时播一次(GuiCustomButton.java:63-66)。 - 提示框走原版悬停框样式,由
LogicUtil.getTooltip逐行做占位符替换(LogicUtil.java:11-16)。
相关条目
- 文本(Text) - 纯文本元素,可带超链接动作
- 全景图(Panorama) - 按钮下方的可旋转立方体背景
- 打开界面(openGui) -
action字段取值之一,完整列表见该条目