• 论坛

导航

  • 主页
  • 样式指南
  • 入门
    • 概述
    • Mod的结构
    • Forge更新检查器
    • 依赖管理
    • 调试分析器
  • 概念
    • Sides
    • 资源
    • 注册表
    • Jar签名
    • 国际化和本地化
  • 方块
    • 概述
    • 介绍方块状态
    • 方块互动
  • 动画 API
    • 概述
    • 骨骼
    • 动画状态机
    • 使用API
  • TileEntity
    • 概述
    • 特殊渲染器
  • 物品
    • 主页
    • 战利品表
  • 模型
    • 模型概述
    • 模型文件
    • 方块状态
      • 方块状态JSON概述
      • Forge方块状态JSON
    • 绑定模型到方块和物品
    • 彩色纹理
      • IBlockColor/IItemColor
      • 创建颜色控制器
    • 物品属性概述
    • 高级模型(未翻译)
      • 高级模型介绍
      • IModel
      • IModelState and IModelPart
      • IBakedModel
      • Extended Blockstates
      • Perspective
      • ItemOverrideList
      • ICustomModelLoader
  • 渲染
    • TileEntityItemStackRenderer
  • 事件
    • 基本用法
  • 网络
    • 主页
    • 概述
    • SimpleImpl
    • 实体
  • 数据储存
    • 能力系统
    • World Saved Data
    • 拓展实体属性
    • Config注解
  • 工具
    • 合成
    • 矿物词典
    • 权限API
  • 效果
    • 音效
  • 惯例
    • 版本命名
    • 文件位置
    • 加载阶段
  • 参与Forge开发
    • 入门
    • PR指南

彩色纹理

原版中的许多方块和物品(如草方块)会根据它们的位置改变其纹理颜色。 模型支持在面上指定“色调指数”,这些数字可以由IBlockColor和IItemColor处理。 有关如何在原版模型中定义色调指数的信息,请参阅wiki。

IBlockColor/IItemColor

这两个都是单方法接口。 IBlockColor需要一个IBlockState,一个(可为null)的IBlockAccess和一个(可为null)的BlockPos。 IItemColor需要一个ItemStack。它们都需要参数tintindex,这是被着色的面的色调指数。它们都返回一个int,一个颜色乘数。这个int按顺序被视为4个无符号字节,透明度,红,绿和蓝,从最高的字节到最低字节。对于着色面中的每个像素,每个颜色通道的值是(int)((float)base * multiplier / 255),其中base是通道的原始值,multiplier是关联的来自颜色乘数的字节。请注意,方块不使用alpha通道。例如,草纹理,未着色,看起来是白色和灰色的。用于草的IBlockColor和IItemColor返回颜色乘数,具有低红色和蓝色成分,但是高透明度和绿色成分,因此当执行乘法时,绿色被带出并且红色/蓝色减少了。

如果物品继承自builtin/generated模型,则每个图层(“layer0”,“layer1”等)都具有与其图层索引对应的色调指数。

创建颜色控制器

IBlockColors需要注册到游戏的BlockColors实例。 BlockColors可以通过Minecraft.getMinecraft().getBlockColors()获得,IBlockColor可以通过BlockColors::registerBlockColorHandler注册。 请注意,这不会导致给定方块的ItemBlock被着色。 ItemBlock是物品,需要用IItemColor着色。

IItemColors需要注册到游戏的ItemColors实例。 ItemColors可以通过Minecraft.getMinecraft().getItemColors()获得,IItemColor可以通过ItemColors::registerItemColorHandler注册。 这个方法被重载也需要Block,它只是为物品的Item.getItemFromBlock(block)注册颜色控制器(即方块的ItemBlock)。

注册只能在初始化阶段在客户端完成.

基于 MkDocs 使用自定义主题构建. 托管于 Read the Docs.
启用夜间模式