# Contraption requirement (Create)

{% hint style="warning" %}
This requirement requires [Custom Machinery Create](https://www.curseforge.com/minecraft/mc-mods/custom-machinery-create) to be installed.
{% endhint %}

The contraption requirement is used to make a recipe able to require or produce some Create kinetic speed and stress.

This requirement is available in both `input` and `output` modes.

The requirement type of contraption requirement is : `"custommachinery:contraption"`.

### Properties

The block requirement has 3 mandatory properties and 1 optional property.

#### Mandatory properties&#x20;

```json
"type": "custommachinery:contraption" //Mandatory to define a contraption requirement.
```

<details>

<summary>Mode</summary>

#### Name : `mode`

#### Description :&#x20;

Define the mode (input or output) of this requirement.

* Input : The recipe will requires the specified amount of kinetic speed to start.\
  &#x20;           If a stress value is specified the recipe will add a stress impact of \
  &#x20;          `speed * stress` to the kinetic network.
* Output : The recipe will produce the specified amount of kinetic speed while the\
  &#x20;              machine is running.\
  &#x20;              If a stress value is specified the recipe will add a stress capacity of \
  &#x20;             `speed * stress` to the kinetic network.

#### Example :&#x20;

The recipe will produce SU :&#x20;

```json
"mode": "output"
```

</details>

<details>

<summary>Speed</summary>

#### Name : `speed`

#### Description :&#x20;

A positive decimal value that define the amount of kinetic speed (in RPM)that the recipe will require or produce.

#### Example :&#x20;

The recipe will require or produce 64rpm :&#x20;

```json
"speed": 64
```

</details>

#### Optional property

<details>

<summary>Stress</summary>

#### Name : `stress`

#### Description :&#x20;

A positive decimal value that define the kinetic stress capacity or impact (depending on the mode property) that the recipe will add to the kinetic network.

#### Default : 0

#### Example :&#x20;

Add a kinetic stress impact/capacity of 2 times the machine speed :&#x20;

```json
"stress": 2
```

</details>

<details>

<summary>Scaling</summary>

#### Name : `scaling`

#### Description :&#x20;

A boolean that define if the recipe processing speed should be scaled to the rotation speed provided to the machine.

For example if the recipe requires a speed of 128 and a speed of 256 is provided the recipe will be processed 2x faster.

#### Default : `false`

#### Example :&#x20;

The processing speed will be scaled to the rotation speed :&#x20;

```json
"scaling": true
```

</details>

### Example

A contraption requirement that will make the recipe require at least 64rpm to start and add a stress impact of 2 times its speed to the network :&#x20;

```json
{
    "type": "custommachinery:contraption",
    "mode": "input",
    "speed": 64,
    "stress": 2
```
