管理器¶
GUI管理器进行渲染、点击事件处理、菜单生成与展示等关键功能。关于具体用法请见教程页。
| 名称 | GUI管理器 |
|---|---|
| 包路径 | util2.develop.gui.manager |
| 开发者 | kunjinkao_xs |
class GUIManager¶
- 基类:object
- GUI管理器,负责存储GUI控制器对象,从而存储临时数据和处理点击功能,并在GUI关闭时及时清理内存。每个脚本只需要构造一次。
构造函数¶
GUIManager()
方法¶
mark(player, controller)¶
- 参数:
- player: Player - 使用GUI控制器对象的玩家
- controller: GUIController - 玩家使用的控制器对象
- 标记玩家使用的控制器对象
remove(player)¶
- 参数:
- player: Player - 使用GUI控制器对象的玩家
- 删除玩家使用的控制器对象。常与InventoryCloseEvent配合使用,防止内存泄露。
get(player, holderName=None)¶
- 参数:
- player: Player - 玩家
- holderName: str | None - GUI构造时设置的名称,默认None为不判断名称
- 返回:
- GUIController: 当存在玩家使用的GUI控制器对象时返回
- EmptyGUIController: 不存在玩家使用的GUI控制器对象时返回
class GUIController¶
- 基类:GUIConstructor
- GUI控制器,负责具体GUI渲染、打开和点击事件处理。开发的GUI应为本类的派生类。
构造函数¶
GUIController(player, data=None)
- 参数:
- player: Player - 使用GUI控制器对象的玩家
- data: dict - 数据字典,默认None为空字典,仅供开发者选用
- GUI控制器
方法¶
getHolderName()¶
- 获取GUI名称
- 返回:str - GUI构造时设置的名称
setTitle(title)¶
- 参数:
- title: str - GUI标题
- 设置GUI标题
setGUIManager(guiManager)¶
- 参数:
- guiManager: GUIManager - 本脚本的GUI管理器
- 在GUIManager的对象标记本GUI控制器对象,以便处理点击事件等,需在派生类构造时标记
setInfo(holderName, title, size=0)¶
- 参数:
- holderName: str - GUI名称,建议为形如
script.a.b - title: str - GUI标题
- size: int - 菜单大小,为不超过54的9的整数倍,默认0为根据内容尺寸的最小值
- holderName: str - GUI名称,建议为形如
- 设置GUI的基本信息,需在派生类构造时标记
getPlayer()¶
- 获取GUI控制器对象的玩家
- 返回:Player - 使用GUI控制器对象的玩家
toInventory()¶
render()¶
- 渲染器,用于打开GUI前运行以渲染内容,需要开发者在派生类自行实现
- 抛出:NotImplementedError
onClick(e)¶
- 参数:
- e: InventoryClickEvent - 事件
- 点击处理,需要开发者在派生类自定义功能,不重写时仅取消事件
openWithRender()¶
- 异步渲染后打开。打开GUI的一般方法,减少复杂GUI渲染对性能的影响
openWithRenderSync()¶
- 同步渲染后打开。建议优先选用异步,除非调试时查看具体报错信息(异步情况下报错不直接)
open()¶
- 打开已渲染的GUI。一般无需使用,谨慎直接使用,用时充分测试是否能够触发事件
update()¶
- 刷新已打开的GUI。一般用于重新覆盖界面后,刷新GUI来展示给玩家
class EmptyGUIController¶
- 空的GUIController。用于未给玩家设置GUIController时处理点击事件等的“鸭子类型”,避免漏洞扩大化,并报错提示开发者
构造函数¶
EmptyGUIController(player)
- 参数:
- player: Player - 使用GUI控制器对象的玩家
- 出于安全性设计的空GUIController
getHolderName()¶
- 获取GUI名称
- 返回:str - 仅会返回
EmptyGUIController
onClick(e)¶
- 参数:
- e: InventoryClickEvent - 事件
- 点击处理,直接取消事件,发送消息提醒玩家,并抛出错误提醒开发者
- 抛出:KeyError
openWithRender()¶
- 返回:None
openWithRenderSync()¶
- 返回:None
open()¶
- 返回:None
class RadarGUIController¶
- 基类:GUIController
- 雷达GUIController。用于显示玩家附近的位置,详见
/dcpt中查找附近邮电设施
构造函数¶
RadarGUIController(player, contents, zoom)
- 参数:
- player: Player - 使用GUI控制器对象的玩家
- contents: iterable - 要展示的内容们,每个对象必须有
.getLocation()方法 - zoom: float - 缩放等级,GUI中的每格代表实际的zoom格,可设为“0.01”
- 雷达GUIController
方法¶
spawnIcon(item)¶
- 参数:
- item: Any - 玩家输入contents的元素
- 根据元素生成图标ItemStack,需要开发者在派生类自行实现
- 抛出:NotImplementedError
spawnRadar()¶
- 生成雷达图。距离较近的数个位置,显示最近位置,并标注“..临项已折叠..”
vectorToIndex(vec, zoom, mx=8, mz=5, forceMiddle=True)¶
- 参数:
- vec: Vector - 从原点指向点位的向量
- zoom: float - 缩放等级,同上
- mx: int - 界面内x轴长上限,默认8
- mz: int - 界面内z轴长上限,默认5
- forceMiddle: bool - 是否强制绕开原点,默认是(绕开)
- 向量转为位置,一般无需自行使用本方法
- 返回:
- int - 在GUI内的位置索引
- None - 超过限界不予显示