ICustomIcon
基本信息
| 属性 | 值 |
|---|---|
| 全限定名 | betterachievements.api.components.page.ICustomIcon |
| 类型 | 接口(AchievementPage 自定义页签图标) |
| 源文件 | src/main/java/betterachievements/api/components/page/ICustomIcon.java |
功能
让 AchievementPage 返回自己的页签图标(ItemStack)。在 GuiBetterAchievements.drawPageIcon 中通过 AchievementRegistry.getItemStack(page) 间接调用。
方法签名
ItemStack getPageIcon();
| 返回 | 说明 |
|---|---|
ItemStack |
页签上要显示的图标。若返回 null,则回退到 page.getAchievements() 中第一个父节点为 null 的成就图标(Achievement.theItemStack) |
调用优先级
在 AchievementRegistry.getItemStack(page) 中:
- 若
iconMap中已为该页名缓存 → 返回缓存。 - 若页实现
ICustomIcon→ 调用getPageIcon()。若仍为 null 则继续。 - 遍历
page.getAchievements(),找parentAchievement == null的根成就,取theItemStack并缓存。
若同时使用了
IMCHelper.sendIconForPage(...),IMC 优先级更高 ——IMCHelper注册早于getPageIcon()调用。
实现示例(来自 Demo mod)
// src/demo/java/betterachievementsdemo/registry/AchievementRegistry.java
private static AchievementPage page1 = new DemoPage("demoPage1", blue, red, rainbow) {
@Override
public ItemStack getPageIcon() {
return new ItemStack(Blocks.diamond_block);
}
};
相关条目
- AchievementRegistry -
getItemStack(page)解析入口 - IMCHelper - 同等功能的 IMC 方案
- DemoPage - 实现示例基类