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) 中:

  1. 若 iconMap 中已为该页名缓存 → 返回缓存。
  2. 若页实现 ICustomIcon → 调用 getPageIcon()。若仍为 null 则继续。
  3. 遍历 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);
    }
};

相关条目