GuiPlayerExpanded

基本信息

属性 值
路径 baubles.client.gui.GuiPlayerExpanded
类型 class
父类 GuiContainer
接口 INEIGuiHandler(NEI 可选)
包名 baubles.client.gui

资源

常量 资源
background baubles:textures/gui/bauble_inventory.png(旧版 GUI)
gui_background baubles:textures/gui/bauble_background.png(新版侧栏 GUI)
creative_inventory_tabs 原版 textures/gui/container/creative_inventory/tabs.png(用于滚动条)

字段

字段 用途
xSizeFloat, ySizeFloat 当前鼠标坐标(供玩家模型旋转)
showActivePotionEffects 是否有药水效果要渲染
currentScroll 滚动位置 0…1
isScrolling 是否正在拖动滚动条
wasClicking 上一帧左键是否按下
tooltipIndexCache 最近 hover 的 bauble 槽索引(缓存)
tooltipCache 最近 hover 的 tooltip 内容
hasLwjgl3 Loader.isModLoaded("lwjgl3ify")(决定鼠标滚轮单位)

布局(新版)

  • bauble 槽位列于 GUI 左侧,按列竖排
  • 列数由 ContainerPlayerExpanded.getColumns 决定(最多 BaublesConfig.maxColumns)
  • 当槽位数 > maxColumns*8 时启用滚动条
  • 滚动条区域:guiLeft - 26 - columns*18 到 guiLeft - 8 - columns*18
  • 玩家模型:中心 (guiLeft+51, guiTop+75),朝向鼠标

布局(旧版)

  • 槽位嵌入主 GUI 内,按 4 列网格排(slotStartX = guiLeft+79, slotStartY = guiTop+7)
  • 不使用滚动条,槽位上限受 GUI 高度影响

关键方法

方法 行为
updateScreen 每帧把 container.baubles.blockEvents = false
initGui 清空按钮;如有药水效果则 showActivePotionEffects = true(新版)
drawScreen 调用 handleMouseHover(若 displayTooltipOnHover)+ handleScrollbar
drawGuiContainerBackgroundLayer 绑背景 → drawBaubleSlots → 玩家模型 → 药水效果
drawBaubleSlots 绘制 bauble 槽位背景(每个槽位根据 ItemDebugger.getBackgroundIconForSlotType 拿到对应贴图),包含 unknown 槽位的特殊偏移处理
drawPotionEffects 仿原版 inventory 渲染左侧药水效果列表
handleMouseHover 鼠标在空槽位上时显示 <槽位类型名> + 是否可装备 tooltip
handleScrollbar 处理滚动条拖动
handleMouseInput 处理滚轮;LWJGL2 与 LWJGL3 单位不同,分别转换
keyTyped 若按下饰品栏热键则关闭 GUI
handleMouseClick 把 clickType == 4(shift-click)在 bauble 侧栏时降级为普通点击(因槽位 xDisplayPosition < 0)
mouseClicked / mouseMovedOrUp 当鼠标在 bauble 侧栏 UI 内时阻断原版处理,避免误丢物品
isClickInUI 检测鼠标是否在 bauble 侧栏区域

NEI 集成

实现 INEIGuiHandler(可选):

  • hideItemPanelSlot 把 bauble 槽位的 NEI 物品面板区域标记为隐藏,避免被药水效果面板遮挡;NEI ignorePotionOverlap=true 时简化逻辑

相关条目