恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
MCreator 流体着色类型(Tint Type)详解:基于生物群系的液体着色原理与最佳实践
首页
资讯中心
/
MCreator 流体着色类型(Tint Type)详解:基于生物群系的液体着色原理与最佳实践
MCreator 流体着色类型(Tint Type)详解:基于生物群系的液体着色原理与最佳实践
发布时间:2026/10/17 5:59:32
低代码代码生成桌面应用游戏开发【免费下载链接】MCreatorMCreator is an open-source software used to make Minecraft Java Edition mods, Minecraft Bedrock Edition Add-Ons, resource packs, and data packs using an intuitive easy-to-learn interface or with an integrated code editor. It is used worldwide by Minecraft players, aspiring mod developers, for education, online classes, and STEM workshops.项目地址https://gitcode.com/gh_mirrors/mc/MCreator点击查看免费下载MCreator 的流体Fluid元素提供着色类型Tint Type选项可让自定义液体像原版的草、树叶和水一样根据所处生物群系动态改变渲染颜色。本文以 德语帮助文档及同源 英文默认文档为骨架结合仓库中流体元素的数据模型、GUI 定义与 NeoForge 代码生成模板完整讲解着色类型的全部可选值、底层颜色计算逻辑、灰度纹理最佳实践以及它对自动生成纹理的影响。读完本文你将能精准配置出随生物群系变色的液体并理解生成代码中每个选项背后的实际取值来源。一、什么是流体着色类型在 MCreator 中创建流体元素时着色类型决定引擎对流体纹理施加何种色调tint。其核心行为是该选项会基于生物群系颜色biome colors对流体应用着色效果与原版中草、树叶、水随生物群系变色的机制相同。这意味着当你把流体设置成草或水着色类型后同一种液体在森林、平原、沙漠等不同生物群系中会呈现出不同的颜色——不是美术贴图不同而是运行时由着色器根据当前位置的生物群系数据实时叠加颜色。从数据模型看该属性定义在 Fluid.java 中通过LimitedOptions注解限定为一组固定枚举值并通过isFluidTinted()方法return !No tint.equals(tintType)见 Fluid.java判断该流体是否启用了着色。默认值为No tint不着色即新创建的流体默认不启用该功能。二、可用的着色类型及适用场景根据 Fluid.java 中LimitedOptions的声明流体着色类型共有以下 11 个可选值可选值效果说明参考对象No tint不着色使用纹理原始颜色默认值Grass使用生物群系的草颜色草方块Foliage使用生物群系的树叶颜色树叶Dry foliage使用干燥植物/枯叶颜色干草丛Birch foliage使用固定白桦树叶颜色白桦树Spruce foliage使用固定云杉常绿树叶颜色云杉树Default foliage使用默认树叶颜色橡树树叶Water使用生物群系的水体颜色原版水Sky使用生物群系的天空颜色天空Fog使用生物群系的雾颜色雾Water fog使用生物群系的水下雾颜色水下雾其中Grass、Foliage、Water属于随生物群系动态变化的类型适合表现自然水体Birch foliage、Spruce foliage、Default foliage属于固定颜色类型结果稳定不随群系变化Sky、Fog、Water fog则把流体颜色与当前群系的天空/雾色绑定可用于制作具有环境氛围感的特殊液体。值得一提的是这一套枚举并非流体独有——Block.java 与 Plant.java 中定义了完全相同的着色类型集合因此你可以在方块、植物、流体之间保持一致的着色风格。三、在 GUI 中配置着色类型在流体元素的编辑界面中着色类型以下拉框形式出现在渲染设置区域。相关实现位于 FluidGUI.java下拉框组件由ComponentFromAnnotation.options(Fluid.class, tintType)自动创建FluidGUI.java直接读取上文Fluid类中LimitedOptions注解声明的枚举值加载元素时调用tintType.setSelectedItem(fluid.tintType)回显已保存的值FluidGUI.java保存元素时通过fluid.tintType (String) tintType.getSelectedItem()写回数据模型FluidGUI.java。在简体中文界面中该控件显示为着色类型对应的本地化文案定义于 texts_zh_CN.properties。操作路径为新建或打开Fluid元素 → 在渲染设置分组中找到着色类型下拉框 → 从 11 个候选中选择一项 → 保存并生成代码。四、生成代码的底层原理getTintColor 双方法启用任意非No tint着色类型后MCreator 的代码生成器会在流体类型FluidType客户端扩展中生成两个getTintColor方法二者共同完成静态底色 动态群系色的渲染控制。以 NeoForge 1.21.1 生成器模板 fluidtype.java.ftl 为例**第一个方法无参**返回一个固定的 ARGB 颜色值作为流体渲染的静态色调。生成逻辑如下#if data.tintType ...条件分支着色类型生成的静态颜色值Grass-6506636Foliage/Default foliage-12012264Birch foliage-8345771Spruce foliage-10380959Dry foliage107103421.21.1 无此类型改用常量替代Water-13083194Sky-8214273Fog-4138753其他含Water fog-16448205**第二个方法带FluidState state, BlockAndTintGetter world, BlockPos pos参数**则逐位置查询生物群系数据实现真正的随群系变色Grass→BiomeColors.getAverageGrassColor(world, pos)Foliage→BiomeColors.getAverageFoliageColor(world, pos)Default foliage→FoliageColor.getDefaultColor()Birch foliage→FoliageColor.getBirchColor()Spruce foliage→FoliageColor.getEvergreenColor()Dry foliage→ 常量10710342模板注释明确说明该着色类型在 1.21.1 中不存在使用常量值代替Water→BiomeColors.getAverageWaterColor(world, pos)Sky→Minecraft.getInstance().level.getBiome(pos).value().getSkyColor()Fog→Minecraft.getInstance().level.getBiome(pos).value().getFogColor()Water fog模板中的else分支→Minecraft.getInstance().level.getBiome(pos).value().getWaterFogColor()所有动态颜色最终通过| 0xFF000000强制补齐不透明 alpha 通道保证着色后的液体不会出现半透明色带异常。版本差异提示在较新的 NeoForge 26.3.x 生成器模板 fluidtype_client.java.ftl 中实现改为直接使用BiomeColors.getAverageDryFoliageColor(world, pos)与FoliageColor.FOLIAGE_DEFAULT、FOLIAGE_BIRCH、FOLIAGE_EVERGREEN等常量Dry foliage在 26.3.x 中已拥有专属的生物群系颜色 API无需再使用常量替代。从模板外层还能看到只有当data.isFluidTinted()为真时整个getTintColor相关代码块才会被生成fluidtype.java.ftl而isFluidTinted()又通过extendsFluidAttributes()联动控制流体属性扩展逻辑Fluid.java。因此选择No tint的流体生成代码更精简运行时也省去了逐方块的颜色查询开销。五、最佳实践使用灰度纹理原文档特别强调为获得最佳效果流体应使用灰度grayscale纹理。这是 Minecraft 生物群系着色机制的内在要求。着色器的工作方式是纹理颜色 × 着色颜色的乘法混合若纹理本身已经带有明显颜色乘以群系色后会产生难以预料的色偏而灰度纹理只携带明暗信息白色为最亮、黑色为最暗再与生物群系颜色相乘就能得到明暗细节保留、色相完全受控的理想效果——这与你为草方块、树叶准备灰度贴图再交给群系着色的做法完全一致。实操建议在像素画编辑器中把流体的静态纹理Still Texture与流动纹理Flowing Texture绘制为灰度图只保留亮度层次如深浅不一的水波纹、气泡等随后在着色类型中选择目标群系色如Water表现海洋、Grass表现绿色液体若希望液体在任意群系都呈现完全一致的颜色则保留No tint并直接在纹理中绘制最终颜色。六、着色类型对自动生成纹理的影响原文档同时指出着色类型也会影响自动生成的桶bucket纹理。从源码可以印证这一联动关系。MCreator 在 MinecraftImageGenerator.java 中通过generateFluidBucketIcon(ImageIcon fluid)自动生成流体桶的图标先将流体纹理缩放裁剪为 32×32再与bucket_mask遮罩做透明度蒙版最后叠加在bucket_base桶底座之上得到最终桶图标。同时流体元素的预览图也直接取自静态纹理ImageUtils.resizeAndCrop(textureStill.getImage(TextureType.BLOCK), 32)见 Fluid.java。因此虽然着色本身发生在运行时渲染阶段但当你切换着色类型时MCreator 会在生成工作区资源时重新计算与流体外观相关的自动生成纹理确保方块预览、桶图标与游戏内最终渲染效果保持一致。建议在切换着色类型后重新生成并检查桶图标确认其在对应生物群系中的观感符合预期。七、使用要点与常见陷阱默认不着色新流体默认No tint需要主动选择其他类型才能获得群系变色效果颜色来源分清Grass/Foliage/Water是动态群系色Birch / Spruce / Default foliage是固定常量色Sky / Fog / Water fog绑定环境色——按表现需求而非名称直觉选择纹理灰度化启用着色前务必检查纹理是否为灰度图否则容易出现颜色脏污或不可控偏色版本兼容Dry foliage在 1.21.1 生成器中以常量值替代生成代码与 fluidtype.java.ftl 注释一致而在 26.3.x 中已支持原生群系颜色 API与方块/植物一致流体、方块、植物共享同一套着色类型枚举可通过统一设置让液体与其容器方块如水池的着色风格保持一致。通过合理组合着色类型 灰度纹理你可以在不改动任何贴图的情况下让自定义液体像原版水与草一样自然地融入 MCreator 生成的任意生物群系世界。赞分享低代码代码生成桌面应用游戏开发【免费下载链接】MCreatorMCreator is an open-source software used to make Minecraft Java Edition mods, Minecraft Bedrock Edition Add-Ons, resource packs, and data packs using an intuitive easy-to-learn interface or with an integrated code editor. It is used worldwide by Minecraft players, aspiring mod developers, for education, online classes, and STEM workshops.项目地址https://gitcode.com/gh_mirrors/mc/MCreator点击查看免费下载相关推荐MCreator 方块着色选项 tintType基于生物群系颜色着色的原理与源码实现解析MCreator 方块着色选项 tintType基于生物群系颜色着色的原理与源码实现解析 本文围绕 MCreator 中方块编辑器内的 tint_type 选低代码代码生成桌面应用游戏开发MCreator 基岩版方块着色方式Tint Method完全指南利用生物群系色彩让方块自然融入世界MCreator 基岩版方块着色方式Tint Method完全指南利用生物群系色彩让方块自然融入世界 导读 在 MCreator 中制作 Minecraf低代码代码生成桌面应用游戏开发MCreator 方块物品染色Item Tint功能详解原理、配置与代码生成全流程MCreator 方块物品染色Item Tint功能详解原理、配置与代码生成全流程 MCreator 是一款用于制作 Minecraft Java 版模组低代码代码生成桌面应用游戏开发上一篇res-downloader 视频解密下载教程把微信视频号加密视频变成能播的完整流程下一篇Penrose字体加载策略确保数学符号正确显示的跨平台方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考