zh_cn:tutorial:colorprovider
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
zh_cn:tutorial:colorprovider [2019/12/19 05:49] – lightcolour | zh_cn:tutorial:colorprovider [2023/11/18 08:37] (current) – [注册方块颜色提供器] solidblock | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== 颜色提供器 |
- | 有没有想过,草木和树叶如何根据生物群落而改变色调,或者皮革装甲如何具有看似无限的颜色模式? | + | 有没有想过,草和树叶如何根据生物群系(biome)而改变色调,或者皮革盔甲如何具有看似无限的颜色模式?答案是颜色提供器,这个可以允许你根据位置、NBT、方块状态等属性为方块或物品的模型纹理设置色调或者着色。 |
=== 现有例子 === | === 现有例子 === | ||
- | 首先,现有的哪些原版内容使用颜色提供程序? 一些示例包括: | + | 首先,现有的哪些原版内容使用颜色提供器?一些示例包括: |
*草 | *草 | ||
| | ||
- | | + | |
| | ||
- | *瓜类,甘蔗和睡莲等植物 | + | *西瓜、甘蔗和睡莲等植物 |
- | *尖箭头 | + | *药箭 |
- | 颜色提供程序功能强大,但是Mojang选择对混凝土,羊毛和玻璃等有色块坚持使用单独的纹理。 此时的主要用例是针对生物群落阴影块和对现有纹理的细微调整,例如带尖箭头的彩色末端。 | + | 颜色提供器功能强大,但是Mojang选择对混凝土、羊毛和玻璃等有色方块坚持使用单独的纹理。此时的主要用例是针对受生物群系的方块,以及对现有纹理的细微调整,例如药箭的彩色末端。 |
- | 颜色提供程序背后的概念很简单。 | + | 颜色提供器背后的概念很简单。你为之注册方块和物品,并在渲染该方块或物品的模型时,颜色提供器对纹理的每一层应用色调调整。两个提供器都可以访问模型的层,这意味着您可以分别对模型的每个部分进行色调设置,皮革盔甲和药箭就是这种情况。当您只想更改几个像素而不是整个纹理时,这很有用。 |
- | 请记住,提供颜色是客户端机制。 确保将与其相关的所有代码放入客户端初始化程序中。 | + | 请记住,颜色提供器是客户端机制。确保将与其相关的所有代码放入客户端初始化器中。 |
- | + | ===== 注册方块颜色提供器 | |
- | ===== 注册方块 | + | 要将方块注册到方块颜色提供器,您需要使用 Fabric 的 '' |
- | 要将块注册到块颜色提供程序,您需要使用Fabric的'' | + | |
<code java [enable_line_numbers=" | <code java [enable_line_numbers=" | ||
- | ColorProviderRegistry.BLOCK.register(new BlockColorProvider() { | + | ColorProviderRegistry.BLOCK.register((state, |
- | @Override | + | |
- | public int getColor(BlockState | + | |
- | return | + | |
- | } | + | |
- | }, MY_BLOCK); | + | |
</ | </ | ||
- | 我们在这里所做的只是说:"Hi,'' | + | 我们在这里所做的只是说:“Hi,'' |
+ | |||
+ | 如果你需要在颜色提供器中访问 '' | ||
- | 该模型也很重要:这里的主要提示是//您需要//为要色调的模型的每个部分定义一个tintindex。 要查看此示例,请查看'' | + | 模型也重要的:这里需要注意的是,你//一定要// |
- | < | + | < |
{ | { | ||
" | " | ||
Line 40: | Line 36: | ||
}, | }, | ||
" | " | ||
- | { | + | { " |
" | " | ||
" | " | ||
Line 54: | Line 50: | ||
} | } | ||
</ | </ | ||
- | 在这种情况下,我们添加了一个单一的tintindex,它会出现在`layer`参数(第0层)中。 | + | 在这种情况下,我们添加了一个单一的 tintindex,出现在 |
- | 这是最终结果-请注意,原始模型使用了'' | + | 这是最终结果——请注意,原始模型使用了 '' |
{{https:// | {{https:// | ||
- | ===== 注册颜色提供物品 | + | ===== 注册物品颜色提供器 ===== |
- | 项目相似;区别在于提供的上下文。 | + | 物品是类似的,区别在于提供的上下文。不访问状态、世界和位置,而是访问 '' |
<code java [enable_line_numbers=" | <code java [enable_line_numbers=" | ||
ColorProviderRegistry.ITEM.register((itemStack, | ColorProviderRegistry.ITEM.register((itemStack, | ||
Line 67: | Line 63: | ||
</ | </ | ||
- | 这将色相相同的方式为块库存量的项目。 | + | 这会以像方块那样的方法为你物品栏中的物品提供色相。 |
- | === 局限性 === | + | === 限制 === |
- | 使用颜色提供程序的一个关键问题是项目提供程序中缺少上下文。 这就是为什么原版草不会根据您站立的位置改变存货颜色的原因。 为了实现诸如块的颜色变体(混凝土,玻璃,羊毛等)之类的东西,建议您为每个版本简单地提供单独的纹理。 | + | 使用颜色提供器的一个关键问题是物品的提供器中缺少上下文。这就是为什么原版草不会根据您站立的位置改变物品栏中的颜色的原因。为了实现诸如方块的颜色变体(混凝土、玻璃、羊毛等)之类的东西,建议您为每个版本简单地提供单独的纹理。 |
zh_cn/tutorial/colorprovider.1576734572.txt.gz · Last modified: 2019/12/19 05:49 by lightcolour