ICustomBackgroundColour
基本信息
| 属性 |
值 |
| 全限定名 |
betterachievements.api.components.achievement.ICustomBackgroundColour |
| 类型 |
接口(Achievement 自定义图标背景颜色) |
| 源文件 |
src/main/java/betterachievements/api/components/achievement/ICustomBackgroundColour.java |
功能
Achievement 实现后,覆盖其成就方框背景色(默认按 depth/亮度灰度上色)。GuiBetterAchievements.drawAchievement 在每个成就绘制时调用。
方法签名
int recolourBackground(float greyScale);
| 参数 |
含义 |
greyScale |
当前根据 depth/unlocked 推导出的灰度因子(0.1F ~ 1.0F) |
| 返回 |
含义 |
int |
要应用的颜色(packed RGBA)。注释推荐用 ColourHelper.RGB(r,g,b) 或 ColourHelper.blendWithGreyScale(...) 生成 |
调用点
if (achievement instanceof ICustomBackgroundColour) {
int colour = ((ICustomBackgroundColour) achievement).recolourBackground(brightness);
GL11.glColor4f(
(colour >> 16 & 255) / 255.0F,
(colour >> 8 & 255) / 255.0F,
(colour & 255) / 255.0F, 1.0F);
} else GL11.glColor4f(brightness, brightness, brightness, 1.0F);
实现示例(来自 Demo mod)
// src/demo/java/betterachievementsdemo/registry/AchievementRegistry.java
private static Achievement blue = new DemoAchievement("demo.blue", "Blue", 0, 0, Blocks.wool, null) {
@Override
public int recolourBackground(float greyScale) {
return ColourHelper.blendWithGreyScale(ColourHelper.RGB(0, 0, 255), greyScale);
}
};
private static Achievement rainbow = new DemoAchievement("demo.rainbow", "Rainbow", 2, 1, Items.nether_star, red) {
@Override
public int recolourBackground(float greyScale) {
return ColourHelper.blendWithGreyScale(
ColourHelper.getRainbowColour(0.3F, 0.3F, 0.3F, 0, 2, 4, 128, 127, 50),
greyScale);
}
};
相关条目