MProxyClient
基本信息
| 属性 | 值 |
|---|---|
| 类名 | mantle.client.MProxyClient |
| 类型 | class extends MProxyCommon |
| 方法数 | 5 个 public |
| 页面类型表 | pageClasses:HashMap<String, Class<? extends BookPage>> |
| 启用版本 | 1.7.10 |
功能
客户端代理:初始化小字号字体渲染器、注册 10 种书页类型、把
「打开书本」的 GUI 请求转成 GuiManual。
实现要点
registerRenderer()构造SmallFontRenderer,传入原版minecraft:textures/font/ascii.png并关闭 unicode 开关(第 42 行第 4 个参数false)。- ⚠️ 缺陷:
initManualPages()连续两次registerManualPage("intro", ...),先TextPage.class后TitlePage.class。后者覆盖前者,TextPage作为intro不可达。 - ⚠️ 缺陷:
getClientGuiElement的空栈保护会「报错后仍然执行」。三个if都不成立(stack == null时第 2、3 个条件为 false)→ 落到else分支调用getBookDataFromStack(null)→stack.getItem()NPE。 getBookDataFromStack用stack.getItem().getUnlocalizedName(stack)(带 ItemStack 的重载)作为注册表 key,而Manual覆写的getUnlocalizedName(ItemStack)又直接return super.getUnlocalizedName(par1ItemStack)——最终 key 为Mantle:item.mantle.manual。getStructureDescription之类的方法不存在于此;readManuals()只是调initManualPages()。
相关条目
- MProxyCommon - 被覆写的公共端实现
- GuiManual - GUI 分派目标
- SmallFontRenderer - 字体渲染器
- BookPage - 页面类型表的值类型
- Manual - 被打开的物品
- BookDataStore - 按名字查书