{
  "format_version": "1.8.0",
  "render_controllers": {
    "controller.render.lv_te.fred": {
      "arrays": {
        "textures": {
          "Array.skin": [
            "Texture.default",
            "Texture.charging"
          ]
        }
      },
      "geometry": "Geometry.default",
      "materials": [
        {
          "*": "material.default"
        }
      ],
      "textures": [
        "array.skin[(query.variant == 1 ? 1 : 0)]"
      ]
    },
    "controller.render.lv_te.sara": {
      "arrays": {
        "textures": {
          "Array.skin": [
            "Texture.default",
            "Texture.sitting"
          ]
        }
      },
      "geometry": "Geometry.default",
      "materials": [
        {
          "*": "material.default"
        }
      ],
      "textures": [
        "array.skin[(query.variant == 1 ? 1 : 0)]"
      ],
      "uv_anim": {
        "offset": [
          0.0,
          "query.variant == 0 ? (query.is_moving ? math.mod(math.floor(query.life_time * 10), 2) / 2 : 0 / 2) : 0.0"
        ],
        "scale": [
          1.0,
          "query.variant == 0 ? 1 / 2 : 1.0"
        ]
      }
    },
    "controller.render.lv_te.boom_tnt": {
      "textures": [
        "Texture.default"
      ],
      "geometry": "Geometry.default",
      "materials": [
        {
          "*": "Material.default"
        }
      ],
      "is_hurt_color": {},
      "on_fire_color": {},
      "overlay_color": {
        "r": "v.flash ? q.is_ignited : this",
        "g": "v.flash ? q.is_ignited : this",
        "b": "v.flash ? q.is_ignited : this",
        "a": "v.flash ? q.is_ignited : this"
      },
      "uv_anim": {
        "offset": [
          0.0,
          "math.mod(math.floor(q.life_time * 2),5) / 5"
        ],
        "scale": [
          1.0,
          "1 / 5"
        ]
      }
    },
    "controller.render.lv_te.pipe": {
      "arrays": {
        "textures": {
          "Array.skin": [
            "Texture.default",
            "Texture.active"
          ]
        }
      },
      "geometry": "Geometry.default",
      "materials": [
        {
          "*": "material.default"
        }
      ],
      "textures": [
        "array.skin[q.property('lv_te:input') ? 1 : 0]"
      ]
    },
    "controller.render.lv_te.machines.crack": {
      "arrays": {
        "textures": {
          "Array.skin": [
            "Texture.crack_0",
            "Texture.crack_1",
            "Texture.crack_2",
            "Texture.crack_3"
          ]
        }
      },
      "geometry": "Geometry.cracks",
      "materials": [
        {
          "*": "material.cracks"
        }
      ],
      "textures": [
        "array.skin[q.property('lv.te:cracking')]"
      ]
    },
    "controller.render.lv_te.manual_ore_extractor": {
      "geometry": "Geometry.default",
      "materials": [
        {
          "*": "material.default"
        },
        {
          "2": "(q.property('lv_te:filling') == 1 ? material.default : material.none)"
        },
        {
          "3": "(q.property('lv_te:filling') == 2 ? material.default : material.none)"
        },
        {
          "4": "(q.property('lv_te:filling') == 3 ? material.default : material.none)"
        },
        {
          "5": "(q.property('lv_te:filling') == 4 ? material.default : material.none)"
        },
        {
          "6": "(q.property('lv_te:filling') == 5 ? material.default : material.none)"
        },
        {
          "7": "(q.property('lv_te:filling') == 6 ? material.default : material.none)"
        },
        {
          "8": "(q.property('lv_te:filling') == 7 ? material.default : material.none)"
        }
      ],
      "textures": [
        "texture.default"
      ]
    },
    "controller.render.lv_te.auto_treecutter": {
      "arrays": {
        "textures": {
          "Array.skin": [
            "Texture.default",
            "Texture.oak_tree",
            "Texture.spruce_tree",
            "Texture.birch_tree",
            "Texture.jungle_tree",
            "Texture.acacia_tree",
            "Texture.dark_oak_tree",
            "Texture.pale_oak_tree",
            "Texture.cherry_tree"
          ]
        }
      },
      "geometry": "Geometry.default",
      "materials": [
        {
          "*": "material.default"
        }
      ],
      "textures": [
        "array.skin[q.property('lv_te:sapling')]"
      ]
    },
    "controller.render.lv_te.ore_generator": {
      "arrays": {
        "textures": {
          "Array.skin": [
            "Texture.default",
            "Texture.default_on"
          ]
        }
      },
      "geometry": "Geometry.default",
      "materials": [
        {
          "*": "material.default"
        }
      ],
      "textures": [
        "array.skin[(q.property('lv_te:charge') > 0 ? 1 : 0)]"
      ],
      "uv_anim": {
        "offset": [
          0.0,
          "(q.property('lv_te:charge') > 0 ? 1 : 0) ? math.mod(math.floor(q.life_time * 3),4) / 4 : 0.0"
        ],
        "scale": [
          1.0,
          "(q.property('lv_te:charge') > 0 ? 1 : 0) ? 1 / 4 : 1.0"
        ]
      }
    },
    "controller.render.lv_te.woodcutter": {
      "geometry": "Geometry.default",
      "materials": [
        {
          "*": "material.default"
        }
      ],
      "textures": [
        "Texture.default"
      ],
      "uv_anim": {
        "offset": [
          0.0,
          "math.mod(math.floor(q.life_time * 6), 3) /3"
        ],
        "scale": [
          1.0,
          "1 / 3"
        ]
      }
    },
    "controller.render.lv_te.oil_extractor": {
      "arrays": {
        "textures": {
          "Array.skin": [
            "Texture.default", // 0: Oxidization 0, Not Full
            "Texture.oxi_1", // 1: Oxidization 1, Not Full
            "Texture.oxi_2", // 2: Oxidization 2, Not Full
            "Texture.default_on", // 3: Oxidization 0, Full
            "Texture.oxi_1_on", // 4: Oxidization 1, Full
            "Texture.oxi_2_on" // 5: Oxidization 2, Full
          ]
        }
      },
      "geometry": "Geometry.default",
      "materials": [
        {
          "*": "material.default"
        }
      ],
      "textures": [
        "array.skin[q.property('lv_te:oxidization') + (q.property('lv_te:is_full') ? 0 : 3)]"
      ],
      "uv_anim": {
        "offset": [
          0.0,
          "(q.property('lv_te:oxidization') < 3 && !q.property('lv_te:is_full')) ? math.mod(math.floor(q.life_time * 3),4) / 4 : 0.0"
        ],
        "scale": [
          1.0,
          "(q.property('lv_te:oxidization') < 3 && !q.property('lv_te:is_full')) ? 1 / 4 : 1.0"
        ]
      }
    },
    "controller.render.lv_te.container_hologram": {
      "arrays": {
        "textures": {
          "Array.skin": [
            "Texture.input",
            "Texture.output"
          ]
        },
        "geometries": {
          "Array.geos": [
            "geometry.pipe",
            "geometry.chest",
            "geometry.hopper"
          ]
        }
      },
      "geometry": "array.geos[v.geo]",
      "materials": [
        {
          "*": "material.default"
        }
      ],
      "textures": [
        "array.skin[q.variant]"
      ]
    }
  }
}