---
title: "Version 1.6.0"
---


# Updating from `1.5.4` to `1.6.0`


## Overclock Recipe Modifiers

Previously, you could access the overclock recipe modifiers via

```javascript
GTRecipeModifiers.ELECTRIC_OVERCLOCK.apply(OverclockingLogic.NON_PREFECT_OVERCLOCK)
```

Now, you should instead use:

```javascript
GTRecipeModifiers.OC_NON_PREFECT
```

| `OverclockingLogic` attribute | `GTRecipeModifiers` attribute  |
| -------- | ------ |
| `NON_PREFECT_OVERCLOCK`  | `OC_NON_PREFECT` |
| `PERFECT_OVERCLOCK`  | `OC_PERFECT` |
| `PERFECT_OVERCLOCK_SUBTICK`  | `OC_PERFECT_SUBTICK` |
| `NON_PERFECT_OVERCLOCK_SUBTICK`  | `OC_NON_PERFECT_SUBTICK` |

## Elements

Previously, you would pass all the attributes to `.create`.
```javascript
GTCEuStartupEvents.registry('gtceu:element', event => {
    event.create('cryolobus', /* protons */ 149, /* neutrons */ 234, /* halfLifeSecons */ -1, /* decayTo */ null, /*symbol*/ 'Cy', /* isIsotope */ false)
}
```

Now, you pass the element name to `.create`, and use builder methods to specify the attributes:
```javascript
GTCEuStartupEvents.registry('gtceu:element', event => {
    event.create('cryolobus')
        .protons(149)
        .neutrons(234)
        .symbol('Cy')
}
```
Note that only `protons`, `neutrons` and `isIsotope` are required.

## Single-block Machines

Previously, you would pass the list of tiers to `.create`, and call builder methods directly on the result.

```javascript
GTCEuStartupEvents.registry('gtceu:machine', event => {
    event.create('atomic_reconstructor', 'simple', GTValues.LV, GTValues.MV, GTValues.HV)
        .langValue("Atomic Reconstructor")
        .recipeType('atomic_reconstruction', true, true)
        .workableTieredHullRenderer('gtceu:block/machines/reconstructor')
})

Now, you pass the list of tiers to `.tiers`, and call the other builder methods inside the function passed to `.definition`.

```javasript
GTCEuStartupEvents.registry('gtceu:machine', event => {
    event.create('atomic_reconstructor', 'simple')
        .tiers(GTValues.LV, GTValues.MV, GTValues.HV, GTValues.EV, GTValues.IV, GTValues.LuV, GTValues.ZPM, GTValues.UV, GTValues.UHV, GTValues.UEV, GTValues.UIV)
        .definition((tier, builder) =>
            builder
                .langValue(GTValues.VLVH[tier] + " Atomic Reconstructor")
                .recipeType('atomic_reconstruction')
                .workableTieredHullRenderer('gtceu:block/machines/reconstructor')
        )
})
```

## Multiblock Machines

Previously, you pass as function for creating the machine from the controler to `.create`.
```javascript
event.create('helical_fusion_reactor', 'multiblock', (holder) => new FusionReactorMachine(holder, GTValues.UHV))
```

Now you pass the function to `.machine`.
```javascript
event.create('helical_fusion_reactor', 'multiblock').machine((holder) => new FusionReactorMachine(holder, GTValues.UHV))
```

## Renames

| Before | After |
| ------ | ----- |
| `GCyMBlocks` | `GCYMBlocks` |
