1. 动画状态机(Animation State Machine)

WIP

1.1. 动画状态机定义文件

WIP

1.2. Armature 定义文件

WIP

1.3. 使用

public class CommonProxy {
    public void loadAnimationStateMachine(ResourceLocation location, ImmutableMap<String, ITimeValue> params) {
        return null;
    }
}

public class ClientProxy {
    @Override
    public void loadAnimationStateMachine(ResourceLocation location, ImmutableMap<String, ITimeValue> params) {
        return ModelLoaderRegistry.loadASM(location, params);
    }
}

有鉴于 Capability 的使用,动画状态机可用于:

  • 方块(借助 TileEntity
  • 物品(借助 ItemStackItem.initCapabilities
  • 实体(借助 EntityAnimationModelBase

具体的使用方式和其他基于 Capability 的接口大同小异。有鉴于这个功能只在物理客户端上有意义,使用它时也有一些小细节要注意。

1.3.1. 应用于 TileEntity

WIP

1.3.2. 应用于物品

WIP

public final class ItemWithAnimatingModel extends Item {
    public ICapabilityProvider initCapabilities(ItemStack item, NBTTagCompound data) {
        return new DefaultItemAnimationCapabilityProvider(proxy.loadAnimationStateMachine(...));
    }
}

1.3.3. 应用于实体

WIP