动画模型 (Geckolib) - mczph/Multiblocked-Wiki-zh_cn GitHub Wiki

关于如何制作动画模型以及Geckolib支持什么样的模型的相关信息,请查询Geckolib wiki

本节描述了如何建立动画。Multiblocked还拓展了Geckolib的功能来允许用户设置发光纹理和半透明渲染。


机器状态(Status)

Multiblocked的方块有一个状态值status,渲染器可以通过这个值来决定机器使用哪个动画。默认情况下,Multiblocked方块有三个内置的状态值:unformed(未成型),idle(待机),working(运行中),suspend(暂停)。

  1. "unformed":多方块结构未成型。
  2. "idle":机器已成型但是处于待机状态。
  3. "working":机器已成型且正在运行。
  4. "suspend":机器在运行过程中暂停。

准备动画文件

我们认为您已了解动画文件是什么。如果您不知道,请先去了解如何制作动画模型

动画文件中的每个动画都有它自己的名字。Multiblocked检测是否存在与当前机器状态status名字相同的动画文件并调用它。此外,Multiblocked也允许您创建两种状态(status)之间的转变动画,例如,从待机idle到运行中working的转变动画应被命名为"idle-working"。

您没必要为每种状态都做一个动画,当动画缺失时默认使用基础模型(不过要记得为你的连续动画设置循环)。

自定义状态(The custom status)

用户可以通过Crafttweaker(1.12)/KubeJS(1.16及以后)脚本来自定义机器逻辑,从而建立自定义的机器状态。想要了解更多请看TODO部分。请确保状态(status)是在服务端(server side)被创建的。

示例脚本(1.12 Crafttweaker):

import mods.multiblocked.tile.Component;
//...
val component as Component = .......;
component.status = "custom_status";

自发光纹理(Emissive Texture)和半透明渲染(Translucent rendering)

Geckolib本身并不支持自发光和半透明,但是Multiblocked支持。简单来说,当一个组(Group)被命名为"emissive"时,所有这个组里面的方块都会被渲染成自发光的。而当一个组被命名为 "translucent"时,所有这个组里面的方块都会在pass == 1的渲染层级(layer)中被渲染。

自发光:

自发光1 自发光2

半透明:

半透明1 半透明2