From a95a5f27ff99bbb26c442b76a41b3340a45afcd0 Mon Sep 17 00:00:00 2001
From: DBotThePony <dbotthepony@yandex.ru>
Date: Fri, 5 Jan 2024 00:24:53 +0700
Subject: [PATCH] Wireless charger, pattern monitor, driver viewer and storage
 power supplier coloring

---
 .../advancements/MachineAdvancementsData.kt   |   4 +-
 .../mc/otm/datagen/blocks/BlockModels.kt      |   9 +++
 .../mc/otm/datagen/blocks/BlockStates.kt      |  23 +++---
 .../otm/datagen/blocks/ComplexBlockStates.kt  |  26 ++++---
 .../mc/otm/datagen/items/ItemModels.kt        |   9 ++-
 .../mc/otm/datagen/lang/English.kt            |  10 +--
 .../mc/otm/datagen/lang/Russian.kt            |  10 +--
 .../mc/otm/datagen/loot/LootTablesData.kt     |   8 +-
 .../datagen/models/MatteryModelProvider.kt    |   4 +
 .../datagen/recipes/CraftingTableRecipes.kt   |   2 +-
 .../mc/otm/datagen/recipes/PainterRecipes.kt  |   4 +
 .../dbotthepony/mc/otm/datagen/tags/Tags.kt   |   8 +-
 .../mc/otm/block/matter/MatterPanelBlock.kt   |   3 +-
 .../mc/otm/block/storage/DriveViewerBlock.kt  |   3 +-
 .../storage/StoragePowerSupplierBlock.kt      |   3 +-
 .../mc/otm/block/tech/AndroidChargerBlock.kt  |   3 +-
 .../ru/dbotthepony/mc/otm/registry/Ext.kt     |  10 +--
 .../mc/otm/registry/MBlockEntities.kt         |  58 +++++++-------
 .../ru/dbotthepony/mc/otm/registry/MBlocks.kt |  72 +++++++++---------
 .../mc/otm/registry/MEntityTypes.kt           |   4 +-
 .../ru/dbotthepony/mc/otm/registry/MItems.kt  |  65 +++++++++-------
 .../blockstates/matter_panel.json             |  27 -------
 .../textures/block/android_charger/black.png  | Bin 0 -> 836 bytes
 .../textures/block/android_charger/blue.png   | Bin 0 -> 836 bytes
 .../textures/block/android_charger/brown.png  | Bin 0 -> 836 bytes
 .../textures/block/android_charger/cyan.png   | Bin 0 -> 836 bytes
 .../textures/block/android_charger/gray.png   | Bin 0 -> 836 bytes
 .../textures/block/android_charger/green.png  | Bin 0 -> 836 bytes
 .../block/android_charger/light_blue.png      | Bin 0 -> 836 bytes
 .../block/android_charger/light_gray.png      | Bin 0 -> 836 bytes
 .../textures/block/android_charger/lime.png   | Bin 0 -> 836 bytes
 .../block/android_charger/magenta.png         | Bin 0 -> 836 bytes
 .../textures/block/android_charger/orange.png | Bin 0 -> 836 bytes
 .../textures/block/android_charger/pink.png   | Bin 0 -> 836 bytes
 .../textures/block/android_charger/purple.png | Bin 0 -> 836 bytes
 .../textures/block/android_charger/red.png    | Bin 0 -> 836 bytes
 .../textures/block/android_charger/white.png  | Bin 0 -> 836 bytes
 .../textures/block/android_charger/yellow.png | Bin 0 -> 836 bytes
 .../textures/block/android_charger_mask.png   | Bin 0 -> 1717 bytes
 .../textures/block/drive_viewer/black.png     | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer/blue.png      | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer/brown.png     | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer/cyan.png      | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer/gray.png      | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer/green.png     | Bin 0 -> 702 bytes
 .../block/drive_viewer/light_blue.png         | Bin 0 -> 702 bytes
 .../block/drive_viewer/light_gray.png         | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer/lime.png      | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer/magenta.png   | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer/orange.png    | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer/pink.png      | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer/purple.png    | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer/red.png       | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer/white.png     | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer/yellow.png    | Bin 0 -> 702 bytes
 .../textures/block/drive_viewer_mask.png      | Bin 0 -> 1234 bytes
 .../textures/block/item_monitor/black.png     | Bin 580 -> 580 bytes
 .../textures/block/item_monitor/blue.png      | Bin 580 -> 580 bytes
 .../textures/block/item_monitor/brown.png     | Bin 580 -> 580 bytes
 .../textures/block/item_monitor/cyan.png      | Bin 580 -> 580 bytes
 .../textures/block/item_monitor/gray.png      | Bin 580 -> 580 bytes
 .../textures/block/item_monitor/green.png     | Bin 580 -> 580 bytes
 .../block/item_monitor/light_blue.png         | Bin 580 -> 580 bytes
 .../block/item_monitor/light_gray.png         | Bin 580 -> 580 bytes
 .../textures/block/item_monitor/lime.png      | Bin 580 -> 580 bytes
 .../textures/block/item_monitor/magenta.png   | Bin 580 -> 580 bytes
 .../textures/block/item_monitor/orange.png    | Bin 580 -> 580 bytes
 .../textures/block/item_monitor/pink.png      | Bin 580 -> 580 bytes
 .../textures/block/item_monitor/purple.png    | Bin 580 -> 580 bytes
 .../textures/block/item_monitor/red.png       | Bin 580 -> 580 bytes
 .../textures/block/item_monitor/white.png     | Bin 607 -> 580 bytes
 .../textures/block/item_monitor/yellow.png    | Bin 580 -> 580 bytes
 .../textures/block/item_monitor_mask.png      | Bin 956 -> 954 bytes
 .../textures/block/matter_panel/black.png     | Bin 0 -> 635 bytes
 .../textures/block/matter_panel/blue.png      | Bin 0 -> 635 bytes
 .../textures/block/matter_panel/brown.png     | Bin 0 -> 635 bytes
 .../textures/block/matter_panel/cyan.png      | Bin 0 -> 635 bytes
 .../textures/block/matter_panel/gray.png      | Bin 0 -> 635 bytes
 .../textures/block/matter_panel/green.png     | Bin 0 -> 635 bytes
 .../block/matter_panel/light_blue.png         | Bin 0 -> 635 bytes
 .../block/matter_panel/light_gray.png         | Bin 0 -> 635 bytes
 .../textures/block/matter_panel/lime.png      | Bin 0 -> 635 bytes
 .../textures/block/matter_panel/magenta.png   | Bin 0 -> 635 bytes
 .../textures/block/matter_panel/orange.png    | Bin 0 -> 635 bytes
 .../textures/block/matter_panel/pink.png      | Bin 0 -> 635 bytes
 .../textures/block/matter_panel/purple.png    | Bin 0 -> 635 bytes
 .../textures/block/matter_panel/red.png       | Bin 0 -> 635 bytes
 .../textures/block/matter_panel/white.png     | Bin 0 -> 635 bytes
 .../textures/block/matter_panel/yellow.png    | Bin 0 -> 635 bytes
 .../textures/block/matter_panel_mask.png      | Bin 0 -> 1053 bytes
 .../block/storage_power_supplier/black.png    | Bin 0 -> 672 bytes
 .../block/storage_power_supplier/blue.png     | Bin 0 -> 672 bytes
 .../block/storage_power_supplier/brown.png    | Bin 0 -> 672 bytes
 .../block/storage_power_supplier/cyan.png     | Bin 0 -> 672 bytes
 .../block/storage_power_supplier/gray.png     | Bin 0 -> 672 bytes
 .../block/storage_power_supplier/green.png    | Bin 0 -> 672 bytes
 .../storage_power_supplier/light_blue.png     | Bin 0 -> 672 bytes
 .../storage_power_supplier/light_gray.png     | Bin 0 -> 672 bytes
 .../block/storage_power_supplier/lime.png     | Bin 0 -> 672 bytes
 .../block/storage_power_supplier/magenta.png  | Bin 0 -> 672 bytes
 .../block/storage_power_supplier/orange.png   | Bin 0 -> 672 bytes
 .../block/storage_power_supplier/pink.png     | Bin 0 -> 672 bytes
 .../block/storage_power_supplier/purple.png   | Bin 0 -> 672 bytes
 .../block/storage_power_supplier/red.png      | Bin 0 -> 672 bytes
 .../block/storage_power_supplier/white.png    | Bin 0 -> 669 bytes
 .../block/storage_power_supplier/yellow.png   | Bin 0 -> 672 bytes
 .../block/storage_power_supplier_mask.png     | Bin 0 -> 1221 bytes
 107 files changed, 190 insertions(+), 175 deletions(-)
 delete mode 100644 src/main/resources/assets/overdrive_that_matters/blockstates/matter_panel.json
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/black.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/blue.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/brown.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/cyan.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/gray.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/green.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/light_blue.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/light_gray.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/lime.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/magenta.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/orange.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/pink.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/purple.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/red.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/white.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/yellow.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/android_charger_mask.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/black.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/blue.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/brown.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/cyan.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/gray.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/green.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/light_blue.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/light_gray.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/lime.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/magenta.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/orange.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/pink.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/purple.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/red.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/white.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/yellow.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer_mask.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/black.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/blue.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/brown.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/cyan.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/gray.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/green.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/light_blue.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/light_gray.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/lime.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/magenta.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/orange.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/pink.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/purple.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/red.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/white.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/yellow.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel_mask.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/black.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/blue.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/brown.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/cyan.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/gray.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/green.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/light_blue.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/light_gray.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/lime.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/magenta.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/orange.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/pink.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/purple.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/red.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/white.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/yellow.png
 create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier_mask.png

diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt
index 7b2d4d3b7..942edb0de 100644
--- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt
+++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt
@@ -106,7 +106,7 @@ fun addMachineAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
 		russianName = "Сканируем вещи которые материальны")
 	val decomposer = CraftEntry(MItems.MATTER_DECOMPOSER.values, "Decaying the Atoms", "Keep your limbs outside of the working chamber at all times",
 		russianName = "Разлагаем атомы", russianSuffix = "Во всех ситуациях держите свои конечности вне рабочей камеры")
-	val panel = CraftEntry(MItems.MATTER_PANEL, "Indexing the Library",
+	val panel = CraftEntry(MItems.MATTER_PANEL.values, "Indexing the Library",
 		russianName = "Индексируем библиотеку")
 	val replicator = CraftEntry(MItems.MATTER_REPLICATOR.values, "Cook with (Im)Perfection", "Now let's bake some perfect bread",
 		russianName = "Повар с (не) идеальностями", russianSuffix = "А теперь давайте выпечем немного идеального хлеба")
@@ -182,7 +182,7 @@ fun addMachineAdvancements(serializer: Consumer<AdvancementHolder>, lang: Matter
 		russianSuffix = "Только пользоваться этим устройством могут вёдра с болтами",
 		englishSuffix = "Except only buckets of bolts can use this thing")
 
-	val charger = CraftEntry(MItems.ANDROID_CHARGER, "Android Home Router",
+	val charger = CraftEntry(MItems.ANDROID_CHARGER.values, "Android Home Router",
 		russianName = "Домашняя страница андроидов")
 
 	station.make(serializer, press, translation).also {
diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/BlockModels.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/BlockModels.kt
index 56051f317..70c9388cb 100644
--- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/BlockModels.kt
+++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/BlockModels.kt
@@ -18,6 +18,15 @@ fun addBlockModels(provider: MatteryBlockModelProvider) {
 		colored("matter_capacitor_bank", listOf("1", "particle"), "mattercapacitorbank_frame")
 		colored("battery_bank", listOf("1", "particle"), "batterybank_frame")
 
+		colored("android_charger", "_base", listOf("0", "particle"))
+		colored("android_charger", "_middle", listOf("0", "particle"))
+		colored("android_charger", "_top", listOf("0", "particle"))
+
+		colored("storage_power_supplier", listOf("0", "particle"))
+		colored("matter_panel", listOf("texture", "particle"))
+		colored("drive_viewer", "_idle", listOf("texture", "particle"))
+		colored("drive_viewer", "_working", listOf("texture", "particle"))
+
 		coloredMachineCombined("plate_press", "plate_press2", listOf("0", "particle"))
 		coloredMachineCombined("twin_plate_press", "plate_press2", listOf("0", "particle"))
 
diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/BlockStates.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/BlockStates.kt
index 5d1e53aca..70bacd72d 100644
--- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/BlockStates.kt
+++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/BlockStates.kt
@@ -46,15 +46,17 @@ fun addBlockStates(provider: MatteryBlockStateProvider) {
 			}
 		}
 
-		with(provider.getMultipartBuilder(MBlocks.ANDROID_CHARGER)) {
-			for (dir in BlockRotationFreedom.HORIZONTAL.possibleValues) {
-				for (part in AndroidChargerBlock.PART.possibleValues) {
-					part().modelFile(provider.models().getExistingFile(modLocation("block/${MNames.ANDROID_CHARGER}_${part.serializedName}")))
-						.rotationY(dir.front.yRotationBlockstateNorth())
-						.addModel()
-						.condition(AndroidChargerBlock.PART, part)
-						.condition(BlockRotationFreedom.HORIZONTAL.property, dir)
-						.end()
+		for (block in MBlocks.ANDROID_CHARGER.values) {
+			with(provider.getMultipartBuilder(block)) {
+				for (dir in BlockRotationFreedom.HORIZONTAL.possibleValues) {
+					for (part in AndroidChargerBlock.PART.possibleValues) {
+						part().modelFile(provider.models().getExistingFile(modLocation("block/${block.registryName!!.path}_${part.serializedName}")))
+							.rotationY(dir.front.yRotationBlockstateNorth())
+							.addModel()
+							.condition(AndroidChargerBlock.PART, part)
+							.condition(BlockRotationFreedom.HORIZONTAL.property, dir)
+							.end()
+					}
 				}
 			}
 		}
@@ -104,7 +106,8 @@ fun addBlockStates(provider: MatteryBlockStateProvider) {
 	provider.block(MBlocks.POWERED_FURNACE.values)
 	provider.block(MBlocks.POWERED_SMOKER.values)
 
-	provider.block(MBlocks.STORAGE_POWER_SUPPLIER)
+	provider.block(MBlocks.STORAGE_POWER_SUPPLIER.values)
+	provider.block(MBlocks.MATTER_PANEL.values)
 	provider.block(MBlocks.MATTER_RECYCLER.values)
 	provider.block(MBlocks.MATTER_RECONSTRUCTOR.values)
 	provider.block(MBlocks.ENERGY_SERVO)
diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/ComplexBlockStates.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/ComplexBlockStates.kt
index dbadd096c..730923d29 100644
--- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/ComplexBlockStates.kt
+++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/ComplexBlockStates.kt
@@ -11,22 +11,24 @@ import ru.dbotthepony.mc.otm.datagen.modLocation
 import ru.dbotthepony.mc.otm.registry.MBlocks
 
 fun addComplexBlockStates(provider: MatteryBlockStateProvider) {
-	with(provider.getMultipartBuilder(MBlocks.DRIVE_VIEWER)) {
-		for (facing in BlockRotationFreedom.HORIZONTAL.possibleValues) {
-			part()
-				.modelFile(provider.models().getExistingFile(modLocation("block/drive_viewer_drive_part")))
-				.rotationY(facing.front.yRotationBlockstateNorth())
-				.addModel()
-				.condition(BlockRotationFreedom.HORIZONTAL.property, facing)
-				.condition(DriveViewerBlock.DRIVE_PRESENT, true)
-
-			for (workState in WorkerState.SEMI_WORKER_STATE.possibleValues) {
+	for (block in MBlocks.DRIVE_VIEWER.values) {
+		with(provider.getMultipartBuilder(block)) {
+			for (facing in BlockRotationFreedom.HORIZONTAL.possibleValues) {
 				part()
-					.modelFile(provider.models().getExistingFile(modLocation("block/drive_viewer_${workState.name.lowercase()}")))
+					.modelFile(provider.models().getExistingFile(modLocation("block/drive_viewer_drive_part")))
 					.rotationY(facing.front.yRotationBlockstateNorth())
 					.addModel()
-					.condition(WorkerState.SEMI_WORKER_STATE, workState)
 					.condition(BlockRotationFreedom.HORIZONTAL.property, facing)
+					.condition(DriveViewerBlock.DRIVE_PRESENT, true)
+
+				for (workState in WorkerState.SEMI_WORKER_STATE.possibleValues) {
+					part()
+						.modelFile(provider.models().getExistingFile(modLocation("block/drive_viewer_${workState.name.lowercase()}")))
+						.rotationY(facing.front.yRotationBlockstateNorth())
+						.addModel()
+						.condition(WorkerState.SEMI_WORKER_STATE, workState)
+						.condition(BlockRotationFreedom.HORIZONTAL.property, facing)
+				}
 			}
 		}
 	}
diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/ItemModels.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/ItemModels.kt
index 24c4e1784..cd6b384e7 100644
--- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/ItemModels.kt
+++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/ItemModels.kt
@@ -183,10 +183,17 @@ fun addItemModels(provider: MatteryItemModelProvider) {
 
 	provider.coloredWithBaseBlock(MItems.PLATE_PRESS, "plate_press", "_idle")
 	provider.coloredWithBaseBlock(MItems.TWIN_PLATE_PRESS, "twin_plate_press", "_idle")
-	provider.block(MItems.STORAGE_POWER_SUPPLIER, "storage_power_supplier")
+	provider.coloredWithBaseBlock(MItems.STORAGE_POWER_SUPPLIER, "storage_power_supplier")
 	provider.coloredWithBaseBlock(MItems.MATTER_RECYCLER, "matter_recycler", "_idle")
 	provider.coloredWithBaseBlock(MItems.COBBLESTONE_GENERATOR, "cobblestone_generator")
 
+	for (dye in DyeColor.entries) {
+		provider.exec {
+			provider.withExistingParent("android_charger_${dye.name.lowercase()}", modLocation("item/android_charger")).texture("0", modLocation("block/android_charger/${dye.name.lowercase()}"))
+			provider.withExistingParent("matter_panel_${dye.name.lowercase()}", modLocation("item/matter_panel")).texture("texture", modLocation("block/matter_panel/${dye.name.lowercase()}"))
+		}
+	}
+
 	provider.block(MItems.STORAGE_BUS)
 	provider.block(MItems.STORAGE_IMPORTER)
 	provider.block(MItems.STORAGE_EXPORTER)
diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt
index 912698d02..927636f6f 100644
--- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt
+++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt
@@ -417,18 +417,18 @@ private fun death(provider: MatteryLanguageProvider) {
 private fun blocks(provider: MatteryLanguageProvider) {
 	with(provider.english) {
 		addBlock(MBlocks.ANDROID_STATION.values, "Android Station")
-		add(MBlocks.ANDROID_CHARGER, "Wireless Charger")
-		add(MBlocks.ANDROID_CHARGER, "desc", "Charges nearby androids and exopacks")
+		addBlock(MBlocks.ANDROID_CHARGER.values, "Wireless Charger")
+		addBlock(MBlocks.ANDROID_CHARGER.values, "desc", "Charges nearby androids and exopacks")
 		addBlock(MBlocks.BATTERY_BANK.values, "Battery Bank")
 		addBlock(MBlocks.MATTER_DECOMPOSER.values, "Matter Decomposer")
 		addBlock(MBlocks.MATTER_CAPACITOR_BANK.values, "Matter Capacitor Bank")
 		add(MBlocks.MATTER_CABLE, "Matter Network Cable")
 		add(MBlocks.PATTERN_STORAGE, "Pattern Storage")
 		addBlock(MBlocks.MATTER_SCANNER.values, "Matter Scanner")
-		add(MBlocks.MATTER_PANEL, "Pattern Monitor")
+		addBlock(MBlocks.MATTER_PANEL.values, "Pattern Monitor")
 		addBlock(MBlocks.MATTER_REPLICATOR.values, "Matter Replicator")
 		addBlock(MBlocks.MATTER_BOTTLER.values, "Matter Bottler")
-		add(MBlocks.DRIVE_VIEWER, "Drive Viewer")
+		addBlock(MBlocks.DRIVE_VIEWER.values, "Drive Viewer")
 		add(MBlocks.BLACK_HOLE, "Local Anomalous Spacetime Dilation Singular Point")
 		addBlock(MBlocks.COBBLESTONE_GENERATOR.values, "Cobblestone Generator")
 		add(MBlocks.INFINITE_WATER_SOURCE, "Infinite Water Source")
@@ -486,7 +486,7 @@ private fun blocks(provider: MatteryLanguageProvider) {
 		add(MBlocks.TRITANIUM_RAW_BLOCK, "Raw Tritanium Block")
 
 		add(MBlocks.STORAGE_CABLE, "Storage Cable")
-		add(MBlocks.STORAGE_POWER_SUPPLIER, "Storage Power Supplier")
+		addBlock(MBlocks.STORAGE_POWER_SUPPLIER.values, "Storage Power Supplier")
 		add(MBlocks.STORAGE_BUS, "Storage Bus")
 		add(MBlocks.STORAGE_IMPORTER, "Storage Importer")
 		add(MBlocks.STORAGE_EXPORTER, "Storage Exporter")
diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/Russian.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/Russian.kt
index 33373595b..3dc3f7820 100644
--- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/Russian.kt
+++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/Russian.kt
@@ -419,18 +419,18 @@ private fun death(provider: MatteryLanguageProvider) {
 private fun blocks(provider: MatteryLanguageProvider) {
 	with(provider.russian) {
 		addBlock(MBlocks.ANDROID_STATION.values, "Станция андроидов")
-		add(MBlocks.ANDROID_CHARGER, "Беспроводной зарядник")
-		add(MBlocks.ANDROID_CHARGER, "desc", "Заряжает ближайших андроидов и экзопаки")
+		addBlock(MBlocks.ANDROID_CHARGER.values, "Беспроводной зарядник")
+		addBlock(MBlocks.ANDROID_CHARGER.values, "desc", "Заряжает ближайших андроидов и экзопаки")
 		addBlock(MBlocks.BATTERY_BANK.values, "Банк аккумуляторов")
 		addBlock(MBlocks.MATTER_DECOMPOSER.values, "Декомпозитор материи")
 		addBlock(MBlocks.MATTER_CAPACITOR_BANK.values, "Банк накопителей материи")
 		add(MBlocks.MATTER_CABLE, "Кабель сети материи")
 		add(MBlocks.PATTERN_STORAGE, "Хранилище шаблонов")
 		addBlock(MBlocks.MATTER_SCANNER.values, "Сканер материи")
-		add(MBlocks.MATTER_PANEL, "Монитор шаблонов")
+		addBlock(MBlocks.MATTER_PANEL.values, "Монитор шаблонов")
 		addBlock(MBlocks.MATTER_REPLICATOR.values, "Репликатор материи")
 		addBlock(MBlocks.MATTER_BOTTLER.values, "Бутилировщик материи")
-		add(MBlocks.DRIVE_VIEWER, "Просмотрщик дисков конденсации")
+		addBlock(MBlocks.DRIVE_VIEWER.values, "Просмотрщик дисков конденсации")
 		add(MBlocks.BLACK_HOLE, "Локализированная сингулярная точка аномального искажения пространства-времени")
 		addBlock(MBlocks.COBBLESTONE_GENERATOR.values, "Генератор булыжника")
 		add(MBlocks.INFINITE_WATER_SOURCE, "Неиссякаемый источник воды")
@@ -488,7 +488,7 @@ private fun blocks(provider: MatteryLanguageProvider) {
 		add(MBlocks.TRITANIUM_RAW_BLOCK, "Блок рудного тритана")
 
 		add(MBlocks.STORAGE_CABLE, "Кабель хранилища")
-		add(MBlocks.STORAGE_POWER_SUPPLIER, "Подстанция сети хранилища")
+		addBlock(MBlocks.STORAGE_POWER_SUPPLIER.values, "Подстанция сети хранилища")
 		add(MBlocks.STORAGE_BUS, "Шина хранилища")
 		add(MBlocks.STORAGE_IMPORTER, "Импортер хранилища")
 		add(MBlocks.STORAGE_EXPORTER, "Экспортер хранилища")
diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTablesData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTablesData.kt
index ae5ead785..c6d6db337 100644
--- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTablesData.kt
+++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTablesData.kt
@@ -144,14 +144,14 @@ fun addLootTables(lootTables: LootTables) {
 	lootTables.tile(MBlocks.HOLO_SIGN, "isLocked")
 	lootTables.tile(MBlocks.STORAGE_CABLE)
 	lootTables.tile(MBlocks.ANDROID_STATION.values)
-	lootTables.tile(MBlocks.ANDROID_CHARGER)
+	lootTables.tile(MBlocks.ANDROID_CHARGER.values)
 	lootTables.tile(MBlocks.BATTERY_BANK.values)
-	lootTables.tile(MBlocks.DRIVE_VIEWER)
+	lootTables.tile(MBlocks.DRIVE_VIEWER.values)
 
 	lootTables.tile(MBlocks.STORAGE_BUS)
 	lootTables.tile(MBlocks.STORAGE_IMPORTER)
 	lootTables.tile(MBlocks.STORAGE_EXPORTER)
-	lootTables.tile(MBlocks.STORAGE_POWER_SUPPLIER)
+	lootTables.tile(MBlocks.STORAGE_POWER_SUPPLIER.values)
 	lootTables.tile(MBlocks.DRIVE_RACK)
 
 	lootTables.tile(MBlocks.MATTER_DECOMPOSER.values)
@@ -165,7 +165,7 @@ fun addLootTables(lootTables: LootTables) {
 	lootTables.tile(MBlocks.POWERED_SMOKER.values)
 	lootTables.tile(MBlocks.POWERED_BLAST_FURNACE.values)
 
-	lootTables.tile(MBlocks.MATTER_PANEL)
+	lootTables.tile(MBlocks.MATTER_PANEL.values)
 	lootTables.tile(MBlocks.PATTERN_STORAGE)
 	lootTables.tile(MBlocks.MATTER_CAPACITOR_BANK.values)
 	lootTables.tile(MBlocks.MATTER_BOTTLER.values)
diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt
index 0075aa79c..6384439fb 100644
--- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt
+++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt
@@ -127,6 +127,10 @@ class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(eve
 		return colored(modelName, "", textureKeys.associateWith { modelName })
 	}
 
+	fun colored(modelName: String, suffix: String, textureKeys: Collection<String>) {
+		return colored(modelName, suffix, textureKeys.associateWith { modelName })
+	}
+
 	fun coloredMachineCombined(modelName: String, textureName: String, textureKeys: Collection<String>) {
 		for (state in listOf("_idle", "_error", "_working")) {
 			colored(modelName, state, textureKeys.associateWith { textureName })
diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/CraftingTableRecipes.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/CraftingTableRecipes.kt
index 179217e2f..1b13af09d 100644
--- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/CraftingTableRecipes.kt
+++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/CraftingTableRecipes.kt
@@ -328,7 +328,7 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) {
 		.build(consumer)
 
 	// беспроводной зарядник андроидов
-	MatteryRecipe(MItems.ANDROID_CHARGER, category = machinesCategory)
+	MatteryRecipe(MItems.ANDROID_CHARGER[null]!!, category = machinesCategory)
 		.row(MItems.ELECTRIC_PARTS, MItems.QUANTUM_TRANSCEIVER, MItems.ELECTRIC_PARTS)
 		.row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES)
 		.row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES)
diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/PainterRecipes.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/PainterRecipes.kt
index 88e9b0fd9..268946d80 100644
--- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/PainterRecipes.kt
+++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/PainterRecipes.kt
@@ -289,6 +289,10 @@ fun addPainterRecipes(consumer: RecipeOutput) {
 		MItems.POWERED_BLAST_FURNACE,
 		MItems.MATTER_RECYCLER,
 		MItems.ANDROID_STATION,
+		MItems.STORAGE_POWER_SUPPLIER,
+		MItems.DRIVE_VIEWER,
+		MItems.ANDROID_CHARGER,
+		MItems.MATTER_PANEL,
 	)
 
 	for (list in blocks) {
diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/Tags.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/Tags.kt
index 5042d8d1c..6a05f734b 100644
--- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/Tags.kt
+++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/Tags.kt
@@ -186,7 +186,7 @@ fun addTags(tagsProvider: TagsProvider) {
 		*MBlocks.MATTER_CAPACITOR_BANK.values.toTypedArray(),
 		MBlocks.PATTERN_STORAGE,
 		*MBlocks.MATTER_SCANNER.values.toTypedArray(),
-		MBlocks.MATTER_PANEL,
+		*MBlocks.MATTER_PANEL.values.toTypedArray(),
 		*MBlocks.MATTER_REPLICATOR.values.toTypedArray(),
 		*MBlocks.MATTER_BOTTLER.values.toTypedArray(),
 		MBlocks.ENERGY_COUNTER,
@@ -204,10 +204,10 @@ fun addTags(tagsProvider: TagsProvider) {
 		MBlocks.STORAGE_IMPORTER,
 		MBlocks.STORAGE_EXPORTER,
 
-		MBlocks.DRIVE_VIEWER,
+		*MBlocks.DRIVE_VIEWER.values.toTypedArray(),
 		MBlocks.DRIVE_RACK,
 		*MBlocks.ITEM_MONITOR.values.toTypedArray(),
-		MBlocks.STORAGE_POWER_SUPPLIER,
+		*MBlocks.STORAGE_POWER_SUPPLIER.values.toTypedArray(),
 
 		MBlocks.PHANTOM_ATTRACTOR,
 		MBlocks.ENERGY_SERVO,
@@ -223,7 +223,7 @@ fun addTags(tagsProvider: TagsProvider) {
 		*MBlocks.ESSENCE_STORAGE.values.toTypedArray(),
 		*MBlocks.MATTER_RECONSTRUCTOR.values.toTypedArray(),
 		MBlocks.FLUID_TANK,
-		MBlocks.ANDROID_CHARGER,
+		*MBlocks.ANDROID_CHARGER.values.toTypedArray(),
 	), Tiers.IRON)
 
 	tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_ANVIL, Tiers.IRON)
diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterPanelBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterPanelBlock.kt
index fbabb31e2..f8534819a 100644
--- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterPanelBlock.kt
+++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterPanelBlock.kt
@@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableMap
 import net.minecraft.world.level.block.EntityBlock
 import net.minecraft.core.BlockPos
 import net.minecraft.core.Direction
+import net.minecraft.world.item.DyeColor
 import net.minecraft.world.level.block.state.BlockState
 import net.minecraft.world.level.block.entity.BlockEntity
 import ru.dbotthepony.mc.otm.block.entity.matter.MatterPanelBlockEntity
@@ -17,7 +18,7 @@ import ru.dbotthepony.mc.otm.core.get
 import ru.dbotthepony.mc.otm.core.math.BlockRotation
 import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom
 
-class MatterPanelBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock {
+class MatterPanelBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock {
 	override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity {
 		return MatterPanelBlockEntity(blockPos, blockState)
 	}
diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveViewerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveViewerBlock.kt
index f0c35ec79..7dd657190 100644
--- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveViewerBlock.kt
+++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveViewerBlock.kt
@@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.block.storage
 
 import net.minecraft.core.BlockPos
 import net.minecraft.network.chat.Component
+import net.minecraft.world.item.DyeColor
 import net.minecraft.world.item.ItemStack
 import net.minecraft.world.item.TooltipFlag
 import net.minecraft.world.item.context.BlockPlaceContext
@@ -27,7 +28,7 @@ import ru.dbotthepony.mc.otm.core.get
 import ru.dbotthepony.mc.otm.registry.MBlockEntities
 import ru.dbotthepony.mc.otm.shapes.BlockShapes
 
-class DriveViewerBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock {
+class DriveViewerBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock {
 	override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity {
 		return DriveViewerBlockEntity(blockPos, blockState)
 	}
diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StoragePowerSupplierBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StoragePowerSupplierBlock.kt
index 18562a541..90ab90cdb 100644
--- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StoragePowerSupplierBlock.kt
+++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StoragePowerSupplierBlock.kt
@@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.block.storage
 
 import net.minecraft.core.BlockPos
 import net.minecraft.network.chat.Component
+import net.minecraft.world.item.DyeColor
 import net.minecraft.world.item.ItemStack
 import net.minecraft.world.item.TooltipFlag
 import net.minecraft.world.level.BlockGetter
@@ -22,7 +23,7 @@ import ru.dbotthepony.mc.otm.core.get
 import ru.dbotthepony.mc.otm.registry.MBlockEntities
 import ru.dbotthepony.mc.otm.shapes.BlockShapes
 
-class StoragePowerSupplierBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock {
+class StoragePowerSupplierBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock {
 	override fun newBlockEntity(p_153215_: BlockPos, p_153216_: BlockState): BlockEntity {
 		return StoragePowerSupplierBlockEntity(p_153215_, p_153216_)
 	}
diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AndroidChargerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AndroidChargerBlock.kt
index 432923221..d26a2b541 100644
--- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AndroidChargerBlock.kt
+++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AndroidChargerBlock.kt
@@ -6,6 +6,7 @@ import net.minecraft.network.chat.Component
 import net.minecraft.util.StringRepresentable
 import net.minecraft.world.entity.LivingEntity
 import net.minecraft.world.entity.player.Player
+import net.minecraft.world.item.DyeColor
 import net.minecraft.world.item.ItemStack
 import net.minecraft.world.item.TooltipFlag
 import net.minecraft.world.item.context.BlockPlaceContext
@@ -37,7 +38,7 @@ import ru.dbotthepony.mc.otm.core.math.plus
 import ru.dbotthepony.mc.otm.oncePre
 import ru.dbotthepony.mc.otm.shapes.BlockShapes
 
-class AndroidChargerBlock : RotatableMatteryBlock(Properties.of().destroyTime(2.5f).explosionResistance(40f).pushReaction(PushReaction.BLOCK).requiresCorrectToolForDrops()), EntityBlock {
+class AndroidChargerBlock(val color: DyeColor?) : RotatableMatteryBlock(Properties.of().destroyTime(2.5f).explosionResistance(40f).pushReaction(PushReaction.BLOCK).requiresCorrectToolForDrops()), EntityBlock {
 	enum class Type : StringRepresentable {
 		BASE,
 		MIDDLE,
diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt
index 9b3ff14b8..c6bddbba5 100644
--- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt
+++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt
@@ -11,15 +11,15 @@ operator fun <T : Any> RegistryObject<T>.getValue(thisRef: Any, property: KPrope
 	return get()
 }
 
-internal fun <T, R : T> DeferredRegister<T>.colored(prefix: String, factory: (color: DyeColor, name: String) -> R): Map<DyeColor, R> {
-	return SupplierMap(MRegistry.DYE_ORDER.map { it to register(prefix + "_" + it.name.lowercase()) { factory.invoke(it, prefix + "_" + it.name.lowercase()) } })
+internal fun <T, R : T> DeferredRegister<T>.colored(prefix: String, factory: (color: DyeColor) -> R): Map<DyeColor, R> {
+	return SupplierMap(MRegistry.DYE_ORDER.map { it to register(prefix + "_" + it.name.lowercase()) { factory.invoke(it) } })
 }
 
-internal fun <T, R : T> DeferredRegister<T>.coloredWithBase(prefix: String, factory: (color: DyeColor?, name: String) -> R): Map<DyeColor?, R> {
+internal fun <T, R : T> DeferredRegister<T>.coloredWithBase(prefix: String, factory: (color: DyeColor?) -> R): Map<DyeColor?, R> {
 	val values = ArrayList<Pair<DyeColor?, Supplier<R>>>()
 
-	values.add(null to register(prefix) { factory.invoke(null, prefix) })
-	MRegistry.DYE_ORDER.forEach { values.add(it to register(prefix + "_" + it.name.lowercase()) { factory.invoke(it, prefix + "_" + it.name.lowercase()) }) }
+	values.add(null to register(prefix) { factory.invoke(null) })
+	MRegistry.DYE_ORDER.forEach { values.add(it to register(prefix + "_" + it.name.lowercase()) { factory.invoke(it) }) }
 
 	return SupplierMap(values)
 }
diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt
index d79c1d9a9..4795cabdc 100644
--- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt
+++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt
@@ -44,44 +44,48 @@ object MBlockEntities {
 		return registry.register(name) { BlockEntityType.Builder.of(factory, *blocks.map { it.get() }.toTypedArray()).build(null) }
 	}
 
-	val ANDROID_STATION 		by register(MNames.ANDROID_STATION, ::AndroidStationBlockEntity, *MBlocks.ANDROID_STATION.asSupplierArray())
-	val BATTERY_BANK 			by register(MNames.BATTERY_BANK, ::BatteryBankBlockEntity, *MBlocks.BATTERY_BANK.asSupplierArray())
-	val MATTER_DECOMPOSER 		by register(MNames.MATTER_DECOMPOSER, ::MatterDecomposerBlockEntity, *MBlocks.MATTER_DECOMPOSER.asSupplierArray())
-	val MATTER_CAPACITOR_BANK 	by register(MNames.MATTER_CAPACITOR_BANK, ::MatterCapacitorBankBlockEntity, *MBlocks.MATTER_CAPACITOR_BANK.asSupplierArray())
+	private fun <T : BlockEntity> register(name: String, factory: BlockEntityType.BlockEntitySupplier<T>, blocks: Map<*, Block>): RegistryObject<BlockEntityType<T>> {
+		return registry.register(name) { BlockEntityType.Builder.of(factory, *blocks.values.toTypedArray()).build(null) }
+	}
+
+	val ANDROID_STATION 		by register(MNames.ANDROID_STATION, ::AndroidStationBlockEntity, MBlocks.ANDROID_STATION)
+	val BATTERY_BANK 			by register(MNames.BATTERY_BANK, ::BatteryBankBlockEntity, MBlocks.BATTERY_BANK)
+	val MATTER_DECOMPOSER 		by register(MNames.MATTER_DECOMPOSER, ::MatterDecomposerBlockEntity, MBlocks.MATTER_DECOMPOSER)
+	val MATTER_CAPACITOR_BANK 	by register(MNames.MATTER_CAPACITOR_BANK, ::MatterCapacitorBankBlockEntity, MBlocks.MATTER_CAPACITOR_BANK)
 	val MATTER_CABLE 			by register(MNames.MATTER_CABLE, ::MatterCableBlockEntity, MBlocks::MATTER_CABLE)
 	val STORAGE_CABLE 			by register(MNames.STORAGE_CABLE, ::StorageCableBlockEntity, MBlocks::STORAGE_CABLE)
 	val PATTERN_STORAGE 		by register(MNames.PATTERN_STORAGE, ::PatternStorageBlockEntity, MBlocks::PATTERN_STORAGE)
-	val MATTER_SCANNER 			by register(MNames.MATTER_SCANNER, ::MatterScannerBlockEntity, *MBlocks.MATTER_SCANNER.asSupplierArray())
-	val MATTER_PANEL 			by register(MNames.MATTER_PANEL, ::MatterPanelBlockEntity, MBlocks::MATTER_PANEL)
-	val MATTER_REPLICATOR 		by register(MNames.MATTER_REPLICATOR, ::MatterReplicatorBlockEntity, *MBlocks.MATTER_REPLICATOR.asSupplierArray())
-	val MATTER_BOTTLER 			by register(MNames.MATTER_BOTTLER, ::MatterBottlerBlockEntity, *MBlocks.MATTER_BOTTLER.asSupplierArray())
-	val DRIVE_VIEWER 			by register(MNames.DRIVE_VIEWER, ::DriveViewerBlockEntity, MBlocks::DRIVE_VIEWER)
+	val MATTER_SCANNER 			by register(MNames.MATTER_SCANNER, ::MatterScannerBlockEntity, MBlocks.MATTER_SCANNER)
+	val MATTER_PANEL 			by register(MNames.MATTER_PANEL, ::MatterPanelBlockEntity, MBlocks.MATTER_PANEL)
+	val MATTER_REPLICATOR 		by register(MNames.MATTER_REPLICATOR, ::MatterReplicatorBlockEntity, MBlocks.MATTER_REPLICATOR)
+	val MATTER_BOTTLER 			by register(MNames.MATTER_BOTTLER, ::MatterBottlerBlockEntity, MBlocks.MATTER_BOTTLER)
+	val DRIVE_VIEWER 			by register(MNames.DRIVE_VIEWER, ::DriveViewerBlockEntity, MBlocks.DRIVE_VIEWER)
 	val BLACK_HOLE 				by register(MNames.BLACK_HOLE, ::BlackHoleBlockEntity, MBlocks::BLACK_HOLE)
-	val CARGO_CRATE				by register(MNames.CARGO_CRATE, ::CargoCrateBlockEntity, *MRegistry.CARGO_CRATES.blocks.asSupplierArray())
+	val CARGO_CRATE				by register(MNames.CARGO_CRATE, ::CargoCrateBlockEntity, MRegistry.CARGO_CRATES.blocks)
 	val DRIVE_RACK 				by register(MNames.DRIVE_RACK, ::DriveRackBlockEntity, MBlocks::DRIVE_RACK)
-	val ITEM_MONITOR 			by register(MNames.ITEM_MONITOR, ::ItemMonitorBlockEntity, *MBlocks.ITEM_MONITOR.asSupplierArray())
+	val ITEM_MONITOR 			by register(MNames.ITEM_MONITOR, ::ItemMonitorBlockEntity, MBlocks.ITEM_MONITOR)
 	val ENERGY_COUNTER 			by register(MNames.ENERGY_COUNTER, ::EnergyCounterBlockEntity, MBlocks::ENERGY_COUNTER)
 	val CHEMICAL_GENERATOR 		by register(MNames.CHEMICAL_GENERATOR, ::ChemicalGeneratorBlockEntity, MBlocks::CHEMICAL_GENERATOR)
-	val PLATE_PRESS 			by register(MNames.PLATE_PRESS, ::PlatePressBlockEntity, *MBlocks.PLATE_PRESS.asSupplierArray())
-	val TWIN_PLATE_PRESS 		by register(MNames.TWIN_PLATE_PRESS, { a, b -> PlatePressBlockEntity(a, b, true) }, *MBlocks.TWIN_PLATE_PRESS.asSupplierArray())
+	val PLATE_PRESS 			by register(MNames.PLATE_PRESS, ::PlatePressBlockEntity, MBlocks.PLATE_PRESS)
+	val TWIN_PLATE_PRESS 		by register(MNames.TWIN_PLATE_PRESS, { a, b -> PlatePressBlockEntity(a, b, true) }, MBlocks.TWIN_PLATE_PRESS)
 	val GRAVITATION_STABILIZER 	by register(MNames.GRAVITATION_STABILIZER, ::GravitationStabilizerBlockEntity, MBlocks::GRAVITATION_STABILIZER)
-	val MATTER_RECYCLER 		by register(MNames.MATTER_RECYCLER, ::MatterRecyclerBlockEntity, *MBlocks.MATTER_RECYCLER.asSupplierArray())
+	val MATTER_RECYCLER 		by register(MNames.MATTER_RECYCLER, ::MatterRecyclerBlockEntity, MBlocks.MATTER_RECYCLER)
 	val ENERGY_SERVO 			by register(MNames.ENERGY_SERVO, ::EnergyServoBlockEntity, MBlocks::ENERGY_SERVO)
-	val COBBLESTONE_GENERATOR 	by register(MNames.COBBLESTONE_GENERATOR, ::CobblerBlockEntity, *MBlocks.COBBLESTONE_GENERATOR.asSupplierArray())
-	val ESSENCE_STORAGE 		by register(MNames.ESSENCE_STORAGE, ::EssenceStorageBlockEntity, *MBlocks.ESSENCE_STORAGE.asSupplierArray())
-	val MATTER_RECONSTRUCTOR 	by register(MNames.MATTER_RECONSTRUCTOR, ::MatterReconstructorBlockEntity, *MBlocks.MATTER_RECONSTRUCTOR.asSupplierArray())
+	val COBBLESTONE_GENERATOR 	by register(MNames.COBBLESTONE_GENERATOR, ::CobblerBlockEntity, MBlocks.COBBLESTONE_GENERATOR)
+	val ESSENCE_STORAGE 		by register(MNames.ESSENCE_STORAGE, ::EssenceStorageBlockEntity, MBlocks.ESSENCE_STORAGE)
+	val MATTER_RECONSTRUCTOR 	by register(MNames.MATTER_RECONSTRUCTOR, ::MatterReconstructorBlockEntity, MBlocks.MATTER_RECONSTRUCTOR)
 	val FLUID_TANK 				by register(MNames.FLUID_TANK, ::FluidTankBlockEntity, MBlocks::FLUID_TANK)
-	val ANDROID_CHARGER 		by register(MNames.ANDROID_CHARGER, ::AndroidChargerBlockEntity, MBlocks::ANDROID_CHARGER)
-	val ANDROID_CHARGER_MIDDLE 	by register(MNames.ANDROID_CHARGER + "_middle", ::AndroidChargerMiddleBlockEntity, MBlocks::ANDROID_CHARGER)
-	val ANDROID_CHARGER_TOP 	by register(MNames.ANDROID_CHARGER + "_top", ::AndroidChargerTopBlockEntity, MBlocks::ANDROID_CHARGER)
+	val ANDROID_CHARGER 		by register(MNames.ANDROID_CHARGER, ::AndroidChargerBlockEntity, MBlocks.ANDROID_CHARGER)
+	val ANDROID_CHARGER_MIDDLE 	by register(MNames.ANDROID_CHARGER + "_middle", ::AndroidChargerMiddleBlockEntity, MBlocks.ANDROID_CHARGER)
+	val ANDROID_CHARGER_TOP 	by register(MNames.ANDROID_CHARGER + "_top", ::AndroidChargerTopBlockEntity, MBlocks.ANDROID_CHARGER)
 	val INFINITE_WATER_SOURCE 	by register(MNames.INFINITE_WATER_SOURCE, ::InfiniteWaterSourceBlockEntity, MBlocks::INFINITE_WATER_SOURCE)
 	val DEV_CHEST 				by register(MNames.DEV_CHEST, ::DevChestBlockEntity, MBlocks::DEV_CHEST)
 	val PAINTER 				by register(MNames.PAINTER, ::PainterBlockEntity, MBlocks::PAINTER)
 	val MATTER_ENTANGLER 		by register(MNames.MATTER_ENTANGLER, ::MatterEntanglerBlockEntity, MBlocks::MATTER_ENTANGLER)
 
-	val POWERED_FURNACE 		by register(MNames.POWERED_FURNACE, ::PoweredFurnaceBlockEntity, *MBlocks.POWERED_FURNACE.asSupplierArray())
-	val POWERED_BLAST_FURNACE 	by register(MNames.POWERED_BLAST_FURNACE, ::PoweredBlastFurnaceBlockEntity, *MBlocks.POWERED_BLAST_FURNACE.asSupplierArray())
-	val POWERED_SMOKER 			by register(MNames.POWERED_SMOKER, ::PoweredSmokerBlockEntity, *MBlocks.POWERED_SMOKER.asSupplierArray())
+	val POWERED_FURNACE 		by register(MNames.POWERED_FURNACE, ::PoweredFurnaceBlockEntity, MBlocks.POWERED_FURNACE)
+	val POWERED_BLAST_FURNACE 	by register(MNames.POWERED_BLAST_FURNACE, ::PoweredBlastFurnaceBlockEntity, MBlocks.POWERED_BLAST_FURNACE)
+	val POWERED_SMOKER 			by register(MNames.POWERED_SMOKER, ::PoweredSmokerBlockEntity, MBlocks.POWERED_SMOKER)
 
 	val ENERGY_CABLES: Map<CablesConfig.E, BlockEntityType<*>> = SupplierMap(CablesConfig.E.entries.map { conf ->
 		var selfFeed: Supplier<BlockEntityType<*>> = Supplier { TODO() }
@@ -89,10 +93,10 @@ object MBlockEntities {
 		conf to selfFeed
 	})
 
-	val STORAGE_BUS: BlockEntityType<StorageBusBlockEntity> by registry.register(MNames.STORAGE_BUS) { BlockEntityType.Builder.of(::StorageBusBlockEntity, MBlocks.STORAGE_BUS).build(null) }
-	val STORAGE_IMPORTER: BlockEntityType<StorageImporterBlockEntity> by registry.register(MNames.STORAGE_IMPORTER) { BlockEntityType.Builder.of(::StorageImporterBlockEntity, MBlocks.STORAGE_IMPORTER).build(null) }
-	val STORAGE_EXPORTER: BlockEntityType<StorageExporterBlockEntity> by registry.register(MNames.STORAGE_EXPORTER) { BlockEntityType.Builder.of(::StorageExporterBlockEntity, MBlocks.STORAGE_EXPORTER).build(null) }
-	val STORAGE_POWER_SUPPLIER: BlockEntityType<StoragePowerSupplierBlockEntity> by registry.register(MNames.STORAGE_POWER_SUPPLIER) { BlockEntityType.Builder.of(::StoragePowerSupplierBlockEntity, MBlocks.STORAGE_POWER_SUPPLIER).build(null) }
+	val STORAGE_BUS				by register(MNames.STORAGE_BUS, ::StorageBusBlockEntity, MBlocks::STORAGE_BUS)
+	val STORAGE_IMPORTER		by register(MNames.STORAGE_IMPORTER, ::StorageImporterBlockEntity, MBlocks::STORAGE_IMPORTER)
+	val STORAGE_EXPORTER		by register(MNames.STORAGE_EXPORTER, ::StorageExporterBlockEntity, MBlocks::STORAGE_EXPORTER)
+	val STORAGE_POWER_SUPPLIER	by register(MNames.STORAGE_POWER_SUPPLIER, ::StoragePowerSupplierBlockEntity, MBlocks.STORAGE_POWER_SUPPLIER)
 
 	val HOLO_SIGN: BlockEntityType<HoloSignBlockEntity> by registry.register(MNames.HOLO_SIGN) { BlockEntityType.Builder.of(::HoloSignBlockEntity, MBlocks.HOLO_SIGN).build(null) }
 
diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt
index 828c32f80..47b5931b3 100644
--- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt
+++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt
@@ -86,46 +86,46 @@ object MBlocks {
 		registry.register(bus)
 	}
 
-	val ANDROID_STATION = registry.coloredWithBase(MNames.ANDROID_STATION) { color, _ -> AndroidStationBlock(color) }
-	val ANDROID_CHARGER: Block by registry.register(MNames.ANDROID_CHARGER) { AndroidChargerBlock() }
-	val BATTERY_BANK = registry.coloredWithBase(MNames.BATTERY_BANK) { color, _ -> BatteryBankBlock(color) }
-	val MATTER_DECOMPOSER = registry.coloredWithBase(MNames.MATTER_DECOMPOSER) { color, _ -> MatterDecomposerBlock(color) }
-	val MATTER_CAPACITOR_BANK = registry.coloredWithBase(MNames.MATTER_CAPACITOR_BANK) { color, _ -> MatterCapacitorBankBlock(color) }
-	val MATTER_CABLE: Block by registry.register(MNames.MATTER_CABLE) { MatterCableBlock() }
-	val PATTERN_STORAGE: Block by registry.register(MNames.PATTERN_STORAGE) { PatternStorageBlock() }
-	val MATTER_SCANNER = registry.coloredWithBase(MNames.MATTER_SCANNER) { color, _ -> MatterScannerBlock(color) }
-	val MATTER_PANEL: Block by registry.register(MNames.MATTER_PANEL) { MatterPanelBlock() }
-	val MATTER_REPLICATOR = registry.coloredWithBase(MNames.MATTER_REPLICATOR) { color, _ -> MatterReplicatorBlock(color) }
-	val MATTER_BOTTLER = registry.coloredWithBase(MNames.MATTER_BOTTLER) { color, _ -> MatterBottlerBlock(color) }
-	val ENERGY_COUNTER: Block by registry.register(MNames.ENERGY_COUNTER) { EnergyCounterBlock() }
-	val CHEMICAL_GENERATOR: Block by registry.register(MNames.CHEMICAL_GENERATOR) { ChemicalGeneratorBlock() }
-	val PLATE_PRESS = registry.coloredWithBase(MNames.PLATE_PRESS) { color, _ -> PlatePressBlock(color) }
-	val TWIN_PLATE_PRESS = registry.coloredWithBase(MNames.TWIN_PLATE_PRESS) { color, _ -> PlatePressBlock(color, isTwin = true) }
-	val POWERED_FURNACE = registry.coloredWithBase(MNames.POWERED_FURNACE) { color, _ -> PoweredFurnaceBlock(color) }
-	val POWERED_BLAST_FURNACE = registry.coloredWithBase(MNames.POWERED_BLAST_FURNACE) { color, _ -> PoweredBlastFurnaceBlock(color) }
-	val POWERED_SMOKER = registry.coloredWithBase(MNames.POWERED_SMOKER) { color, _ -> PoweredSmokerBlock(color) }
-	val MATTER_RECYCLER = registry.coloredWithBase(MNames.MATTER_RECYCLER) { color, _ -> MatterRecyclerBlock(color) }
-	val ENERGY_SERVO: Block by registry.register(MNames.ENERGY_SERVO) { EnergyServoBlock() }
-	val COBBLESTONE_GENERATOR = registry.coloredWithBase(MNames.COBBLESTONE_GENERATOR) { color, _ -> CobblerBlock(color) }
-	val INFINITE_WATER_SOURCE: Block by registry.register(MNames.INFINITE_WATER_SOURCE) { InfiniteWaterSourceBlock() }
-	val ESSENCE_STORAGE = registry.coloredWithBase(MNames.ESSENCE_STORAGE) { color, _ -> EssenceStorageBlock(color) }
-	val MATTER_RECONSTRUCTOR = registry.coloredWithBase(MNames.MATTER_RECONSTRUCTOR) { color, _ -> MatterReconstructorBlock(color) }
-	val PAINTER: PainterBlock by registry.register(MNames.PAINTER) { PainterBlock() }
+	val ANDROID_STATION = registry.coloredWithBase(MNames.ANDROID_STATION, ::AndroidStationBlock)
+	val ANDROID_CHARGER = registry.coloredWithBase(MNames.ANDROID_CHARGER, ::AndroidChargerBlock)
+	val BATTERY_BANK = registry.coloredWithBase(MNames.BATTERY_BANK, ::BatteryBankBlock)
+	val MATTER_DECOMPOSER = registry.coloredWithBase(MNames.MATTER_DECOMPOSER, ::MatterDecomposerBlock)
+	val MATTER_CAPACITOR_BANK = registry.coloredWithBase(MNames.MATTER_CAPACITOR_BANK, ::MatterCapacitorBankBlock)
+	val MATTER_CABLE by registry.register(MNames.MATTER_CABLE, ::MatterCableBlock)
+	val PATTERN_STORAGE by registry.register(MNames.PATTERN_STORAGE, ::PatternStorageBlock)
+	val MATTER_SCANNER = registry.coloredWithBase(MNames.MATTER_SCANNER, ::MatterScannerBlock)
+	val MATTER_PANEL = registry.coloredWithBase(MNames.MATTER_PANEL, ::MatterPanelBlock)
+	val MATTER_REPLICATOR = registry.coloredWithBase(MNames.MATTER_REPLICATOR, ::MatterReplicatorBlock)
+	val MATTER_BOTTLER = registry.coloredWithBase(MNames.MATTER_BOTTLER, ::MatterBottlerBlock)
+	val ENERGY_COUNTER by registry.register(MNames.ENERGY_COUNTER, ::EnergyCounterBlock)
+	val CHEMICAL_GENERATOR by registry.register(MNames.CHEMICAL_GENERATOR, ::ChemicalGeneratorBlock)
+	val PLATE_PRESS = registry.coloredWithBase(MNames.PLATE_PRESS, ::PlatePressBlock)
+	val TWIN_PLATE_PRESS = registry.coloredWithBase(MNames.TWIN_PLATE_PRESS) { color -> PlatePressBlock(color, isTwin = true) }
+	val POWERED_FURNACE = registry.coloredWithBase(MNames.POWERED_FURNACE, ::PoweredFurnaceBlock)
+	val POWERED_BLAST_FURNACE = registry.coloredWithBase(MNames.POWERED_BLAST_FURNACE, ::PoweredBlastFurnaceBlock)
+	val POWERED_SMOKER = registry.coloredWithBase(MNames.POWERED_SMOKER, ::PoweredSmokerBlock)
+	val MATTER_RECYCLER = registry.coloredWithBase(MNames.MATTER_RECYCLER, ::MatterRecyclerBlock)
+	val ENERGY_SERVO by registry.register(MNames.ENERGY_SERVO, ::EnergyServoBlock)
+	val COBBLESTONE_GENERATOR = registry.coloredWithBase(MNames.COBBLESTONE_GENERATOR, ::CobblerBlock)
+	val INFINITE_WATER_SOURCE by registry.register(MNames.INFINITE_WATER_SOURCE) { InfiniteWaterSourceBlock() }
+	val ESSENCE_STORAGE = registry.coloredWithBase(MNames.ESSENCE_STORAGE, ::EssenceStorageBlock)
+	val MATTER_RECONSTRUCTOR = registry.coloredWithBase(MNames.MATTER_RECONSTRUCTOR, ::MatterReconstructorBlock)
+	val PAINTER by registry.register(MNames.PAINTER, ::PainterBlock)
 	val MATTER_ENTANGLER: MatterEntanglerBlock by registry.register(MNames.MATTER_ENTANGLER) { MatterEntanglerBlock() }
 
 	val ENERGY_CABLES: Map<CablesConfig.E, EnergyCableBlock> = SupplierMap(CablesConfig.E.entries.map { conf ->
 		conf to registry.register("${conf.name.lowercase()}_energy_cable") { EnergyCableBlock { a, b -> MBlockEntities.ENERGY_CABLES[conf]!!.create(a, b)!! } }
 	})
 
-	val STORAGE_BUS: Block by registry.register(MNames.STORAGE_BUS) { StorageBusBlock() }
-	val STORAGE_IMPORTER: Block by registry.register(MNames.STORAGE_IMPORTER) { StorageImporterBlock() }
-	val STORAGE_EXPORTER: Block by registry.register(MNames.STORAGE_EXPORTER) { StorageExporterBlock() }
+	val STORAGE_BUS: Block by registry.register(MNames.STORAGE_BUS, ::StorageBusBlock)
+	val STORAGE_IMPORTER: Block by registry.register(MNames.STORAGE_IMPORTER, ::StorageImporterBlock)
+	val STORAGE_EXPORTER: Block by registry.register(MNames.STORAGE_EXPORTER, ::StorageExporterBlock)
 
-	val DRIVE_VIEWER: Block by registry.register(MNames.DRIVE_VIEWER) { DriveViewerBlock() }
-	val DRIVE_RACK: Block by registry.register(MNames.DRIVE_RACK) { DriveRackBlock() }
-	val ITEM_MONITOR = registry.coloredWithBase(MNames.ITEM_MONITOR) { color, _ -> ItemMonitorBlock(color) }
-	val STORAGE_CABLE: Block by registry.register(MNames.STORAGE_CABLE) { StorageCableBlock() }
-	val STORAGE_POWER_SUPPLIER: Block by registry.register(MNames.STORAGE_POWER_SUPPLIER) { StoragePowerSupplierBlock() }
+	val DRIVE_VIEWER = registry.coloredWithBase(MNames.DRIVE_VIEWER, ::DriveViewerBlock)
+	val DRIVE_RACK: Block by registry.register(MNames.DRIVE_RACK, ::DriveRackBlock)
+	val ITEM_MONITOR = registry.coloredWithBase(MNames.ITEM_MONITOR, ::ItemMonitorBlock)
+	val STORAGE_CABLE: Block by registry.register(MNames.STORAGE_CABLE, ::StorageCableBlock)
+	val STORAGE_POWER_SUPPLIER = registry.coloredWithBase(MNames.STORAGE_POWER_SUPPLIER, ::StoragePowerSupplierBlock)
 
 	val DEBUG_EXPLOSION_SMALL: Block by registry.register(MNames.DEBUG_EXPLOSION_SMALL) { BlockExplosionDebugger() }
 	val DEBUG_SPHERE_POINTS: Block by registry.register(MNames.DEBUG_SPHERE_POINTS) { BlockSphereDebugger() }
@@ -218,11 +218,9 @@ object MBlocks {
 		TRITANIUM_ANVIL = SupplierList(anvils)
 	}
 
-	val TRITANIUM_DOOR: Map<DyeColor?, TritaniumDoorBlock> = registry.coloredWithBase(MNames.TRITANIUM_DOOR) { color, _ ->
-		TritaniumDoorBlock(color) }
+	val TRITANIUM_DOOR = registry.coloredWithBase(MNames.TRITANIUM_DOOR, ::TritaniumDoorBlock)
 
-	val TRITANIUM_TRAPDOOR: Map<DyeColor?, TritaniumTrapdoorBlock> = registry.coloredWithBase(MNames.TRITANIUM_TRAPDOOR) { color, _ ->
-		TritaniumTrapdoorBlock(color) }
+	val TRITANIUM_TRAPDOOR = registry.coloredWithBase(MNames.TRITANIUM_TRAPDOOR, ::TritaniumTrapdoorBlock)
 
 	val TRITANIUM_STRIPED_BLOCK: Block by registry.register(MNames.TRITANIUM_STRIPED_BLOCK) { Block(
 		BlockBehaviour.Properties.of()
diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt
index 47cad1f74..dcdb9d758 100644
--- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt
+++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt
@@ -23,8 +23,8 @@ object MEntityTypes {
 		EntityType.Builder.of<PlasmaProjectile>({ _, level -> PlasmaProjectile(level) }, MobCategory.MISC).sized(0.4f, 0.4f).build(MNames.PLASMA)
 	}
 
-	val CARGO_CRATE_MINECARTS = registry.coloredWithBase(MNames.MINECART_CARGO_CRATE) { color, name ->
-		EntityType.Builder.of<MinecartCargoCrate>({ it, level -> MinecartCargoCrate(it, color, level)}, MobCategory.MISC).sized(0.98F, 0.7F).clientTrackingRange(8).build(name)
+	val CARGO_CRATE_MINECARTS = registry.coloredWithBase(MNames.MINECART_CARGO_CRATE) { color ->
+		EntityType.Builder.of<MinecartCargoCrate>({ it, level -> MinecartCargoCrate(it, color, level)}, MobCategory.MISC).sized(0.98F, 0.7F).clientTrackingRange(8).build("dfu doesn't works ✅")
 	}
 
 	internal fun register(bus: IEventBus) {
diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt
index edbe1b5a5..087c24a1b 100644
--- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt
+++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt
@@ -6,13 +6,16 @@ import net.minecraft.network.chat.Component
 import net.minecraft.resources.ResourceLocation
 import net.minecraft.world.food.FoodProperties
 import net.minecraft.world.item.*
+import net.minecraft.world.item.Item.Properties
 import net.minecraft.world.item.crafting.Ingredient
 import net.minecraft.world.level.Level
+import net.minecraft.world.level.block.Block
 import net.minecraftforge.common.ForgeTier
 import net.minecraftforge.common.TierSortingRegistry
 import net.minecraftforge.eventbus.api.IEventBus
 import net.minecraftforge.registries.DeferredRegister
 import net.minecraftforge.registries.ForgeRegistries
+import net.minecraftforge.registries.RegistryObject
 import ru.dbotthepony.mc.otm.OverdriveThatMatters
 import ru.dbotthepony.mc.otm.capability.ITieredUpgradeSet
 import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
@@ -44,9 +47,13 @@ import ru.dbotthepony.mc.otm.item.weapon.PlasmaRifleItem
 import java.util.function.Supplier
 
 object MItems {
-	private val DEFAULT_PROPERTIES = Item.Properties()
+	private val DEFAULT_PROPERTIES = Properties()
 	private val registry: DeferredRegister<Item> = DeferredRegister.create(ForgeRegistries.ITEMS, OverdriveThatMatters.MOD_ID)
 
+	private fun register(name: String, blocks: Map<DyeColor?, Block>, properties: Properties = DEFAULT_PROPERTIES): Map<DyeColor?, BlockItem> {
+		return registry.coloredWithBase(name) { color -> BlockItem(blocks[color]!!, properties) }
+	}
+
 	internal fun register(bus: IEventBus) {
 		registry.register(bus)
 	}
@@ -55,49 +62,49 @@ object MItems {
 		conf to registry.register("${conf.name.lowercase()}_energy_cable") { BlockItem(MBlocks.ENERGY_CABLES[conf]!!, DEFAULT_PROPERTIES) }
 	})
 
-	val ANDROID_STATION = registry.coloredWithBase(MNames.ANDROID_STATION) { color, _ -> BlockItem(MBlocks.ANDROID_STATION[color]!!, DEFAULT_PROPERTIES) }
-	val ANDROID_CHARGER: BlockItem by registry.register(MNames.ANDROID_CHARGER) { BlockItem(MBlocks.ANDROID_CHARGER, DEFAULT_PROPERTIES) }
-	val BATTERY_BANK = registry.coloredWithBase(MNames.BATTERY_BANK) { color, _ -> BlockItem(MBlocks.BATTERY_BANK[color]!!, DEFAULT_PROPERTIES) }
-	val MATTER_DECOMPOSER = registry.coloredWithBase(MNames.MATTER_DECOMPOSER) { color, _ -> BlockItem(MBlocks.MATTER_DECOMPOSER[color]!!, DEFAULT_PROPERTIES) }
-	val MATTER_CAPACITOR_BANK = registry.coloredWithBase(MNames.MATTER_CAPACITOR_BANK) { color, _ -> BlockItem(MBlocks.MATTER_CAPACITOR_BANK[color]!!, DEFAULT_PROPERTIES) }
+	val ANDROID_STATION = register(MNames.ANDROID_STATION, MBlocks.ANDROID_STATION)
+	val ANDROID_CHARGER = register(MNames.ANDROID_CHARGER, MBlocks.ANDROID_CHARGER)
+	val BATTERY_BANK = register(MNames.BATTERY_BANK, MBlocks.BATTERY_BANK)
+	val MATTER_DECOMPOSER = register(MNames.MATTER_DECOMPOSER, MBlocks.MATTER_DECOMPOSER)
+	val MATTER_CAPACITOR_BANK = register(MNames.MATTER_CAPACITOR_BANK, MBlocks.MATTER_CAPACITOR_BANK)
 	val MATTER_CABLE: BlockItem by registry.register(MNames.MATTER_CABLE) { BlockItem(MBlocks.MATTER_CABLE, DEFAULT_PROPERTIES) }
 	val PATTERN_STORAGE: BlockItem by registry.register(MNames.PATTERN_STORAGE) { BlockItem(MBlocks.PATTERN_STORAGE, DEFAULT_PROPERTIES) }
-	val MATTER_SCANNER = registry.coloredWithBase(MNames.MATTER_SCANNER) { color, _ -> BlockItem(MBlocks.MATTER_SCANNER[color]!!, DEFAULT_PROPERTIES) }
-	val MATTER_PANEL: BlockItem by registry.register(MNames.MATTER_PANEL) { BlockItem(MBlocks.MATTER_PANEL, DEFAULT_PROPERTIES) }
-	val MATTER_REPLICATOR = registry.coloredWithBase(MNames.MATTER_REPLICATOR) { color, _ -> BlockItem(MBlocks.MATTER_REPLICATOR[color]!!, DEFAULT_PROPERTIES) }
-	val MATTER_BOTTLER = registry.coloredWithBase(MNames.MATTER_BOTTLER) { color, _ -> BlockItem(MBlocks.MATTER_BOTTLER[color]!!, DEFAULT_PROPERTIES) }
+	val MATTER_SCANNER = register(MNames.MATTER_SCANNER, MBlocks.MATTER_SCANNER)
+	val MATTER_PANEL = register(MNames.MATTER_PANEL, MBlocks.MATTER_PANEL)
+	val MATTER_REPLICATOR = register(MNames.MATTER_REPLICATOR, MBlocks.MATTER_REPLICATOR)
+	val MATTER_BOTTLER = register(MNames.MATTER_BOTTLER, MBlocks.MATTER_BOTTLER)
 
 	val TRITANIUM_ORE: BlockItem by registry.register(MNames.TRITANIUM_ORE) { BlockItem(MBlocks.TRITANIUM_ORE, DEFAULT_PROPERTIES) }
 	val DEEPSLATE_TRITANIUM_ORE: BlockItem by registry.register(MNames.DEEPSLATE_TRITANIUM_ORE) { BlockItem(MBlocks.DEEPSLATE_TRITANIUM_ORE, DEFAULT_PROPERTIES) }
 	val TRITANIUM_RAW_BLOCK: BlockItem by registry.register(MNames.TRITANIUM_RAW_BLOCK) { BlockItem(MBlocks.TRITANIUM_RAW_BLOCK, DEFAULT_PROPERTIES) }
 	val ENERGY_COUNTER: BlockItem by registry.register(MNames.ENERGY_COUNTER) { BlockItem(MBlocks.ENERGY_COUNTER, DEFAULT_PROPERTIES) }
 	val CHEMICAL_GENERATOR: BlockItem by registry.register(MNames.CHEMICAL_GENERATOR) { BlockItem(MBlocks.CHEMICAL_GENERATOR, DEFAULT_PROPERTIES) }
-	val PLATE_PRESS = registry.coloredWithBase(MNames.PLATE_PRESS) { color, _ -> BlockItem(MBlocks.PLATE_PRESS[color]!!, DEFAULT_PROPERTIES) }
-	val TWIN_PLATE_PRESS = registry.coloredWithBase(MNames.TWIN_PLATE_PRESS) { color, _ -> BlockItem(MBlocks.TWIN_PLATE_PRESS[color]!!, DEFAULT_PROPERTIES) }
-	val MATTER_RECYCLER = registry.coloredWithBase(MNames.MATTER_RECYCLER) { color, _ -> BlockItem(MBlocks.MATTER_RECYCLER[color]!!, DEFAULT_PROPERTIES) }
+	val PLATE_PRESS = register(MNames.PLATE_PRESS, MBlocks.PLATE_PRESS)
+	val TWIN_PLATE_PRESS = register(MNames.TWIN_PLATE_PRESS, MBlocks.TWIN_PLATE_PRESS)
+	val MATTER_RECYCLER = register(MNames.MATTER_RECYCLER, MBlocks.MATTER_RECYCLER)
 
-	val POWERED_FURNACE = registry.coloredWithBase(MNames.POWERED_FURNACE) { color, _ -> BlockItem(MBlocks.POWERED_FURNACE[color]!!, DEFAULT_PROPERTIES) }
-	val POWERED_BLAST_FURNACE = registry.coloredWithBase(MNames.POWERED_BLAST_FURNACE) { color, _ -> BlockItem(MBlocks.POWERED_BLAST_FURNACE[color]!!, DEFAULT_PROPERTIES) }
-	val POWERED_SMOKER = registry.coloredWithBase(MNames.POWERED_SMOKER) { color, _ -> BlockItem(MBlocks.POWERED_SMOKER[color]!!, DEFAULT_PROPERTIES) }
+	val POWERED_FURNACE = register(MNames.POWERED_FURNACE, MBlocks.POWERED_FURNACE)
+	val POWERED_BLAST_FURNACE = register(MNames.POWERED_BLAST_FURNACE, MBlocks.POWERED_BLAST_FURNACE)
+	val POWERED_SMOKER = register(MNames.POWERED_SMOKER, MBlocks.POWERED_SMOKER)
 
 	val STORAGE_BUS: BlockItem by registry.register(MNames.STORAGE_BUS) { BlockItem(MBlocks.STORAGE_BUS, DEFAULT_PROPERTIES) }
 	val STORAGE_IMPORTER: BlockItem by registry.register(MNames.STORAGE_IMPORTER) { BlockItem(MBlocks.STORAGE_IMPORTER, DEFAULT_PROPERTIES) }
 	val STORAGE_EXPORTER: BlockItem by registry.register(MNames.STORAGE_EXPORTER) { BlockItem(MBlocks.STORAGE_EXPORTER, DEFAULT_PROPERTIES) }
-	val DRIVE_VIEWER: BlockItem by registry.register(MNames.DRIVE_VIEWER) { BlockItem(MBlocks.DRIVE_VIEWER, DEFAULT_PROPERTIES) }
+	val DRIVE_VIEWER = register(MNames.DRIVE_VIEWER, MBlocks.DRIVE_VIEWER)
 	val DRIVE_RACK: BlockItem by registry.register(MNames.DRIVE_RACK) { BlockItem(MBlocks.DRIVE_RACK, DEFAULT_PROPERTIES) }
-	val ITEM_MONITOR = registry.coloredWithBase(MNames.ITEM_MONITOR) { color, _ -> BlockItem(MBlocks.ITEM_MONITOR[color]!!, DEFAULT_PROPERTIES) }
+	val ITEM_MONITOR = register(MNames.ITEM_MONITOR, MBlocks.ITEM_MONITOR)
 	val STORAGE_CABLE: BlockItem by registry.register(MNames.STORAGE_CABLE) { BlockItem(MBlocks.STORAGE_CABLE, DEFAULT_PROPERTIES) }
-	val STORAGE_POWER_SUPPLIER: BlockItem by registry.register(MNames.STORAGE_POWER_SUPPLIER) { BlockItem(MBlocks.STORAGE_POWER_SUPPLIER, DEFAULT_PROPERTIES) }
+	val STORAGE_POWER_SUPPLIER = register(MNames.STORAGE_POWER_SUPPLIER, MBlocks.STORAGE_POWER_SUPPLIER)
 
 	val GRAVITATION_STABILIZER: BlockItem by registry.register(MNames.GRAVITATION_STABILIZER) { BlockItem(MBlocks.GRAVITATION_STABILIZER, DEFAULT_PROPERTIES) }
 
 	val PHANTOM_ATTRACTOR: DoubleHighBlockItem by registry.register(MNames.PHANTOM_ATTRACTOR) { DoubleHighBlockItem(MBlocks.PHANTOM_ATTRACTOR, DEFAULT_PROPERTIES) }
 	val ENERGY_SERVO: BlockItem by registry.register(MNames.ENERGY_SERVO) { BlockItem(MBlocks.ENERGY_SERVO, DEFAULT_PROPERTIES) }
-	val COBBLESTONE_GENERATOR: Map<DyeColor?, BlockItem> = registry.coloredWithBase(MNames.COBBLESTONE_GENERATOR) { color, _ -> BlockItem(MBlocks.COBBLESTONE_GENERATOR[color]!!, DEFAULT_PROPERTIES) }
+	val COBBLESTONE_GENERATOR = register(MNames.COBBLESTONE_GENERATOR, MBlocks.COBBLESTONE_GENERATOR)
 
 	val INFINITE_WATER_SOURCE: BlockItem by registry.register(MNames.INFINITE_WATER_SOURCE) { BlockItem(MBlocks.INFINITE_WATER_SOURCE, DEFAULT_PROPERTIES) }
-	val ESSENCE_STORAGE: Map<DyeColor?, BlockItem> = registry.coloredWithBase(MNames.ESSENCE_STORAGE) { color, _ -> BlockItem(MBlocks.ESSENCE_STORAGE[color]!!, DEFAULT_PROPERTIES) }
-	val MATTER_RECONSTRUCTOR = registry.coloredWithBase(MNames.MATTER_RECONSTRUCTOR) { color, _ -> BlockItem(MBlocks.MATTER_RECONSTRUCTOR[color]!!, DEFAULT_PROPERTIES) }
+	val ESSENCE_STORAGE = register(MNames.ESSENCE_STORAGE, MBlocks.ESSENCE_STORAGE)
+	val MATTER_RECONSTRUCTOR = register(MNames.MATTER_RECONSTRUCTOR, MBlocks.MATTER_RECONSTRUCTOR)
 
 	val DEV_CHEST: BlockItem by registry.register(MNames.DEV_CHEST) { BlockItem(MBlocks.DEV_CHEST, DEFAULT_PROPERTIES) }
 	val PAINTER: BlockItem by registry.register(MNames.PAINTER) { BlockItem(MBlocks.PAINTER, DEFAULT_PROPERTIES) }
@@ -115,7 +122,7 @@ object MItems {
 		machines.addAll(POWERED_SMOKER.asSupplierArray())
 
 		machines.addAll(ANDROID_STATION.asSupplierArray().iterator())
-		machines.add(::ANDROID_CHARGER)
+		machines.addAll(ANDROID_CHARGER.asSupplierArray().iterator())
 		machines.addAll(BATTERY_BANK.asSupplierArray().iterator())
 		machines.add(::ENERGY_COUNTER)
 		machines.add(::CHEMICAL_GENERATOR)
@@ -130,7 +137,7 @@ object MItems {
 		machines.add(::MATTER_CABLE)
 		machines.add(::PATTERN_STORAGE)
 		machines.addAll(MATTER_SCANNER.asSupplierArray().iterator())
-		machines.add(::MATTER_PANEL)
+		machines.addAll(MATTER_PANEL.asSupplierArray().iterator())
 		machines.addAll(MATTER_REPLICATOR.asSupplierArray().iterator())
 		machines.addAll(MATTER_BOTTLER.asSupplierArray().iterator())
 		machines.add(::MATTER_ENTANGLER)
@@ -139,11 +146,11 @@ object MItems {
 		machines.add(::STORAGE_BUS)
 		machines.add(::STORAGE_IMPORTER)
 		machines.add(::STORAGE_EXPORTER)
-		machines.add(::DRIVE_VIEWER)
+		machines.addAll(DRIVE_VIEWER.asSupplierArray().iterator())
 		machines.add(::DRIVE_RACK)
 		machines.addAll(ITEM_MONITOR.asSupplierArray().iterator())
 		machines.add(::STORAGE_CABLE)
-		machines.add(::STORAGE_POWER_SUPPLIER)
+		machines.addAll(STORAGE_POWER_SUPPLIER.asSupplierArray().iterator())
 
 		MACHINES = SupplierList(machines)
 	}
@@ -438,8 +445,8 @@ object MItems {
 	val ENGINE: Item by registry.register(MNames.ENGINE) { BlockItem(MBlocks.ENGINE, DEFAULT_PROPERTIES) }
 	val HOLO_SIGN: Item by registry.register(MNames.HOLO_SIGN) { BlockItem(MBlocks.HOLO_SIGN, DEFAULT_PROPERTIES) }
 
-	val TRITANIUM_DOOR = registry.coloredWithBase(MNames.TRITANIUM_DOOR) { color, _ -> DoubleHighBlockItem(MBlocks.TRITANIUM_DOOR[color]!!, DEFAULT_PROPERTIES) }
-	val TRITANIUM_TRAPDOOR = registry.coloredWithBase(MNames.TRITANIUM_TRAPDOOR) { color, _ -> BlockItem(MBlocks.TRITANIUM_TRAPDOOR[color]!!, DEFAULT_PROPERTIES) }
+	val TRITANIUM_DOOR = register(MNames.TRITANIUM_DOOR, MBlocks.TRITANIUM_DOOR)
+	val TRITANIUM_TRAPDOOR = register(MNames.TRITANIUM_TRAPDOOR, MBlocks.TRITANIUM_TRAPDOOR)
 
 	// components
 	val MATTER_IO_PORT: Item by registry.register(MNames.MATTER_IO_PORT) { Item(DEFAULT_PROPERTIES) }
@@ -529,7 +536,7 @@ object MItems {
 		::REINFORCED_TRITANIUM_PLATE,
 	)
 
-	val CARGO_CRATE_MINECARTS = registry.coloredWithBase(MNames.MINECART_CARGO_CRATE) { color, _ -> MinecartCargoCrateItem(color) }
+	val CARGO_CRATE_MINECARTS = registry.coloredWithBase(MNames.MINECART_CARGO_CRATE, ::MinecartCargoCrateItem)
 
 	val EXOPACK_PROBE: Item by registry.register(MNames.EXOPACK_PROBE, ::ExopackProbeItem)
 
diff --git a/src/main/resources/assets/overdrive_that_matters/blockstates/matter_panel.json b/src/main/resources/assets/overdrive_that_matters/blockstates/matter_panel.json
deleted file mode 100644
index 781d76141..000000000
--- a/src/main/resources/assets/overdrive_that_matters/blockstates/matter_panel.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-	"variants": {
-		"facing=south": {
-			"model": "overdrive_that_matters:block/matter_panel"
-		},
-		"facing=up": {
-			"model": "overdrive_that_matters:block/matter_panel",
-			"x": 90
-		},
-		"facing=down": {
-			"model": "overdrive_that_matters:block/matter_panel",
-			"x": 270
-		},
-		"facing=west": {
-			"model": "overdrive_that_matters:block/matter_panel",
-			"y": 90
-		},
-		"facing=north": {
-			"model": "overdrive_that_matters:block/matter_panel",
-			"y": 180
-		},
-		"facing=east": {
-			"model": "overdrive_that_matters:block/matter_panel",
-			"y": 270
-		}
-	}
-}
diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/black.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad3614c247b118e186da3506914a5fdb5d039073
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww5CLtjsB_$^&CMhN+R!~q-Utj<K|Nn?D=W~GC7)yfu
zf*Bm1-ADs*lDyqr1g37{)d6xi3p^r=85sBugD~Uq{1qucLG}_)Usv`Qj4T3D!fQ&V
z-UaH};pyTS;&FWL<nBwa6*yW%C%8z@{$77uIb+TA8E5LZ8PAQ`r?(>@nKwp0yT?(<
zWNuDvzL>-NgvoNUc?|~-?)+bpps+}tecKkTK$&X?)*jyWR=fSqlY0zD7v^s&^f>=i
zHugX-b0p(0q1)SZ8;sWEzWl%?^7gcv_J*16rhMy_l2$y5VVn5%R<(=s!^;{e4Sf@)
zF!H%CKEUL%NdIEHXhXpto<0Vq4L>fhPh+ULd_A1es3v3Yn#T_q9Wqx0{<~iAx<TUe
z%qP~1n66CqIA0pw)xge>cj&d(2VRDHh7V<8u>s|qGZsx-prLlMg5^PGL_l%~`;23}
z_UwXhTs=BwY0J;G$X%?#I7Pf>&e8J^nc5;__(~XmsXadB%Qvg}-o$4HUk^x5m}c63
zl2J$?KsDUpD?{bglBKt0K9$)#amcp}X%FSAU~IV<?z-e=<D%)t%bH#&Kb+z`OC?Ua
z_hs5C$Fw-cFaMqg9D6%4s`B<~hPb{5M-SirT(aET%76AcVTJw4@{6A{?NDNjDP*{5
zb)sRl76Y%t>j!tdJGri?tz?Y3>@51N!HUPx*S9aw|M;21rzRzO27KDaX4+TX^Gm*Q
zgEHU7pV@-IXjLt7jVMV;EJ?LWE=mPb3`Pb<Cb|ZOKonwVW@P|E+6D$z1_o7==f6eK
zkei>9nO2Eg1NS-gK%fQ<xD6$lxv9k^iMa&`JtiPajLfVIEg_b;@CfMv^)Pt4`njxg
HN@xNA?ddgQ

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..efcd42bf7eb5dcee00ad49e87b65a667cf40dc3c
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww5rlD1%t=p=qUL+<aR!~q-Utj<K|NkBSGn;|h7)yfu
zf*Bm1-ADs*lDyqr1g37{)d6xi3p^r=85sBugD~Uq{1qucLG}_)Usv`Qj4T3D!fQ&V
z-UaH};pyTS;&FWL<nBwa6*yW%C%8z@{$77uIb+TA8E5LZ8PAQ`r?(>@nKwp0yT?(<
zWNuDvzL>-NgvoNUc?|~-?)+bpps+}tecKkTK$&X?)*jyWR=fSqlY0zD7v^s&^f>=i
zHugX-b0p(0q1)SZ8;sWEzWl%?^7gcv_J*16rhMy_l2$y5VVn5%R<(=s!^;{e4Sf@)
zF!H%CKEUL%NdIEHXhXpto<0Vq4L>fhPh+ULd_A1es3v3Yn#T_q9Wqx0{<~iAx<TUe
z%qP~1n66CqIA0pw)xge>cj&d(2VRDHh7V<8u>s|qGZsx-prLlMg5^PGL_l%~`;23}
z_UwXhTs=BwY0J;G$X%?#I7Pf>&e8J^nc5;__(~XmsXadB%Qvg}-o$4HUk^x5m}c63
zl2J$?KsDUpD?{bglBKt0K9$)#amcp}X%FSAU~IV<?z-e=<D%)t%bH#&Kb+z`OC?Ua
z_hs5C$Fw-cFaMqg9D6%4s`B<~hPb{5M-SirT(aET%76AcVTJw4@{6A{?NDNjDP*{5
zb)sRl76Y%t>j!tdJGri?tz?Y3>@51N!HUPx*S9aw|M;21rzRzO27KDaX4+TX^Gm*Q
zgEHU7pV@-IXjLt7jVMV;EJ?LWE=mPb3`Pb<Cb|ZOKonwVW@P|E+6D$z1_o7==f6eK
zkei>9nO2Eg1NS-gK%fQ<xD6$lxv9k^iMa&`JtiPajLfVIEg_b;@CfMv^)Pt4`njxg
HN@xNA4%#+^

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/brown.png
new file mode 100644
index 0000000000000000000000000000000000000000..c068ece71092e4cd126411abb54595a258d3e0dd
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww57Hy%BXrmNjA}b~)R!~q-Utj<K|NmN*r+<Lj7)yfu
zf*Bm1-ADs*lDyqr1g37{)d6xi3p^r=85sBugD~Uq{1qucLG}_)Usv`Qj4T3D!fQ&V
z-UaH};pyTS;&FWL<nBwa6*yW%C%8z@{$77uIb+TA8E5LZ8PAQ`r?(>@nKwp0yT?(<
zWNuDvzL>-NgvoNUc?|~-?)+bpps+}tecKkTK$&X?)*jyWR=fSqlY0zD7v^s&^f>=i
zHugX-b0p(0q1)SZ8;sWEzWl%?^7gcv_J*16rhMy_l2$y5VVn5%R<(=s!^;{e4Sf@)
zF!H%CKEUL%NdIEHXhXpto<0Vq4L>fhPh+ULd_A1es3v3Yn#T_q9Wqx0{<~iAx<TUe
z%qP~1n66CqIA0pw)xge>cj&d(2VRDHh7V<8u>s|qGZsx-prLlMg5^PGL_l%~`;23}
z_UwXhTs=BwY0J;G$X%?#I7Pf>&e8J^nc5;__(~XmsXadB%Qvg}-o$4HUk^x5m}c63
zl2J$?KsDUpD?{bglBKt0K9$)#amcp}X%FSAU~IV<?z-e=<D%)t%bH#&Kb+z`OC?Ua
z_hs5C$Fw-cFaMqg9D6%4s`B<~hPb{5M-SirT(aET%76AcVTJw4@{6A{?NDNjDP*{5
zb)sRl76Y%t>j!tdJGri?tz?Y3>@51N!HUPx*S9aw|M;21rzRzO27KDaX4+TX^Gm*Q
zgEHU7pV@-IXjLt7jVMV;EJ?LWE=mPb3`Pb<Cb|ZOKonwVW@P|E+6D$z1_o7==f6eK
zkei>9nO2Eg1NS-gK%fQ<xD6$lxv9k^iMa&`JtiPajLfVIEg_b;@CfMv^)Pt4`njxg
HN@xNAEAlpx

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/cyan.png
new file mode 100644
index 0000000000000000000000000000000000000000..266c7332e39cec73635be1a3d03360bb28996ab8
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww5CYW6!R9qvFlqDu6R!~q-Utj<K|Nq{)pF%)wj3q&S
z!3+-1Zlr-YN#5=*0#i5f>Hs;M1s;*b3=DjSL74G){)!Z!AbW|YuPgftMiv1n;WZ^w
z?*jGg@N{tu@i;zra`&az3LGt>6I`Tcf3Lr-oUvy5j5GDyjOWJe)7ue{%o`)0-Q%ca
zGB>9-U(Dfs!elwwyoQ4Zcm6L)P*|kSzHN(Epv<)cYY%UGtKEL*$vuXn3-dP>dYpeM
z8+)LaIg;_0(Cuxy4MuBnUw+^cd3#z-d&5k3Q@-^|Nh==3uuc4WtJ=l+;bo1KhQ0|?
z82Q{6A7FA>q<^tpw4vY+Pagx*h94K$r!mxAz8=nKRFkoH&Ep4*4w)+g|6MP5-5~LK
z<`e5hOjo9QoG*>;YG7x`JM`M?12028!-q1l*nslQ8H=VZ&`>*B!SWz8A|N@0ea10f
zdv?J$t{xq;wB_eo<Sy1=oFZN`=ji!|Ol^@dd?k#()E=Mm<(t)fZ{jn9uLmS2Ofzji
z$tWZcpc-!Qm7(%#$<o_0pUP~WIOJP~w1@IlFt%I_cU^L`anW?+Wlb-XA5L+er4lFI
z`!em6V_F>Jmw(R#j=h~2Re5_gLtNj3qla&QE?Mqv<v)9!u)_Xi`Nhwfb|^8%6f)ej
zI?=FNi-FhS^@BU!om^McRx-w1b{75CV8!F;>)RLTfBekhQ<D-s13qnIGwrMH`6b`D
zL78vk&ul?pw5pc4MwFx^mZVxG7o`Fz1|tI_6I}yCAPO-wvoZi7Z36=<1B0r`^WUOq
z$jwj5OsmALf%}|#AW(w_+=i0O+|=Td#M}ae9utryMrKxqmJmx^c!czTdKf%i{an^L
HB{Ts5{x&w-

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..67386008658cd857dfb65ade8cf016cdf895477d
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww5W@utzYGI>mU@RskR!~q-Utj<K|9_eL{fmLx7)yfu
zf*Bm1-ADs*lDyqr1g37{)d6xi3p^r=85sBugD~Uq{1qucLG}_)Usv`Qj4T3D!fQ&V
z-UaH};pyTS;&FWL<nBwa6*yW%C%8z@{$77uIb+TA8E5LZ8PAQ`r?(>@nKwp0yT?(<
zWNuDvzL>-NgvoNUc?|~-?)+bpps+}tecKkTK$&X?)*jyWR=fSqlY0zD7v^s&^f>=i
zHugX-b0p(0q1)SZ8;sWEzWl%?^7gcv_J*16rhMy_l2$y5VVn5%R<(=s!^;{e4Sf@)
zF!H%CKEUL%NdIEHXhXpto<0Vq4L>fhPh+ULd_A1es3v3Yn#T_q9Wqx0{<~iAx<TUe
z%qP~1n66CqIA0pw)xge>cj&d(2VRDHh7V<8u>s|qGZsx-prLlMg5^PGL_l%~`;23}
z_UwXhTs=BwY0J;G$X%?#I7Pf>&e8J^nc5;__(~XmsXadB%Qvg}-o$4HUk^x5m}c63
zl2J$?KsDUpD?{bglBKt0K9$)#amcp}X%FSAU~IV<?z-e=<D%)t%bH#&Kb+z`OC?Ua
z_hs5C$Fw-cFaMqg9D6%4s`B<~hPb{5M-SirT(aET%76AcVTJw4@{6A{?NDNjDP*{5
zb)sRl76Y%t>j!tdJGri?tz?Y3>@51N!HUPx*S9aw|M;21rzRzO27KDaX4+TX^Gm*Q
zgEHU7pV@-IXjLt7jVMV;EJ?LWE=mPb3`Pb<Cb|ZOKonwVW@P|E+6D$z1_o7==f6eK
zkei>9nO2Eg1NS-gK%fQ<xD6$lxv9k^iMa&`JtiPajLfVIEg_b;@CfMv^)Pt4`njxg
HN@xNAmhUzD

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/green.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a6710ef261dbcb0e2477b0e3a116f2b711022a9
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww5<{U2O5i4OEAR;CvR!~q-Utj<K|NmLr7RLd#F_r}R
z1v5B2yO9RsBze2L2u$6?s{`b47I;J!GcfQS24TkI`72U@g6t)pzOL*q7+D0Qgx8cz
zy$jT{!_&nv#N+tf$=#P;D{!=kPH>T){k{ISa>knJGtSg+GoBl>Pj5#+GH;B0c8{Zy
z$=saUd@+aj36tey^BN8w-1)yGL1B?P`?f7wfil+)tUbK#t#<pJC-)eRF3jIl=yCq3
zZ0vzv=19h0Lbtc+HW;nReffb)<n3uS?F}>CP5IU<C9QZA!#45jt!fwNhnF={8u}(o
zVdQgPe1OSik^aSY(T0LQJbesI8-841pT<yg`Fc2`QBB6)HIE-KI%KX0{CB<Jb%Vs`
znNO@2F<qJJalSOVtAU*%@6c<n54;TZ3?ItGVgt%IXDphwKtt_h1<QlXh=Ak}_8G@`
z?b!w2xO#NV(w3iVk-J!faf*1&oTKL-GPOm<@RczBQhR*Lmv2_{y@}5Zz8;XAFwM06
zB%_c(fNHqGSBA=~B};G1d@8ef;*f6{(jLlJ!Ps&!+;z###zoVOmo>dmemKQ>mP(v-
z@5{7Pj%jg>U;aH0IQDj8RORi}3~_xAjvl`Kxn#MwmH+H@!V3G7<rhC^+M&c4Q^;`B
z>O{k8Ee2kP*AMP^cXC}(Tge!6*;({kgB6dXuWw(V|M4@2Pfben4EVH-&9tw&=a+or
z24%jDKeGja(W+YF8c~vxSdwa$T$Bo=7>o>zOmqzlfhfe#%*p_Sv<(cb3=FC!&wq=e
zAvZrIGp!Q02JUm}fj|u!a2rZ8b5n~;5_1a>dQ3o;7@1iaT0$&w;StgU>S6G7^>bP0
Hl+XkKk@hxM

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/light_blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..452a44a35c9fbf2dec3acad97074e3c9e37d5465
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww5raxi5(X2h%EeplO#0m-u>g((O|NsA}+UpHa8)He3
zUoeBivm0q3PLj8~i@?-PygEP*XMsm#F#`kNVGw3Kp1&dmD9B#o>Fdh=f{{f)N_b7l
z)Vn}EJ3L(+Lp+Ypo!outwE{<r=mZz(+28ALD`%{kKI2UNHsiT5`}B4MB=g3|XZJWN
znas_p%@=ccpD<ZYHm~8}!JYq05)>Axvv1p?6)1D<z}myx-fFksd2)~8=)(L>g&yah
z%Elh(WsYS0C3Jh6ZiCU9+?OA?MBbiO)7~)C-IQ;=Qqqb?F>DjR-l}$Set20UrJ--a
z6h=Px#Rr&N7U^GX7i}o`!_&vWwBg4E_Gt_?m#>F28r5X%UGw+>qeJG3z<<{ZUN=a5
zp83Rj5!02a9_LG=yBgRT@(#WB`oPOj&+ws4EH<EgbH<`+3pCVDR<JzCj0i{$VV`k~
z*PdPQjjKn;EN%I@7P*Tx7^jHW%sG1gAyZpq3||T3FSW;~eEDWI-<$Z%;Oha&3DZp5
zPcjM#1gM4^d}XM-TC()E%%?J&Cl2|RA?=}j6^tzx!(Er$Y+N+mcv;g6<%d(8XQ{+V
z_r6R!<(L-7_~qa8fMahbMpfQk%@Ei3;OODopG%f|TlvpkC#<kPS$^?zrX5O*F@+2_
ztxhzo)?(mwc>UmxcPG~swUvx9mz_nwHCXXD`ug?-`X4`Y_|&9C&wx+c*i8GXdw$6`
zZcygi_%mA&7_F)$t`Q|Ei6yC4$wjF^iowXh$VAt`5Qsty&8!SSNZY``%D|v%^8B|b
z8glbfGSez?Yv4Yo9thN+0k@$fGdH!kBr&%Dp~nPdiIJI=p(Vr;7ak!!pdJQKS3j3^
HP6<r_Q+YVi

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/light_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..28fc028fc7a861a3e6c91469fa3d7210cf863554
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww5R#1>pQBjbdo**VBR!~q-Utj<K|Nkjp<x+v#7)yfu
zf*Bm1-ADs*lDyqr1g37{)d6xi3p^r=85sBugD~Uq{1qucLG}_)Usv`Qj4T3D!fQ&V
z-UaH};pyTS;&FWL<nBwa6*yW%C%8z@{$77uIb+TA8E5LZ8PAQ`r?(>@nKwp0yT?(<
zWNuDvzL>-NgvoNUc?|~-?)+bpps+}tecKkTK$&X?)*jyWR=fSqlY0zD7v^s&^f>=i
zHugX-b0p(0q1)SZ8;sWEzWl%?^7gcv_J*16rhMy_l2$y5VVn5%R<(=s!^;{e4Sf@)
zF!H%CKEUL%NdIEHXhXpto<0Vq4L>fhPh+ULd_A1es3v3Yn#T_q9Wqx0{<~iAx<TUe
z%qP~1n66CqIA0pw)xge>cj&d(2VRDHh7V<8u>s|qGZsx-prLlMg5^PGL_l%~`;23}
z_UwXhTs=BwY0J;G$X%?#I7Pf>&e8J^nc5;__(~XmsXadB%Qvg}-o$4HUk^x5m}c63
zl2J$?KsDUpD?{bglBKt0K9$)#amcp}X%FSAU~IV<?z-e=<D%)t%bH#&Kb+z`OC?Ua
z_hs5C$Fw-cFaMqg9D6%4s`B<~hPb{5M-SirT(aET%76AcVTJw4@{6A{?NDNjDP*{5
zb)sRl76Y%t>j!tdJGri?tz?Y3>@51N!HUPx*S9aw|M;21rzRzO27KDaX4+TX^Gm*Q
zgEHU7pV@-IXjLt7jVMV;EJ?LWE=mPb3`Pb<Cb|ZOKonwVW@P|E+6D$z1_o7==f6eK
zkei>9nO2Eg1NS-gK%fQ<xD6$lxv9k^iMa&`JtiPajLfVIEg_b;@CfMv^)Pt4`njxg
HN@xNAy5=|9

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/lime.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e7e01e8abf78f3e3bfaba13ab6a568947be174a
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww57BN*get}3}r=XaaSV2KSeSQ7^|NkcnwAli+F_r}R
z1v5B2yO9RsBze2L2u$6?s{`b47I;J!GcfQS24TkI`72U@g6t)pzOL*q7+D0Qgx8cz
zy$jT{!_&nv#N+tf$=#P;D{!=kPH>T){k{ISa>knJGtSg+GoBl>Pj5#+GH;B0c8{Zy
z$=saUd@+aj36tey^BN8w-1)yGL1B?P`?f7wfil+)tUbK#t#<pJC-)eRF3jIl=yCq3
zZ0vzv=19h0Lbtc+HW;nReffb)<n3uS?F}>CP5IU<C9QZA!#45jt!fwNhnF={8u}(o
zVdQgPe1OSik^aSY(T0LQJbesI8-841pT<yg`Fc2`QBB6)HIE-KI%KX0{CB<Jb%Vs`
znNO@2F<qJJalSOVtAU*%@6c<n54;TZ3?ItGVgt%IXDphwKtt_h1<QlXh=Ak}_8G@`
z?b!w2xO#NV(w3iVk-J!faf*1&oTKL-GPOm<@RczBQhR*Lmv2_{y@}5Zz8;XAFwM06
zB%_c(fNHqGSBA=~B};G1d@8ef;*f6{(jLlJ!Ps&!+;z###zoVOmo>dmemKQ>mP(v-
z@5{7Pj%jg>U;aH0IQDj8RORi}3~_xAjvl`Kxn#MwmH+H@!V3G7<rhC^+M&c4Q^;`B
z>O{k8Ee2kP*AMP^cXC}(Tge!6*;({kgB6dXuWw(V|M4@2Pfben4EVH-&9tw&=a+or
z24%jDKeGja(W+YF8c~vxSdwa$T$Bo=7>o>zOmqzlfhfe#%*p_Sv<(cb3=FC!&wq=e
zAvZrIGp!Q02JUm}fj|u!a2rZ8b5n~;5_1a>dQ3o;7@1iaT0$&w;StgU>S6G7^>bP0
Hl+XkKtBE#R

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/magenta.png
new file mode 100644
index 0000000000000000000000000000000000000000..de244e9a8955e6c893685d5c2ae6a51d59016cc7
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww5HpQrCzS*=+y+$!Hv4Vnv`uh6+|No!g=NbUi##j>M
z7tG-B>_!@hljQC0A~1CmuMUvIS>O>_%)r2R7=#&*=dVZs3bL1Y`ns~eU}O=H5?)g>
z^)67)4o?@y5Rc<?CwE_Zt-#SDI>AMH_V@bR${A~>&p1=R&3JCiKD`|Q$-FW0**%U*
zCUbLY^TizACrp-;&1*P#aOeM$1cgQF?Ax|z1<G7Iu=en_x7zJ@p4?+Nx-frJp~v~B
zvattxnIjp03EkeN+hDXN_vHsJk+-MSv^UIjH|1Nel(gbe4BN!7x2j#7A70i-Y3Q3U
zg^|yF@c|~6Mfw-pMH>qK@bob-ZTNA4eHuf}<?G>$Ml~6G*F1i}=#aT0@Za@<*9{V%
zXFjoB#B^n<$NAFet_F67yhE?OKJYTsGkho$iw!8>oUv%y0u8m36)X=jBLb2`*k>H$
zwPzQ6<Lc2dOIv=fMebq^#wp@8bB>;W$kY}Y!&k!iOYQL~U%pw*_a;6w_<BHc!Zg$N
zlZ-+F0jl8!Ul}T|mMpz3^Qp|{i9^0+NP8$>1!K#_aMvX_8y8JCUe@$N`Qa4jSt@bT
zy)V;FIi|%ie);!2;Mm)VQI)q>GsN{hIC}W@=aS{#R{pcs2`lVRmS6mwX@?SHOd-Qf
zs}l{YwHSCEUO%|w-N|)DZ6#yOWoOZE4OTpkzP^2d{>RT8J~b)PGvL!UHq*Z9o?r5f
z8<hDr{>&BxMyqOxYeY#(Vo9o1a#1RfVlXl=GSM|K1fmc_Gb;lS(l#)#GBBu`JpV0<
zhTQy=%(P0}8o1A?2Ld%{z-=hW%uOvWNz5%k=rI9VVq|7zXbG{zg-1vasE5JR)z4*}
HQ$iB}O3FA7

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/orange.png
new file mode 100644
index 0000000000000000000000000000000000000000..87155d47e5a9921e38c9b258ab46a9edaca626b9
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww5b|i-9QZnzBP;N0Xv4Vnv`uh6+|NkFhHmd?^V=M{s
z3ubV5b|VeMN%D4g5tzD(R|m-9EbxddW?<ku48n}Z^H-z*1=&kHeO=jKFtP|p39l)c
zdKai?ho_5Uh{y4{le;gyR^Vt6o!}xp`+NOu<%~7cXPl|uW;{1$pWcpuWZoG0>>fuY
zlesyy`C<<56DG^a<~1BVxbuHWg2Ezo_HA3V0%fipSbKQeTkZBcPwp`sU6{YA(Bu45
z+1LZU%#n=0gl=!sZ7^Ds`|<;q$lKFu+8buNoARw!N?P$KhHc{4Th%Vk4=-z^H1tiF
z!pP^o_yCj3BK?c)q74Oqc={NaHvG82K8>N~^7U{=qneDpYaTyfbjVy0`0skb>jsI>
zGoM&5V!ATb<9um!R|7jk-l5lCA9xw+89tPW#Rimb&R8^Ufri@23YG_%5dp~|>@$w>
z+OrG3arNk!r7b_#B6qO{;}r3lIY-YwWNM3y;VWVMrS|xgFW;=@dlR1-d_5pJVVY_C
zNk$=o0M&4VuMCw}OP1c2`BY}}#3A1@q&<|cg0badxa*Rejf<umFKc?C{BVl%ER{Iv
z-j`{o9Mj?$zx;b1aO~~GsLI=`8RGgL96fydbIEdVEC1Q+gcbHD%P)S;v_pw8rjX&L
z)rp4HS`54nuOHm;?&P|nwvsXCva{&71}h#%U*En!|Kn#4pPH2D8SrTvn`vKl&oBAL
z4a$5Qe`X5;qgA!UHKHUXu_V<hxhNG#F&G&bndllA0#S&enUw(uX&V?=85mSep8pm_
zLvDUbW?Cg~4czC{1A!Ve;5L+G=B5^xB<2<%^q7DwF*36<w1imV!Xu;y)WhKE>gTe~
HDWM4fNi;U`

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/pink.png
new file mode 100644
index 0000000000000000000000000000000000000000..39fbde8d31ed4fd429f53307c11facb849379313
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww5b|}B&Liwc4X|-ZvVg&^S_4W1t|Nj?1_h&g!8)He3
zUoeBivm0q3PLj8~i@?-PygEP*XMsm#F#`kNVGw3Kp1&dmD9B#o>Fdh=f{{f)N_b7l
z)Vn}EJ3L(+Lp+Ypo!outwE{<r=mZz(+28ALD`%{kKI2UNHsiT5`}B4MB=g3|XZJWN
znas_p%@=ccpD<ZYHm~8}!JYq05)>Axvv1p?6)1D<z}myx-fFksd2)~8=)(L>g&yah
z%Elh(WsYS0C3Jh6ZiCU9+?OA?MBbiO)7~)C-IQ;=Qqqb?F>DjR-l}$Set20UrJ--a
z6h=Px#Rr&N7U^GX7i}o`!_&vWwBg4E_Gt_?m#>F28r5X%UGw+>qeJG3z<<{ZUN=a5
zp83Rj5!02a9_LG=yBgRT@(#WB`oPOj&+ws4EH<EgbH<`+3pCVDR<JzCj0i{$VV`k~
z*PdPQjjKn;EN%I@7P*Tx7^jHW%sG1gAyZpq3||T3FSW;~eEDWI-<$Z%;Oha&3DZp5
zPcjM#1gM4^d}XM-TC()E%%?J&Cl2|RA?=}j6^tzx!(Er$Y+N+mcv;g6<%d(8XQ{+V
z_r6R!<(L-7_~qa8fMahbMpfQk%@Ei3;OODopG%f|TlvpkC#<kPS$^?zrX5O*F@+2_
ztxhzo)?(mwc>UmxcPG~swUvx9mz_nwHCXXD`ug?-`X4`Y_|&9C&wx+c*i8GXdw$6`
zZcygi_%mA&7_F)$t`Q|Ei6yC4$wjF^iowXh$VAt`5Qsty&8!SSNZY``%D|v%^8B|b
z8glbfGSez?Yv4Yo9thN+0k@$fGdH!kBr&%Dp~nPdiIJI=p(Vr;7ak!!pdJQKS3j3^
HP6<r_qGCCy

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/purple.png
new file mode 100644
index 0000000000000000000000000000000000000000..ada4c8ef6aff79395e0cf7fcb43eb75ce7388e0d
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww579-c5tS~WDrbbLmte~KvzP|qd|NpO-Y<>jP##j>M
z7tG-B>_!@hljQC0A~1CmuMUvIS>O>_%)r2R7=#&*=dVZs3bL1Y`ns~eU}O=H5?)g>
z^)67)4o?@y5Rc<?CwE_Zt-#SDI>AMH_V@bR${A~>&p1=R&3JCiKD`|Q$-FW0**%U*
zCUbLY^TizACrp-;&1*P#aOeM$1cgQF?Ax|z1<G7Iu=en_x7zJ@p4?+Nx-frJp~v~B
zvattxnIjp03EkeN+hDXN_vHsJk+-MSv^UIjH|1Nel(gbe4BN!7x2j#7A70i-Y3Q3U
zg^|yF@c|~6Mfw-pMH>qK@bob-ZTNA4eHuf}<?G>$Ml~6G*F1i}=#aT0@Za@<*9{V%
zXFjoB#B^n<$NAFet_F67yhE?OKJYTsGkho$iw!8>oUv%y0u8m36)X=jBLb2`*k>H$
zwPzQ6<Lc2dOIv=fMebq^#wp@8bB>;W$kY}Y!&k!iOYQL~U%pw*_a;6w_<BHc!Zg$N
zlZ-+F0jl8!Ul}T|mMpz3^Qp|{i9^0+NP8$>1!K#_aMvX_8y8JCUe@$N`Qa4jSt@bT
zy)V;FIi|%ie);!2;Mm)VQI)q>GsN{hIC}W@=aS{#R{pcs2`lVRmS6mwX@?SHOd-Qf
zs}l{YwHSCEUO%|w-N|)DZ6#yOWoOZE4OTpkzP^2d{>RT8J~b)PGvL!UHq*Z9o?r5f
z8<hDr{>&BxMyqOxYeY#(Vo9o1a#1RfVlXl=GSM|K1fmc_Gb;lS(l#)#GBBu`JpV0<
zhTQy=%(P0}8o1A?2Ld%{z-=hW%uOvWNz5%k=rI9VVq|7zXbG{zg-1vasE5JR)z4*}
HQ$iB}Uzj)^

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/red.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae710307222762051ea8753d03d47a93e4892df4
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww5RwFCjDlc0sEh#1@R!~q-Utj<K|9@2`Q!$`6#*!ev
zU<QY0H_||yByV>YfvKB#b$}es0*}aI1_r*vAk26?e?<yVkiEpy*OmPRBa48P@S2jT
zcY%6#c)B=-cpRTQx%<*<1&$Wc2`<vJzt`VZ&R8>j#+mwU#&cu#>Fo$e=8cih?r~Hy
znVVCaFXr$*VX~ZTUc<qIJO7s?C@fNE-?l|7Q0Cf!wTHL8)o#D@<Q~J(h54HbJ<dOs
zjXluI9Le}g==L_<2BS5(FF$aJygjX^y<w)iDc^dfq!o{1*d~6xRqf*Z@UliqL*Ilc
zjC}5k4=}kb(!ba)+EDO^r;mYY!;cH>(->+lUk_(As>#^9=J5kYhs+g$|E?FjZjksq
z^NIB$rYloD&X-1aHLx?}9eVBcftR74;X|2NY(V+uj78HHXsDg6V0n-k5s)0hKI0g#
zJ-gr=SC5Wa+VXQPau;hbP7$w}bM*W}rnbl!z7ob?YL8F(^37_#H}RRl*8`FhrkS>%
zWE2tzPz^Wu%20W=Wa(|0Ph~bw9P%wg+C%v&7+WreyDquexM;fZvZfcx52rZKQi+r9
zeVKO3F)fbq%fIIV$KFnis=U3LA+GPi(Zjbtmn`?T@}Ip<SYdy%{Nm?KJCqn>3K?!%
zooHCC#lY+E`oSIVPOd9zD;Z-hJBxm6u;Ov__3aDvKYr%$sY!{R0iU+9nf6up{E~0n
zpv<@NXSN_PT2)J2BT7;dOH!?pi&B9UgOP!eiLQYm5QP|;Ss8$kwt<0_fkD;e`EOA)
z<mRVjrd8tBz<o|V5U4=|ZbM0CZfbE!Vr~IKj|s>UBQq;QONb>dJVJUvJq(_%elF{r
G5}E+JEHs7y

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/white.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d787766f3e2e5f81fe9bcf449afb78dc8cec30c
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww5cIM2P+qZA;*|SGXOst@wpuWET|NsBN)7UD3+89fM
z{DK)Ap4~_Tagw~<T?D3X;?)6iI14-?iy0XB4ude`@%$AjKtc8rPhVH|7mO?dQo?IW
zrrrhW+2QHp7~*k!?&R)EuN632L?^gN&;DM2TRCIR^ciRBw;9ik*{8Q7AelEtKD)<J
z$z*O$ZN8Yp`-I7IvUv>$5AOV5lAy3ioqgLDtw5P;2i6|m_Ex+7&Xao#M;GRAD)c!2
zR5tcNFLNa0FQMDpbQ_G;<i7mCCGz&Pn)Zg7?xuX}m6BFGiea1h^;Wfu^TW#;DGhxS
zrZDokFFwHJvPl18yJ$nfAD%u2rVT$Xuuo&CxqLmG(WoY4@0!OC7#%WK1pd2T@VY_b
z^UNpKi<quV^*CP|-POR(kay^{*9TsPdWH{WVzB|`n==+oTcDwKvV!G7W<)@82>Xm<
zy!PyZZ(Kb(W@*dMwa8tp!8k>{X3o*`51HB`WB5uKf2ln_<;yp#`QF55244?IPMBue
zev(m0AV4+T;44Gr)sm&RWj>YJJaNdk3~3MLt6*%o81A~{X5*si#><*sC_kLyJWC}`
zy7y(;DaW)p#xMV#2ON7lF{<+RYKFMJ2S*Rz{#>%$+sc3TI$?$V$?}VzGwo1fj45Qe
zX?3DuwH5=f!|MlkygRwBsI6p-x$G?Zt-*@N(bu;x(Es?E!>1-CdIo&j#%9`A-SbPn
zaf347#-G`Oz-U!1ag8WRNi0dVN-jzTQVd20MkcxjhCmczXl7*qLfQrfRt5%Dljpxh
z(U6;;l9^VCTLbqw^+2Eo4Y&;@nYpROC5gEO2t6hsON`8{3@ss+xbO(+0rfC=y85}S
Ib4q9e03Y)@i2wiq

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger/yellow.png
new file mode 100644
index 0000000000000000000000000000000000000000..8ef177804e19c7679a29bb2899da25755f151920
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!3-pQ0$S$)DVB6cUq=Rpjs4tz5?O(Kg=CK)
zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C%fh@Ck7R(nUo@2?+_>
z+S;b3rtR(RAt53EA9()1!Jww5c5=SVja70xCrOEki4_zS)YsSl|NsB_zAuG9ZHy&B
ze!&b5&u*lFI7!~_E&@|G@#+9MoCO|{#S9F5he4R}c>anMpdfpRr>`sf3q}?JDd9CG
zQ||)x?C^AP4DmQVcXIco*9sghq7z)CXMeB1t(>uD`iwL6+l=SN?9<y3kjxt+pWWlA
zWHL9WHebx)eZpip*}R5>2Y3E2Nl;j%&c1DnR-nwa18Wa&d#l}k=gB>WqYLvl6?&Y1
zDjR#CmpPL0m(cBPx(!Baa$kPn5_x-CO?$&kcT>LgN=Yjo#js8MdaK&S`Qc@al!m?u
zQyBT&7aw49S)_llU9_R#4^JNh(}o`x*rzenT)rO8XjGH2cg^Dmj1HMA0{>kvc-<iJ
zdFB)AMNC(wdYmtf?rLCX$UF4f>jN)CJ;R4GvDkp}%^8cPEznRqS;6ukGa?{4gnh;_
zUVC=IH?AHXv$W;sTI4R)V4NaeGw0~}hfHmeF?=PAztkR|^5vV=d~f12gRci9CrmSK
zKglR05TF`v@RgzRYRS^uGM~z9o;c)NhO~$BRWP<(40l~}vvJXM<7G`RlpjuUo~05e
z-TN}_lw(>P<ClNW1CG6&7*%<DHA7tAgQJIUe=b?>ZRJ0Eov_0GWckI<nRX~K#uPH#
zv^vqST8n|#;q`+%-kn@m)K)UaTy_@y)?mfs=<C}T=zsjo;Zu_mJp(>%V>9im?)fF(
zxIvk3<IikCV6>{1xJHzuB$lLFB^RXvDF!10BNJT%Lm&z<G_x`QA#DQ#D+7b7$@AZ$
zXvob^$xN%nt%3WTdLU4P2Hb{{%-q!ClEmBsgdP)+B}QgehL#XZTzG`^fO;4_UHx3v
IIVCg!08C{$ivR!s

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_charger_mask.png
new file mode 100644
index 0000000000000000000000000000000000000000..de67ffc42b270ec41c37fc3b5916f98d816aeb8d
GIT binary patch
literal 1717
zcmV;m21@yfP)<h;3K|Lk000e1NJLTq001BW002M;1^@s6dyaLk0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkvmAkP!xv$rb>%c94sQ@kfA!+#TSmHibb$c+6t{YnB4RQO&XFE
z7e~Rh;NWAi>fqw6tAnc`2tGiZ9h?+hq{MTRLW>v=T<*tz&;N7pxq#5DGS%#f0jg#h
z=|o)2<yXbPD}3-Hh#|~K%+!;a#VkDQ>z=x)?xH-)yYJ8HR|+Nrd?Im->4rtTK|H%@
z>74h8!>lYR#OK5l23?T&k?XR{Z=6dG3p_JyWYhD+VPdh=#c~(3vY`@B6Gs$PqkJLf
zvch?bvs$gQ_C5IvLj`Rm!*yDtNMH#`q#!~@9TikzAxgVOiitFx$36Tbjz2{%nOqex
zax9<*6_Voz|AXJNHH%Y|Zc-=?^uE~k#~2XU1zHW;{yw(t)(PN$2ClS@zt#liK1pwM
zw8#-Kunk;XcQknqxZDATpLEHP9LY~hC>DYDGy0}HFn9~}t+{h+pX2la$kMEqZ-9eC
zV7x@x>mKh8cF*nKp7#8H0G6F{wGk}A8UO$Q24YJ`L;(K){{a7>y{D4^000SaNLh0L
z01m?d01m?e$8V@)00007bV*G`2j~F=5E>0ud#Jtu00gl~L_t(&-ql#YYx+(Yeo`{D
zi}fHKw9tZf=+@zu;#{zUgWU?5BIu%1M~D6a-CZo`6maa2MR0b@-bJAu6lvg6r*3|R
z50~#HUXt_Iw|riZXuP}kz4xBydEW%%@fZLw7z|Rcd@Q$WwF=9!U|ANb)hf2JBfj|K
z<74XeAht^e#^Z75vvmL}&c$H&9>6XcSS%J;EEfN62DI^bj8ds21)k@5Fbo63;V_uc
z@ApFi6pKXwz+^H(sZ`o83jpBa;sO9rE|*cS*Y{3>BLK0~`#&r-1KZkawF*8-rYB{<
z^So3?lgZ?;8TkDC1ON<&L%hDet}Re376Tw|#RAK+f*<8_IfQuGy(kMr6ImdpUemPr
z4Akp&l*{E1;zc_&3-nzkzr4JF5CQ;TjBSsB-?W`F@b>n$djKM`IpReVS#Su`4wYI}
z7W}#eIzTCfVHir2JkNvcx@)??`$Pb^ySoe46UWcza{$2c@$r8kY&M&#)6>(9BEP-8
zMW@q|=9UnG>+9=PHk$<iTwPtoj@K!r0DzB=kBtJzX0xD_u4Q04oq|#d+qSh@t%hE&
z2LNcd+bc>b9LEU<Ag2BD@>0n;4_0<$jYb2m>!RQ92f^`UmW|)L5E+JnTCEnk7yT_B
zmCoBP0Qmm?R(9n3zEZhPGR7G6(P#wMbv4s8SHABnPquAalj*<bc{o2mS6YJ*@|OjS
zF+4pzX^lohN*$4+p68+4?V?a9NEdZo7dJOI>QWr#D?bwMoG&UGXAW;>JkLX`)!MEW
z7>2P^{}-j97@Sf$-W5nP7W^~)0Amcg>$<QkYj3r{^Srgv-Rt$xZnxtbl6}^KZnq0c
zDJ;u^D8)RuH5yV%;rl*1osK3$yJ?z1QHcgAs|B2%rfIHDPEOElHUp81uFn|z%Ytk+
zi)OQ#_y{A*P~4F*#_<0BuE{h-dIY}j!?x|j48+NF+N0OQ!vhE*LD!ti<-iyV`pKXc
zn5MZhO*2;a<G`qDynSDz;b=61ZQC0+ZMJP|qtR$TZTUWHf$GkK3=l#<2!ZH)Fc_@W
z0{*_hFbp&r4e)s?Vw0MIs16JU15LIQO6f|aC)`MilZpppEZBi;Cz}=?X#i0!bGnHR
z`S&OlRir!ZnDnS)0BE&ZvE<&QZBq#<)Dx=of!pdp958=H2SOP*v<@)F5^<o5Ivss#
z;TCsaMF&zr7>$rWH1fcruV8+DenS6mlL2v_KAlcO&c(s9?|gDxdEK}c<n#H^&Q+{X
zC<K|<6#3C?X!rN`Ydcr9`FxJ&=jW|=Un-U4FRAA9IVzP(2>FiVAeYNY&++W+3;>YH
zWUyQ=k;!C2>n)c{0KnJRS7>}d!|3iSl?oik!E81I0Oa#|R4SFkbLUQ@&c(oF<Bw#8
z#xRV)IRMONvqZI&IaM8Vq{`<ci|#IMj2O&OT(8I3!H;0yk8p`^N*%{Z1tB3Mc;lsF
znM@`Cp$Jr6rdGLJZVhmvbCp(06%RU>*Epew6BJR1R6rQTLy!Rx?Wz?{l<(+*n*voY
z6bc}Oz;)eFCgP0moKhMZ8z(?A4G;s;qg72+<3-$XaPg~XY4`pB%U(j}gNzH(00000
LNkvXXu0mjfpj{_{

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/black.png
new file mode 100644
index 0000000000000000000000000000000000000000..4809d12d978d12a4d3e5d0b856a9a24dd36a60d8
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4RUcN|KVY|NsBLefxH5{mRckJ&Ywme!&b5
z&u*lFI7!~_E`0fW4g7%|&H|6fVg?4jLm<p3s^QfD6l5>)^mS!_!N?*Y$7*xtX$Me`
zsi%u$h{fr-6BUaN8wj{=SGmK+>DefLV*%eKpJnVB{TG;3W(Ib0Cryx9uq520FCaoo
zgi(1S+mxqV`<!-7$_eciDPPu~Ve+|bYdtHc5T}Ghb<Klfzcm)_XM$Y#ChKl2I~1&M
zlg}%yaj)aoa^}rU+A|imJ({}l_pR3#1Vz8??%$pGaPBgxcORxdD4h|J_}81EgEP*@
z_e0D66)PUB|5bk|;=Wj(8&BBW*S|LjZ&Km4)AsM^c(Bj<yg;z_os95^MTa`{f9w!n
zwNi<Xx1#6Aq~~AwLKkSPRanoF<Zxgip9%Ad=AdB3wC(DTKEL2rYZVPxexZOPAZX>J
zq_W=)cI#IgG=&Fjt&+GJ@+@Pv15n>-(d6Q*Ue?Y&8)Q=qf-gLrbTjg~t!(_6!hc*X
zb-z~cy!-$APW>NjuN%1=r$3Nv1cs?<iEBhjN@7W>RdP`(kYX@0Ff!CNG}JXR2r)3V
zGB&a@Fw!<Kure^nT4nndMMG|WN@iLmZVl4kTLXa_G~hOrWag$8mn7yEfb^K?8W`#t
fn1mRbSs4S3H-%WzJngzOP!EHrtDnm{r-UW|ZQ%Dz

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f37ea37c2413d86bb959b3323d79d30d41e5674
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4S6v)3kIN|NsAg`}S>fvz_aKdKgQB{DK)A
zp4~_Tagw~<UHJ0%8u$Y_oCO|{#S9F5hd`K7RKu$QD9B#o>Fdh=f{{f)j@9PO(+;2>
zQ%@Ji5R21uCn^>lHV|;#u5yQs)3Z_h#sa=eKFioM`Y$l6%na=0PMRRIU`e<~UqFPG
z2&3{uwkc1!_BrjEloQ%3QogJ|!{l?>)_PV>Ax;U2>Y4||erqh;&jh*fP1fC5b|_fi
zCZAVY<6g(F<;<Izv}Y`Ado*?9?^~}g2#S8&-M>5W;oN0X?><a_P&y+b@vk>S2WOm*
z?}wKCD^@&M|EvB`#C@?mH=eM$uYYe6-lW27r|sX-@nE0zd4XW<I~m~-iw<?@|JWhE
zYNZk%Z$;0KNzcFVg)Y!otFWFU$>G34J`?5@%|XG6Y1`EweSX2M)+!pX{6YaoK+wub
zNoBtq?AEU~XbKP5S|xEc<XOgS2cW*wqRGWqy{w&mHpr$J1YdYK>1O0}TiN(Ch5xu(
z>VB=>dH4VKo%%o6UN>?#PJbZT2n<uz64!{5l*E!$tK_0oAjM#0U}UIkXsBys5Mp3z
zWo%?+V5DteU}a#CwaWG_iiX_$l+3hB+#006w*~?=XuxeK$;?eHE=kNS0O>K&H89jQ
fFbOd<voZ!6Zwj%bdD?YnpdJQKS3j3^P6<r_euekN

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/brown.png
new file mode 100644
index 0000000000000000000000000000000000000000..8c2e5bd76bf7e913dee87201e87ee55916b0f770
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4RqKYVp>J|NsBLefxG+B-31=9>$U&zhDN3
zXE)M7oFs2|7ry+x2L3<}XMsm#F#`kNArNL1)$nQn3bL1Y`ns~eU}O=HW3@T+v;(Ne
z)YHW=#NzbaiHb#s4Fp`btK4DZ^lTKrv4HQA&ocIm{tL`1GXp!hlP1V4SQ75h7Z9N(
z!l*ovZOT)weNMY3<%IT%lrQVgF!@}zwVstzh*LtMy5>Q#-x>?|GeItVlXW+i9SYXB
z$>){UxYzM(IrC;F?HLQ(9!=f&`_}6Vf}-Dc_wP=8ICq)UyARVJl+K7q{Oiro!5Qb{
z`=Mq3iWLvm|EfO}abGOYjVEmG>))G%H>vR2Y5R9{JlJP_ULaWePDXgdqC*|}KX!<(
zTB*dxTha4l((^BTp$jzDDy-*7ayYP%&xCnJb5O8i+IICvpI>mRwTcETzfiyt5VUeq
zQrYhYyY;ILn!*FNR!Lk9d6qHT0jTe^XmasYFKcI?4YDZ)!51D*x*7T0RyO`j;XkgH
zx?ihz-u?f5r~VJN*Nxnb(;rAS0>f0b#5JNMC9x#cD!C{XNHG{07#Zps8tNJugcz7w
z85>y{7-<_ASQ!{(t+IWKq9HdwB{QuOw+89&t${!d8gLs*GILXlOA>PnKzdAc4GeV+
fOhOFJtc-!in?fvUo_5_CsE5JR)z4*}Q$iB}0>1YZ

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/cyan.png
new file mode 100644
index 0000000000000000000000000000000000000000..b427647f06a2a623073ebaacb30203b4a4435799
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4T4ny+Zkw|NsBLefu_tLLeVd4`WG?UoeBi
zvm0q3PLj8~3t#?T1Aicgv%n*=n1O-s5C}7hYIrpO1=&kHeO=jKFtP~9vD%z@+5yyK
z>gnPbVsU!zM8%@R1_G|zRqn8HdNzvRSipD5XBm4&{{?21nSq_$NfTriED87M3y9DX
zVN{;THsvYTKBrxiazcAW%9r(Ln0zkVTF=TU#3><BUGt#WZ;gffnIIRw$+{cM4h8Gm
z<nu~v-0S$YoOv^o_KbyXkEU+?ee3lFLD6r!`*$ZkoV!fw-G}K9N@qkQ{`F?);EeO}
z{m`<1#fk^(f7Ks~xG$FH#uGO8_3ur>n^bu1wEa6e9_+I|FA%JKCnG#!(V-6gA3MZX
ztyJRUt?2nN>G>DF&;=T671nbkIUHEXXTrRqIVe~$ZM*uT&o8*uT15kvUnt-R2wFKQ
zsqA-y-TKuAP2mAst0b<5Jj<Bv0MvI{G`aYym$kFc2H6yY;0q5Y-Hd#0D;s~N@E=!8
z-LKU<@BaV3Q~w9s>qhRz=?^3ufnlmz;u=wsl30>zm0Xkxq!^40j0|-R4RwtSLJUl;
zjE$@ejI<35tPBjYR@uHq(U6;;l9^VCTZ8oX)<B>J4Y&;@nYpROC5gEOAU!6!28Ox@
fCLxAqR>nZ%O(B*vPrL36)WhKE>gTe~DWM4fSjzUq

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..e400ab1edf73537720185be166209ea5285a075e
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4PImF2?3o|NsBLef##bTESC5J&Ywme!&b5
z&u*lFI7!~_E`0fW4g7%|&H|6fVg?4jLm<p3s^QfD6l5>)^mS!_!N?*Y$7*xtX$Me`
zsi%u$h{fr-6BUaN8wj{=SGmK+>DefLV*%eKpJnVB{TG;3W(Ib0Cryx9uq520FCaoo
zgi(1S+mxqV`<!-7$_eciDPPu~Ve+|bYdtHc5T}Ghb<Klfzcm)_XM$Y#ChKl2I~1&M
zlg}%yaj)aoa^}rU+A|imJ({}l_pR3#1Vz8??%$pGaPBgxcORxdD4h|J_}81EgEP*@
z_e0D66)PUB|5bk|;=Wj(8&BBW*S|LjZ&Km4)AsM^c(Bj<yg;z_os95^MTa`{f9w!n
zwNi<Xx1#6Aq~~AwLKkSPRanoF<Zxgip9%Ad=AdB3wC(DTKEL2rYZVPxexZOPAZX>J
zq_W=)cI#IgG=&Fjt&+GJ@+@Pv15n>-(d6Q*Ue?Y&8)Q=qf-gLrbTjg~t!(_6!hc*X
zb-z~cy!-$APW>NjuN%1=r$3Nv1cs?<iEBhjN@7W>RdP`(kYX@0Ff!CNG}JXR2r)3V
zGB&a@Fw!<Kure^nT4nndMMG|WN@iLmZVl4kTLXa_G~hOrWag$8mn7yEfb^K?8W`#t
fn1mRbSs4S3H-%WzJngzOP!EHrtDnm{r-UW|#!>fi

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/green.png
new file mode 100644
index 0000000000000000000000000000000000000000..5fae921aa3735541edf9428f50aa8d8d2588949a
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4R>S(r(e>|NsBLef#$OZL%FeJ&Ywme!&b5
z&u*lFI7!~_E`0fW4g7%|&H|6fVg?4jLm<p3s^QfD6l5>)^mS!_!N?*Y$7*xtDbNH)
zQ%@Ji5R21uCn^>lHV|;#u5yQs)3Z_h#sa=eKFioM`Y$l6%na=0PMRRIU`e<~UqFPG
z2&3{uwkc1!_BrjEloQ%3QogJ|!{l?>)_PV>Ax;U2>Y4||erqh;&jh*fP1fC5b|_fi
zCZAVY<6g(F<;<Izv}Y`Ado*?9?^~}g2#S8&-M>5W;oN0X?><a_P&y+b@vk>S2WOm*
z?}wKCD^@&M|EvB`#C@?mH=eM$uYYe6-lW27r|sX-@nE0zd4XW<I~m~-iw<?@|JWhE
zYNZk%Z$;0KNzcFVg)Y!otFWFU$>G34J`?5@%|XG6Y1`EweSX2M)+!pX{6YaoK+wub
zNoBtq?AEU~XbKP5S|xEc<XOgS2cW*wqRGWqy{w&mHpr$J1YdYK>1O0}TiN(Ch5xu(
z>VB=>dH4VKo%%o6UN>?#PJbZT2n<uz64!{5l*E!$tK_0oAjM#0U}UIkXsBys5Mp3z
zWo%?+V5DteU}a#CwaWG_iiX_$l+3hB+#006w*~?=XuxeK$;?eHE=kNS0O>K&H89jQ
fFbOd<voZ!6Zwj%bdD?YnpdJQKS3j3^P6<r_J%RV9

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/light_blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a00915f1adab02d633b21eefd53560ed4c4d958
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4StPuNY3-_W%F?+qZAm$bWMH>R~Ji@(X5g
zcy=QV#7XjYcj3$5Yv2#$a29w(7BevL9RguSQ4OyKpdfpRr>`sf3q}?JIaZr9Pdk8m
zOg&v3Lo80uov2uJ*g(K_yUHClPR~a18w>a@`7C44=)b_MGBdD~J86Q<f+gV|eE|_#
zB8<ut*`_?@+UK-uQch^ENcpn<43p1gTkBalg*YW7s%st;`>nBXKNIA_H(7UM*`Z*4
zn|xkrje8xxmNRc=(w?!f?a|bYzi++1ASn86cmM9hhjW)nz56izLFtT$#J}DQ9h`AK
zz8_lluUPS5{jd5%5%<ON+<3y~zW%*Qc#{gRowk2R$Af*==LLeb?_`8WEIQPo|6_;v
zs+CH7ycIn^CO!Yc7rH=Wt-^YaB!>eF`AnEsGzSGMrfpY$^!Ww1TB~Tl@(TqV0YNJ#
zC6)bduv@>{pea0HYn8;+kY^dQ9f0~yizXLe^|E&M*&v%@5Pad`q??h?ZDr%n6#nCC
zsr$8h=iUF`ck2IOd)>(0IQ@ZSBQQ)=OI#yLQW8s2t&)pUffR$0fsvuEp`oskL5P8=
zm9dePfswX>ft7(l)+*b#C>nC}Q!>*kachwN-WmwhpaHj`Br`X)xFj*R0Hnu6*T7KM
gz$C=b%*q&OyeY(z=4scRfqED`UHx3vIVCg!0FA==DF6Tf

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/light_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..39b2653da096b97e5212f130da8608b6d665f8e8
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4OSc^(7^_|NsBLef##r`rROhFqQ=Q1v5B2
zyO9RsBze2L@a69{@CR}@3p^r=85sBufiR<}hF1enkiEpy*OmPRBa46>tIe6G9Y8&%
zo-U3d7N_S<R4h7dAmF-P<qjLCXQTLy1$>u$ma%8_Utm_58Q964G(l#;l5mf{fCw!S
zM&*fYQ=W3|bJ{g2C$v|jd|7{n$>*}I^{kvioDve%H4lpY)>yco33B0^th=%7P_VvD
zKCiUKy^deYnKv_O&sf;@XzIq_w_aZm6#cfle|O@;xyz*9eVG2BbVfwtUvGvE&Nv_6
z4=wvwtaz~gSN)-g`(k-+JYjQR|K23LNrl%=+rOjZ!9MHr0>RpMGQuMk9qQ2ku|s^-
zN+mwtik=^no`2yBU7)d6VLeBZ!-0i-Cd@0EgMt;)wyQt-{DNDpRWxAvg#wO%pp}!7
z%6>Q4tzT`>6dtg(O5$qBvy9meKz*l0lZ&r<Sv&h|kWDcNzVL9;&B*7rvhimM|8cd{
z{aU^A?*H#Q^?$IvZscy9{y?%37^bQvt`Q|Ei6yC4$wjF^iowXh$WYhNP}j&H#K6?b
z*vQJjNZY``%D^CNmF-&;4Y~O#nQ4`{HAsJN4Fqb?fZI@#nVVW%l9*cn(qp1)V5n<g
e5@Kj(Wehal6k<v9wCm15Jq(_%elF{r5}E*bGWj3?

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/lime.png
new file mode 100644
index 0000000000000000000000000000000000000000..521fbba8a062598be551a8b3771324fa3705e901
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4V0X#bf4({Qv*|_U+sA!xlRM^)QwM`2{mL
zJiCzw;v{*yyYS`jHSh;=I14-?iy0XB4uLSEsD@VqP>{XE)7O>#1tW`q9IMTlryW2&
zrk*a2Ar`0SPE;&9Y#`veUF8lNr)Q)1jRky{e3r3i^j~0BnHkv0oissa!IE%~zJLfV
z5k}>SY*U_c?Q_~SDJQg7q<mR_hRNr$t@W&&LYxv3)in=_{nl8xp9yl|o2<LB>`<`2
zO+K%*#=VYT%b7PbY0p^L_Gs$H-?v_05ET8kyMK4$!@0|(-hG(<pmat=;$Lru4$e3q
z-w!SOSFCuj{#X5>i2GuBZaiUgU;o}Dyh(-EPTRku<H0`b^8&%zcQV2w79Hx)|FJ`S
z)k-Bk-in?dlb(O!3tgbGR$)CylEZ<8d?w5*nuCHB)3&QW`uu`htyMH&`Go?GfS{F=
zlFEKJ*sWh}&=el9wMyb@$g_;u4nTdUMU#uKdRaUBY>-Vc2)^)e(#^={wzBbO3jcAn
z)csn$^X~ueJN19Cy>8@goc=(v5g4YbC9V-ADTyViR>?)FK#IZ0z{pV7&`{UNAjH7b
z%Gk)tz)0J`z{<cNYnAO=6b-rgDVb@NxHU+BZw&-$(16=el9`)YT#}eu0McWkYhb8r
fU=m_zW@QXC-V|a<^R(;EKs^keu6{1-oD!M<hL!j{

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/magenta.png
new file mode 100644
index 0000000000000000000000000000000000000000..8cdbb6e79d0dbf1d7b7a5e9d79d3bcedadacc998
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4Qk9SIst=^#A|=+qZ9f&YAEBsE4s6$S;_|
z;n|He5GTpo-GwiIuYo_1!&%@FS<Jw|cL;<TMK!z{fP(BLp1!W^FBn+_<XCOaJnaDL
zG4*tD46!&pccNm^VFLlz?J9TJI6WK1Z!F-u<g<)DqyGZ4%FMt{?xYDa3zmd?^aVs{
zi7+ZpWSjDoYoF7uNjagtBIV2aGfY00ZLMeJ6ylVSsIGZX?6=0k{Y;Px-(=m5Wru?G
zZSr}gHSTr%TF$(gNqfe^wntMp{=W74f}rTP-Tk{0AI@DS_3p#;2c<J2690NLba2M`
z_<m^FzhcFM^}p&5Mcfz5bK?n{`}+4L;Y}*McG~_O9S`<dpBD($zLOCivFK2T{*N8v
zt5z!U@mBQwnDqP$U+4mjwF>Jwk{k{!<TGJj(Hs=4n6_R0(dQT3YOSIH%P$mg1O%;|
zlvMV+!EXI(gQoC+tyL0NL!M>Kb^z)-Et*_>)yvx1XM=2tLGXo#lWs;nx0Q`QQ}~ao
zrS8}2op=9#->LtD?R6t}<MaoTjleKfEpd$~Nl7e8wMs5Z1yT$~21bUuhK9OE1|bHf
zR>nqF21eQj237_JS*vW{qG-s?PsvQH#H~U4dut$2g9hA&lFZ!H;*!MN0+1dPT?0d1
g1CtO#Gb>}D@um<<nx|cN2I^t(boFyt=akR{0AR2Ai~s-t

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/orange.png
new file mode 100644
index 0000000000000000000000000000000000000000..019b10c932278bbd6f77bb3aa41d126e4dc20df4
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4V%x_|GKp{{R2~_U+rkixPGL^)QwM`2{mL
zJiCzw;v{*yyYS`jHSh;=I14-?iy0XB4uLSEsD@VqP>{XE)7O>#1tW`q9IMTlryW2&
zrk*a2Ar`0SPE;&9Y#`veUF8lNr)Q)1jRky{e3r3i^j~0BnHkv0oissa!IE%~zJLfV
z5k}>SY*U_c?Q_~SDJQg7q<mR_hRNr$t@W&&LYxv3)in=_{nl8xp9yl|o2<LB>`<`2
zO+K%*#=VYT%b7PbY0p^L_Gs$H-?v_05ET8kyMK4$!@0|(-hG(<pmat=;$Lru4$e3q
z-w!SOSFCuj{#X5>i2GuBZaiUgU;o}Dyh(-EPTRku<H0`b^8&%zcQV2w79Hx)|FJ`S
z)k-Bk-in?dlb(O!3tgbGR$)CylEZ<8d?w5*nuCHB)3&QW`uu`htyMH&`Go?GfS{F=
zlFEKJ*sWh}&=el9wMyb@$g_;u4nTdUMU#uKdRaUBY>-Vc2)^)e(#^={wzBbO3jcAn
z)csn$^X~ueJN19Cy>8@goc=(v5g4YbC9V-ADTyViR>?)FK#IZ0z{pV7&`{UNAjH7b
z%Gk)tz)0J`z{<cNYnAO=6b-rgDVb@NxHU+BZw&-$(16=el9`)YT#}eu0McWkYhb8r
fU=m_zW@QXC-V|a<^R(;EKs^keu6{1-oD!M<NJ{vW

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/pink.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b21f662cad527342d24a23a92c81c6448b69c31
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4RMsm!2x=`~Uy{?c296^DTG=)WcX3<QL4~
z@a#q!h?C^)?!uS9*T5gh;VkfoEM{QfI|Ravq8eTeKtc8rPhVH|7mO?da;!FIo^}BB
zn0mT6hFF}QJ5jOduz`T<c9lD9oSu#1Hx}?+@>#~7(SLziWoBR}chUrz1xvy``T`=f
zL>QGPvQ2r)wa;nSq@2)Rk@98z87800w$`(93UNwERM$Kx_FH4&ekRC;Z?f*jvO~f8
zHu=2L8uvPWEoa`$q&;I{+oP!)f8Tn2K~VJD?*84059cnEdiP=agVGrhiGRHrIymEe
zd_T18U$NrB`d{^jBJPXjx$%U}ef@ir@Fo>rJ8l1tjtBd!&kF==-^mD%SahgE|HlsT
zRV$VFcq@8-OnUx>FLZ&%T7~r-Ne%}V@|iHNXbuWiOxv#h=<^G1wN}x9<rfM#0)kdf
zN-F!^V7Gp?K~s3Z)+&jsA<r^qI{@{a7ELa`>SgWhvq3h+Ao#+=NjD>(+sekDDg4LP
zQuk~1&b$A=@6`Xn_PUX~ary(vMqrq#mbgZgq$HN4S|t~y0x1R~10zFSLqlC7gAfB#
zD`O)o10!t%11kfAtW~yeQ8eV{r(~v8;?^Mjy)_W1K?80>NoH<paY<rs0Z5ODu7RPh
gfk}v=nUyincvFZa&C{+s1NAU?y85}Sb4q9e07^3YY5)KL

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/purple.png
new file mode 100644
index 0000000000000000000000000000000000000000..d46ac1bb449f98198d7e77dda0778839bda412dd
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4NfROA_RJ|NsAg`}XY*sbzdXJ&Ywme!&b5
z&u*lFI7!~_E`0fW4g7%|&H|6fVg?4jLm<p3s^QfD6l5>)^mS!_!N?*Y$7*xtX$Me`
zsi%u$h{fr-6BUaN8wj{=SGmK+>DefLV*%eKpJnVB{TG;3W(Ib0Cryx9uq520FCaoo
zgi(1S+mxqV`<!-7$_eciDPPu~Ve+|bYdtHc5T}Ghb<Klfzcm)_XM$Y#ChKl2I~1&M
zlg}%yaj)aoa^}rU+A|imJ({}l_pR3#1Vz8??%$pGaPBgxcORxdD4h|J_}81EgEP*@
z_e0D66)PUB|5bk|;=Wj(8&BBW*S|LjZ&Km4)AsM^c(Bj<yg;z_os95^MTa`{f9w!n
zwNi<Xx1#6Aq~~AwLKkSPRanoF<Zxgip9%Ad=AdB3wC(DTKEL2rYZVPxexZOPAZX>J
zq_W=)cI#IgG=&Fjt&+GJ@+@Pv15n>-(d6Q*Ue?Y&8)Q=qf-gLrbTjg~t!(_6!hc*X
zb-z~cy!-$APW>NjuN%1=r$3Nv1cs?<iEBhjN@7W>RdP`(kYX@0Ff!CNG}JXR2r)3V
zGB&a@Fw!<Kure^nT4nndMMG|WN@iLmZVl4kTLXa_G~hOrWag$8mn7yEfb^K?8W`#t
fn1mRbSs4S3H-%WzJngzOP!EHrtDnm{r-UW|hKl$+

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/red.png
new file mode 100644
index 0000000000000000000000000000000000000000..df58e67b0af138c6f05f5a743c2e948c0b2224c7
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4U)06`SN_{{R1f`}XaURr9X^^)QwM`2{mL
zJiCzw;v{*yyYS`jHSh;=I14-?iy0XB4uLSEsD@VqP>{XE)7O>#1tW`q9IMTlryW2&
zrk*a2Ar`0SPE;&9Y#`veUF8lNr)Q)1jRky{e3r3i^j~0BnHkv0oissa!IE%~zJLfV
z5k}>SY*U_c?Q_~SDJQg7q<mR_hRNr$t@W&&LYxv3)in=_{nl8xp9yl|o2<LB>`<`2
zO+K%*#=VYT%b7PbY0p^L_Gs$H-?v_05ET8kyMK4$!@0|(-hG(<pmat=;$Lru4$e3q
z-w!SOSFCuj{#X5>i2GuBZaiUgU;o}Dyh(-EPTRku<H0`b^8&%zcQV2w79Hx)|FJ`S
z)k-Bk-in?dlb(O!3tgbGR$)CylEZ<8d?w5*nuCHB)3&QW`uu`htyMH&`Go?GfS{F=
zlFEKJ*sWh}&=el9wMyb@$g_;u4nTdUMU#uKdRaUBY>-Vc2)^)e(#^={wzBbO3jcAn
z)csn$^X~ueJN19Cy>8@goc=(v5g4YbC9V-ADTyViR>?)FK#IZ0z{pV7&`{UNAjH7b
z%Gk)tz)0J`z{<cNYnAO=6b-rgDVb@NxHU+BZw&-$(16=el9`)YT#}eu0McWkYhb8r
fU=m_zW@QXC-V|a<^R(;EKs^keu6{1-oD!M<mLm8^

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/white.png
new file mode 100644
index 0000000000000000000000000000000000000000..55e0f3c584fd55f743af6b55050bc8d035df47eb
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4Pk~{J47c>i_@$Z{NOsGKVW1sE4s6$S;_|
z;n|He5GTpo-GwiIuYo_1!&%@FS<Jw|cL;<TMK!z{fP(BLp1!W^FBn+_<XCOaJnaDL
zG4*tD46!&pccNm^VFLlz?J9TJI6WK1Z!F-u<g<)DqyGZ4%FMt{?xYDa3zmd?^aVs{
zi7+ZpWSjDoYoF7uNjagtBIV2aGfY00ZLMeJ6ylVSsIGZX?6=0k{Y;Px-(=m5Wru?G
zZSr}gHSTr%TF$(gNqfe^wntMp{=W74f}rTP-Tk{0AI@DS_3p#;2c<J2690NLba2M`
z_<m^FzhcFM^}p&5Mcfz5bK?n{`}+4L;Y}*McG~_O9S`<dpBD($zLOCivFK2T{*N8v
zt5z!U@mBQwnDqP$U+4mjwF>Jwk{k{!<TGJj(Hs=4n6_R0(dQT3YOSIH%P$mg1O%;|
zlvMV+!EXI(gQoC+tyL0NL!M>Kb^z)-Et*_>)yvx1XM=2tLGXo#lWs;nx0Q`QQ}~ao
zrS8}2op=9#->LtD?R6t}<MaoTjleKfEpd$~Nl7e8wMs5Z1yT$~21bUuhK9OE1|bHf
zR>nqF21eQj237_JS*vW{qG-s?PsvQH#H~U4dut$2g9hA&lFZ!H;*!MN0+1dPT?0d1
g1CtO#Gb>}D@um<<nx|cN2I^t(boFyt=akR{0NX?R8~^|S

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer/yellow.png
new file mode 100644
index 0000000000000000000000000000000000000000..15fe6c0bb98c7361aa42e194454ba69f58a110f2
GIT binary patch
literal 702
zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib
z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{JU<C&U#<2L=WvBqWH5
ziT%I9@c)6Qsi~=&nwp%P+*SsL{|pTE_4Qv5DqmVA_y7O@+qZ9PZ?p;p>R~Ji@(X5g
zcy=QV#7XjYcj3$5Yv2#$a29w(7BevL9RguSQ4OyKpdfpRr>`sf3q}?JIaZr9Pdk8m
zOg&v3Lo80uov2uJ*g(K_yUHClPR~a18w>a@`7C44=)b_MGBdD~J86Q<f+gV|eE|_#
zB8<ut*`_?@+UK-uQch^ENcpn<43p1gTkBalg*YW7s%st;`>nBXKNIA_H(7UM*`Z*4
zn|xkrje8xxmNRc=(w?!f?a|bYzi++1ASn86cmM9hhjW)nz56izLFtT$#J}DQ9h`AK
zz8_lluUPS5{jd5%5%<ON+<3y~zW%*Qc#{gRowk2R$Af*==LLeb?_`8WEIQPo|6_;v
zs+CH7ycIn^CO!Yc7rH=Wt-^YaB!>eF`AnEsGzSGMrfpY$^!Ww1TB~Tl@(TqV0YNJ#
zC6)bduv@>{pea0HYn8;+kY^dQ9f0~yizXLe^|E&M*&v%@5Pad`q??h?ZDr%n6#nCC
zsr$8h=iUF`ck2IOd)>(0IQ@ZSBQQ)=OI#yLQW8s2t&)pUffR$0fsvuEp`oskL5P8=
zm9dePfswX>ft7(l)+*b#C>nC}Q!>*kachwN-WmwhpaHj`Br`X)xFj*R0Hnu6*T7KM
gz$C=b%*q&OyeY(z=4scRfqED`UHx3vIVCg!04rwr`2YX_

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/drive_viewer_mask.png
new file mode 100644
index 0000000000000000000000000000000000000000..306715ad1c48311aba8ef21a117e3f5af9270de4
GIT binary patch
literal 1234
zcmV;@1TFiCP)<h;3K|Lk000e1NJLTq002M$001Be1^@s6qMd$(0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkvmAkP!xv$rb>%c94sQ@kfA!+#TSmHibb$c+6t{YnB4RQO&XFE
z7e~Rh;NWAi>fqw6tAnc`2tGiZ9h?+hq{MTRLW>v=T<*tz&;N7pxq#5DGS%#f0jg#h
z=|o)2<yXbPD}3-Hh#|~K%+!;a#VkDQ>z=x)?xH-)yYJ8HR|+Nrd?Im->4rtTK|H%@
z>74h8!>lYR#OK5l23?T&k?XR{Z=6dG3p_JyWYhD+VPdh=#c~(3vY`@B6Gs$PqkJLf
zvch?bvs$gQ_C5IvLj`Rm!*yDtNMH#`q#!~@9TikzAxgVOiitFx$36Tbjz2{%nOqex
zax9<*6_Voz|AXJNHH%Y|Zc-=?^uE~k#~2XU1zHW;{yw(t)(PN$2ClS@zt#liK1pwM
zw8#-Kunk;XcQknqxZDATpLEHP9LY~hC>DYDGy0}HFn9~}t+{h+pX2la$kMEqZ-9eC
zV7x@x>mKh8cF*nKp7#8H0G6F{wGk}A8UO$Q24YJ`L;(K){{a7>y{D4^000SaNLh0L
z01m<c01m<d6(~x800007bV*G`2j~F=5FI+9hnsc)00PcQL_t(&-sM=W&gwuAJxiKE
zg5U)<JOH|g;;;l!Q;Efbq7q#k2?~qERAC9GB!C5nAysuqRIj)hZYeF@b}96`-$@AF
z&CG81bawvOVzB@KaL(}xuImB-dc7XfpxJCbjCZ@;!+1Cx0stJxL95jgS~E&k*Y((U
zjyjud+W-J1I7mX&CPjejx|q#osr5MLP>7xD_4-n{R;wjiNftPcBc(T)OfZ|xaJgJk
z>DTLZ=(_&b0tj&=)M~ZdzMiPr%j(2I$=f`~<1sp&4pyrb0N{4JVY}S|05nbe`t?yh
zwNa<j0RU_^oBJFQ@hb=*3#eABg>s-@wSad;02$p<-Ush?yC{`P_g~SVe9GGs+U@qk
zcrX}9ttS(jIp<KwghUQ6V{S!-LK&WDD*V5pgkKH?01k%(4u?acu&Sz=H(IaPk@KU`
zD0PMxOrK@z6NPgwba+{Z6LpO^=l4UWtqDkv3b}f{p89=k+x`~?lD@7eN#6kHT&^4@
zA=h=EglR4d0n}@VbE2;6!m_MPhc->K_?cjsG*wmabM$N&hV(v`W%<kHk{O2Ki^wmR
zOJ-S?Z<;1kC^4B%r-_OpGD)UN1kiJ(Qh9QguPiZeXz7CLsUPqY@a_`2Fa*Sf$uQpC
zOZX@OK}Q&NikhbR!8;lphvry#-SheU@Gk<A&6R+t&>Eb}l30-igc`X_*L8TF$3%V6
zd_HHn6Ogur{wm?3IWqllCwnv+WooM{RE}m%B(kQYq@Omjgri0f`~6;c9g<Zjj+V=1
z1^~C)O(>RXng-J}8R?5|O#5h>=9B(ciy@g}BB*PcCX37GTdh_kNxH5_T0mUZn0rS^
zHXD=CuT&~5<Ud%1Pho{6Ad3YQ0So|+$D`k9G#CJ!PAB0P^*oQ+wvB$jFRT;XXFi`Z
w+4NePfLBpK#EXAA3gmVLvc}PO>3<7<05pwNYEdrq?EnA(07*qoM6N<$f<SmRTmS$7

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/black.png
index a43dd7d925844d2cadfad4919c79036863ccee66..8ed5fa865e366367a28d6445840c2680397000fa 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjip0ctE_4W1tZ!n07iHXL!&79b7%`PC$_$qnUjg2Q`8RZPktc;AU
b3=Fjm46F<cViTrMW&i?DS3j3^P6<r_xFHwl

delta 72
zcmX@Ya)f0<iLkV^ysWH3eSN)@l$@BDSfv+7(!_Rac2-H*DxR*UjVEIn<qS-%jDW~e
Z+rYrez<{w(xr_k_JYD@<);T3K0RXbj5`O>y

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/blue.png
index c0046cb5001d03b885677b84532e0439a9eef163..edddb6a75910bdf68e6bf53cb9346aa001f0acd5 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjio(6^!>+9?P-(V0E6RRsqoH4Q8nq5Gg@m2Dy8yio?GRhg6Ss58y
b85n9C7+4t?#3oFi%m4(Qu6{1-oD!M<`7#+7

delta 72
zcmX@Ya)f0<iLkC-r-9+b`uchu-BvL%u`^3gaZPNuW@nX@t>Wow+ITXSQO>~B$_R)o
ZwG9lc3=9|xmCG1_z|+;wWt~$(697%O6-odA

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/brown.png
index a88e41fa3a6f94cf83795c0e65bef058e1473181..b6ff96d344b24f67f7ded4a7728759c55ccee9bc 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjip4m>S_4W1tZ!n07iCuPU(4N?C%`PC$_$qnUjg2Q`8RZPktc;AU
b3=Fjm46F<cViTrMW&i?DS3j3^P6<r_>@*nC

delta 72
zcmX@Ya)f0<iEyf&a<-FdeSLkBt&*6S*gBEYlM~ym*;yrJt9ZJaHlB=Slru23G6Et?
ZZ36=<0|UlF<uV2!@O1TaS?83{1OO|(6siCK

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/cyan.png
index fe247efcc6923ee321e71c991269376eb0eaba09..5fdcc4afca1672bd4fd9a8ec204c7ac8c428b553 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjio+5P}_4W1tZ!n07iT(CFCNi<znq5Gg@m2Dy8yio?GRhg6Ss58y
b85n9C7+4t?#3oFi%m4(Qu6{1-oD!M<4)7Uy

delta 72
zcmX@Ya)f0<iLh{4gGgOReSN)9ajlq`7$dh*+{AWkc2-H*DxR*UjVEIn<qS-%jDW~e
Z+rYrez<{w(xr_k_JYD@<);T3K0RR%w6aoMM

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/gray.png
index 4c89b2e339a29e5c47ddf98c672830f2008be306..ac62beaea962c7c5ef3f58fb3ce282977f69bec0 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjio>q2__4W1tZ!n07iAAjWR5r2Qnq5Gg@m2Dy8yio?GRhg6Ss58y
b85n9C7+4t?#3oFi%m4(Qu6{1-oD!M<1g05b

delta 72
zcmX@Ya)f0<iLjZKot2$qeSN*Dg^ie)n59AZ=ZWps?5vWqRXkly8&AeE${Cni83B={
Zwt<0_fdONoav1{<c)I$ztaD0e0ssnI6chje

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/green.png
index 9b92965b5e0e15579597e49e253c897ac3324b02..8c9dddc4bca5f18fef99f673e4179f6c7434b1a4 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjip8jc4_4W1tZ!n07iKU-$^_kdi%`PC$_$qnUjg2Q`8RZPktc;AU
b3=Fjm46F<cViTrMW&i?DS3j3^P6<r_>iHPY

delta 72
zcmX@Ya)f0<iLh6Kgnyb;eSN)0oP?N|nC^j1CKKDO*;yrJt9ZJaHlB=Slru23G6Et?
ZZ36=<0|UlF<uV2!@O1TaS?83{1OOob6mtLo

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/light_blue.png
index 5d0eddf84db2e7dacd341014eba37688d1e9387d..a577ec1532a9195321dee649771f8bcaafc7e5aa 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjip5`mh)z{bmzri3TCZ?$9dU#^HHM@W~<E!LZH#VM(Wt1~CvobQa
cGBDIOFt9Q(h)tM2nE?nqUHx3vIVCg!00z++Gynhq

delta 72
zcmX@Ya)f0<iLlB1L*^^b)z{Y>&E6v>CYD;Dtvj*Znw?crwu+~#Y2(RQMmYmhD<dGX
Z)HX1%GB98)R4!ux0#8>zmvv4FO#qca7D@mB

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/light_gray.png
index d9f07c0bcb78d353ba2f70a22d41f84c244364ec..3113ab93e8a41f4c3a288f0a9124d3cc2a747e68 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjip3TkG_4W1tZ!n07iAAYyD4W=B%`PC$_$qnUjg2Q`8RZPktc;AU
b3=Fjm46F<cViTrMW&i?DS3j3^P6<r_4vHCK

delta 72
zcmX@Ya)f0<iEvF#Npo{`eSLjJMWL9OnAZB4o)g=x*;yrJt9ZJaHlB=Slru23G6Et?
ZZ36=<0|UlF<uV2!@O1TaS?83{1OSu67FqxR

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/lime.png
index 0ddc8f23b3ebe750d3ccd4b4923d88ebe55f48e4..837d4aa9ab6bbb9b9fbead993ca5b19d68085a26 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjio*5g&>g((O-(V0E6Z^J#tM9~iYjy!~##hO+Zfram%P41PW@Th-
cWnidnU|?ln5SuW4G6N8Jy85}Sb4q9e04^LF6#xJL

delta 72
zcmX@Ya)f0<iEz?V(TojZ_4W1f3q{1l#8R%mv7Xp&&CV(*TgB7WwDDvtqnv@Ml@SnG
ZY8x0>85l4YDwi<;fv2mV%Q~loCIEas77+jd

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/magenta.png
index 921bc193807784d7d686472bcd8c0a9bf7375d7a..51e4abe7206657f71b9e6cfe15d0ee19c6d27fa5 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjip6jib)YsSlzri3TCdT8F%R8~%nq5Gg@m2Dy8yio?GRhg6Ss58y
b85n9C7+4t?#3oFi%m4(Qu6{1-oD!M<>H8R*

delta 72
zcmX@Ya)f0<iSQEh+3T&B)YsQ9Fq<YOCbrDJdi%t7Yj##i*(#o{ri~|K8RZO2t&D)k
aQrp15%D{lJP`Qi&2s~Z=T-G@yGywpu8Wz|9

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/orange.png
index 40eb3fd8337bef514611924eaf37e41dc92e28c5..59640f7a111f60333fd097c2b625f9f6b448077b 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjip3idm>+9?P-(V0E6H72<)1BCE%`PC$_$qnUjg2Q`8RZPktc;AU
b3=Fjm46F<cViTrMW&i?DS3j3^P6<r_-rN{w

delta 72
zcmX@Ya)f0<iSW%dzGu1o_4W0aQ+UP1#MH{vlP9)Yv$IOdR`GN-Z9EyvC}&`5WduZ)
Z+6D$z1_q3U%4G~d;OXk;vd$@?2>@hk6>0zg

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/pink.png
index 23da7f9ffabf31f28e340b7493495ca10dc68915..dab0e2083cd71cecf784014b960b2ba41c95ac7e 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjio==(<)YsSlzri3TCYCT^UjM{)Yjy!~##hO+Zfram%P41PW@Th-
cWnidnU|?ln5SuW4G6N8Jy85}Sb4q9e07X?AUjP6A

delta 72
zcmX@Ya)f0<iSYI6X-}FK)YsQvET1GMCU#qwtz%-lH9M=MY!y#e)5eprjB*C1Rz^T%
Zscm3jWnjQqs9eSX1fH&bF6*2UngHg}7q0*S

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/purple.png
index 48b69e966b58a4c017fbffe2584c5cf8319fff37..c2e94fc65b5660974abbd3893cd632d4da5dd7bf 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjip1I2N>+9?P-(V0E6Epc*et2TLHM@W~<E!LZH#VM(Wt1~CvobQa
cGBDIOFt9Q(h)tM2nE?nqUHx3vIVCg!03Mwg&Hw-a

delta 72
zcmX@Ya)f0<iEx_Y)LiBH_4V~B3KPY|#Ppu1)lO`;W@nX@t>Wow+ITXSQO>~B$_R)o
ZwG9lc3=9|xmCG1_z|+;wWt~$(698H%6=nbc

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/red.png
index 2b2972bd63c03f9cf2c389aa8c9df10a12c45a5e..e2121aaafd054b3a4c9c5d07e2d850c26b05135a 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjio|BXm>g((O-(V0E6WcSN^U}n2Yjy!~##hO+Zfram%P41PW@Th-
cWnidnU|?ln5SuW4G6N8Jy85}Sb4q9e00GSzMgRZ+

delta 72
zcmX@Ya)f0<iEx*K+$1H1`uh4dd08<ru~#yS{U^3tv$IOdR`GN-Z9EyvC}&`5WduZ)
Z+6D$z1_q3U%4G~d;OXk;vd$@?2>>kU6sG_H

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/white.png
index 5c18d98053d63e0e8861781b15afbea7f3ad6cd1..bbed3c6c70ea7cb5f6139d38c8339a77b78c5457 100644
GIT binary patch
delta 349
zcmV-j0iyoj1jGc87zqRe0001iRA<MLAwNMLP)t-s0001BU|=;hHE?in|NsC0;7RcC
z@PB`Q|JVQ)78Y>SC3XM+00DGTPE!Ct=GbNc0004EOGiWmk7(IZk$EA15ElXJW183i
z007NNL_t(2&y~?T4#OY}24Id*$Pi_WTNN=Txk1${L}KpHJuI96i8XB8w%8Ox)T#dx
z@yRxiFb))6zN}j))9p!lu<J^h?{CVBN$s8Y&NQ&PRB;BcovA~y1uIyIOe>smf^&uT
zUi${hIn)5K2ZVgm257foWflM<zaU6sr6B-<ZWMeJ%Y=YyR!)d5C+MZMW=kM4jD2tI
zh5(TQe?b6H3Chp}F(%-g=gT3e1Vh{_1gsd;0n{>t188W|lDBP!W~fj21LblR>L2^&
v1EQ^Si^Y!e29v!3gdQ<AIx;glFfl7IFgh?WU0|1!00000NkvXXu0mjfk5i3|

delta 377
zcmV-<0fzp>1m6UZ7zqdf000115hW;*AwL-cbW%=J004HA%{Tx600Lr5M??VshmXv^
zk)a`f1sNTB42psP009t5L_t(I%axM7ZNo4Sg}(>~w$26|;A*GQ2Am=z1RlgQXbNrM
zCaO6AH?Uh(DUOmzN|2F<1E{-u_pgs{A{!JMUHI$^1JC$ds(eZ8Z-su3yeb01g&A-&
zfV<E_030)pW61I`<7OP_Pt~M~Il*B`hAMu4LdXv5;iSY_4;DNhlZ02cJAfD06h;rE
zF#5?d+&P25V^w-Ui5^fT3;-PvLY4ySGDIOQf}PVaEG3>qvOG4w7Ckfwqt&{GGyq-o
ze-O9e{7B5j4L)j<u;UHh60AuNEQ8vj)+bMqRu)N<En%w1^h>WJP%O1;{cEO%P|TVo
zDux_Hr9GiERYyIz#qjS%X{_q&w98OkM|T<i0OK}AKZJqCO_QPlgdQ+8Ix;mnGC3<S
XFgh?W0dXUC00000NkvXXu0mjfNWPTg

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/yellow.png
index 4c42c8feedeabb783fa43b52696b89eaf1c8b67d..2f6557adc4bf9bb128ce2007723acfe78b8f16c4 100644
GIT binary patch
delta 72
zcmX@Ya)f0<iSYjio^N+6*4Nknzri3TCbs<M<{cB;t=R>{8DAyOy0P(OETf#EnU#^T
cm4TtQfq|8QL2SbG$qYc?>FVdQ&MBb@0A8XR@Bjb+

delta 72
zcmX@Ya)f0<iSYdm@^5!5*4NkHTrDpqCU&fK>Z^(E*6gg3vQ<1?O&d?fGRhg4S{VV6
arM7{Am4N|cp>i1m5O})!xvX<aXaWHF1sF8|

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor_mask.png
index 0bf1c567fd4ed2f52de573b163aea5869d734aca..f599b3a28f5e928044adb92bda40a79da556ebc5 100644
GIT binary patch
delta 457
zcmV;)0XF`;2f7Eay8#LR0RI60puMM)lf(fbe-IWdwx{>(0005DNkl<ZSi{X$yNv=d
z5Pcwv6gqGL6K}K~jI=#a01<_3M!r2DZ3jpQ;wiu#KuU5XXS5&NYnwf|7x_2#o4*&^
z?G^waB1i!d_2#+q3IH~n4a%}aDsHzML<E=11v%L5c2FXMvMjOR?~{b<x_)VWzu$k5
ze}{zvfc1I}0C+qez1`JnHCnUlR_0wO*X3O@cK%mTQwO?4T%?Ey=ks}SJRXxCuBr-E
zRgDR_+~68pG);r1X_7TR91dd(xE}Duz{gzh(HQV)+g+cVkowKz;N`A$D^nB&j4@zl
zv~3Hmb?@A8?|QwuEl}4rzJV8k)9Dl?e=scBwx)~7NP8lB?K878TbA7kGlQ9f;}pa+
zDAnz1#+b=*s3ZCisuRj~wIO5Q*t#m_@t8AejzF?e?sHR76kui;V@B3k=6ohxG9hh4
zd&*wq^Ro|HYluj69Qd%rm+^H1%4c2|LT+*uqL@8z77QQrU0}}=QBP(V?ZX}r3Y~^p
z>&XCZ+jf+bZUZVLVyfNx@;k`_ISu9ACS>shi>}i!#Dupz00000NkvXXu0mjfrLoZy

delta 459
zcmV;+0W|))2fPQcy8#IR00000`9r&Zlf(fbe*_^Xs$GTr0005FNkl<ZSi{X$yNv=d
z5Pgd*Qs}@1OuW%{Fw*uw0YntC8Ts~rv>hNJh^GK|04WKVoY8)4W1Bs=7x_2#o4<?A
zW&;2a5u|{K2J>8b1pw>y8dX&x71!$(B7*bzj2vvYTPP7hRaMySc8?U{rfCYR_3d_h
ze;^Nq0)W+O1pv6;?}OdtayePE>sIDnDA(nEGIst~P_GX3iMU7+5l*L5aX1{39<J*e
zbzM&hxZL0xTeNM9wr!I&-|zQR3%DNe#lXj0@X;9XY1?0)n~?g=<KX44bt_YrC5$m(
zW^`Q#t@YsCc<*w#xGm5$O@S}qN#J-qe?|$6OSY})A~MmQh@Sh*?97%$f5OaQ=HNI5
zF%3%fyP7fP<v7$4eF)VFWxLv#v2Sc$74vw^88t^B*(mq9sVqw{GmJ44Yb<g;6E2yM
zwxK;`FY@`>2dy<kBsva!Sm4X}IsxS~uL~hJxe8Ito;M4|kNGaJXNhPaGmiFg3=fD-
zL#_480PVVNl9Ox$DkS1nyY=OFk_B=a%DYX-;s>bc)G>amj`IKj002ovPDHLkV1g7(
B);0hD

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/black.png
new file mode 100644
index 0000000000000000000000000000000000000000..1862c9e8f3c245f6e6b7d0f5f1c0a35969c17ab6
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2?ezDLEM#h5GvX|2G)g+uOy&#ID&ePX?-HED7=pW^j0RBMrn!@^*J&
zOHA8Q3*>MXctjR6Fz_7!VaBX$ot!{H_7YEDSN0c-ECS+eCG7mwK%pO=E{-7@=W8cy
z%sXTt(Ds)rVvTG~=5f6_D+5@WzbYzD;r+uh^%s|<(Kcoqr)MQ^<{eBnDrHW)*V?Tt
zbJ^psdHt{d_si8)CS7asTBLSq1xv%$Z=4UF9)2C`W4!+Dt`EP2*6&<BXZ5L@yh|#>
zHZGp`mcM<`jrytwpH@w~v8^cclwg_3qh(X#?*!g&v}XVRsAzgE`-WFCyBU^U(`LGI
zDvx<a&aC;q%$^Je`t{FM9T;p9wM848nxz8S48ASh!sF2I;3+XvuIKF2MbiZ<mK>dV
zZv{K2r0?W=j^}H{i@TKg(-$4x*nfecWFiNT*Y5oP(r@0sXnrap-@NGS`o#3C4S)9L
zgaN}qwZt`|BqgyV)hf9t6-Y4{85kMq8XD;u7=;*ES{WHynHXpr7+4t?Fq}*DM$wR)
zpOTqYiCaVA<eT4t8Z_WGlw{_n7MCRE7J&4a=o%R68kmF_npqhcTN#)^ESYh9r7Tbn
NgQu&X%Q~loCIEud-lqTn

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..71ce394fa02bd2d7a6d87fe26c8c08f8e5c36a33
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2?en-Bx|W{`&g*|2G)g+uOy&#11~;xd~LwSQ6wH%;50sMjD8d<n8Xl
zmYBAq7Rcc&@Q5sCVBk9d!i-thIyr%Y>?NMQuIw)uSp>w{O4#|UfkHn#T^vI+&eu-Z
zn0LrPpzSYL#2VR}%;S1<RtB&#e^peR!uyA1>Mt%yqixJKPR~l-%sZHDRLY!oueDoQ
z=Ca3M^ZH-^@0Y8qOuE+MwMgyK3YLbg-#8yUJ^VV>$9VnQT_1i4t>3wN&gxS)d6!g%
zZCpI>Er0u>8}(HWKCPN|V_Q+?DZw(6N6V(f-wC|mXwClrQPK2T_6@IOb~7xyrp<Ka
zR37t;oLTdInLQZ{^y{CiIxyHIYKt~FHA@Au8GKv1g~y@a!Bb+UT+i93i>3=!EIB&!
z-U@b3N#Du$9M9K?7k4S~r!P9XvHt=?$wUqwuig3orQf`N(fm|IzIoBt^@-_O8~*Ig
z2?K_KYKdz^NlIc#s#S7PDv)9@GB7gIH8j#SFbXlSv@$ZZGBMCLFt9Q(U^tiPjiMnp
zKP5A*61RrJ$v3|PHE6(XD9OxCEiOsSEdc2;(KRsCH82S=G_x`?wlXk-STf`IN?D*D
N22WQ%mvv4FO#pNJ;H&@u

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/brown.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ba0602cc0981ae132ccf3ba4b90d247170334b1
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2{1ETcu1#)%yDS|2G)g+uOy&#9nas?gy%7ED7=pW^j0RBMrn!@^*J&
zOHA8Q3*>MXctjR6Fz_7!VaBX$ot!{H_7YEDSN0c-ECS+eCG7mwK%pO=E{-7@=W8cy
z%sXTt(Ds)rVvTG~=5f6_D+5@WzbYzD;r+uh^%s|<(Kcoqr)MQ^<{eBnDrHW)*V?Tt
zbJ^psdHt{d_si8)CS7asTBLSq1xv%$Z=4UF9)2C`W4!+Dt`EP2*6&<BXZ5L@yh|#>
zHZGp`mcM<`jrytwpH@w~v8^cclwg_3qh(X#?*!g&v}XVRsAzgE`-WFCyBU^U(`LGI
zDvx<a&aC;q%$^Je`t{FM9T;p9wM848nxz8S48ASh!sF2I;3+XvuIKF2MbiZ<mK>dV
zZv{K2r0?W=j^}H{i@TKg(-$4x*nfecWFiNT*Y5oP(r@0sXnrap-@NGS`o#3C4S)9L
zgaN}qwZt`|BqgyV)hf9t6-Y4{85kMq8XD;u7=;*ES{WHynHXpr7+4t?Fq}*DM$wR)
zpOTqYiCaVA<eT4t8Z_WGlw{_n7MCRE7J&4a=o%R68kmF_npqhcTN#)^ESYh9r7Tbn
NgQu&X%Q~loCID<g;3NP5

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/cyan.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d9460d2b1347cb375064316755a7a2689f9d284
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2?gB;#!fKw)*<||2G)g+uOy&#EgZut^lfLED7=pW^j0RBMrn!@^*J&
zOHA8Q3*>MXctjR6Fz_7!VaBX$ot!{H_7YEDSN0c-ECS+eCG7mwK%pO=E{-7@=W8cy
z%sXTt(Ds)rVvTG~=5f6_D+5@WzbYzD;r+uh^%s|<(Kcoqr)MQ^<{eBnDrHW)*V?Tt
zbJ^psdHt{d_si8)CS7asTBLSq1xv%$Z=4UF9)2C`W4!+Dt`EP2*6&<BXZ5L@yh|#>
zHZGp`mcM<`jrytwpH@w~v8^cclwg_3qh(X#?*!g&v}XVRsAzgE`-WFCyBU^U(`LGI
zDvx<a&aC;q%$^Je`t{FM9T;p9wM848nxz8S48ASh!sF2I;3+XvuIKF2MbiZ<mK>dV
zZv{K2r0?W=j^}H{i@TKg(-$4x*nfecWFiNT*Y5oP(r@0sXnrap-@NGS`o#3C4S)9L
zgaN}qwZt`|BqgyV)hf9t6-Y4{85kMq8XD;u7=;*ES{WHynHXpr7+4t?Fq}*DM$wR)
zpOTqYiCaVA<eT4t8Z_WGlw{_n7MCRE7J&4a=o%R68kmF_npqhcTN#)^ESYh9r7Tbn
NgQu&X%Q~loCICvN;12)*

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..ccae696b74e460039aa9d1609e90dcdd78debcac
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2?fI3mZ#Yhx+>Z|2G)g+uOy&#6I0u;03B?ED7=pW^j0RBMrn!@^*J&
zOHA8Q3*>MXctjR6Fz_7!VaBX$ot!{H_7YEDSN0c-ECS+eCG7mwK%pO=E{-7@=W8cy
z%sXTt(Ds)rVvTG~=5f6_D+5@WzbYzD;r+uh^%s|<(Kcoqr)MQ^<{eBnDrHW)*V?Tt
zbJ^psdHt{d_si8)CS7asTBLSq1xv%$Z=4UF9)2C`W4!+Dt`EP2*6&<BXZ5L@yh|#>
zHZGp`mcM<`jrytwpH@w~v8^cclwg_3qh(X#?*!g&v}XVRsAzgE`-WFCyBU^U(`LGI
zDvx<a&aC;q%$^Je`t{FM9T;p9wM848nxz8S48ASh!sF2I;3+XvuIKF2MbiZ<mK>dV
zZv{K2r0?W=j^}H{i@TKg(-$4x*nfecWFiNT*Y5oP(r@0sXnrap-@NGS`o#3C4S)9L
zgaN}qwZt`|BqgyV)hf9t6-Y4{85kMq8XD;u7=;*ES{WHynHXpr7+4t?Fq}*DM$wR)
zpOTqYiCaVA<eT4t8Z_WGlw{_n7MCRE7J&4a=o%R68kmF_npqhcTN#)^ESYh9r7Tbn
NgQu&X%Q~loCIFAG-?9Jz

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/green.png
new file mode 100644
index 0000000000000000000000000000000000000000..294737609ebeaa3c7ece5598f0132949bb47a6b5
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2?f^I0@er$@=>G|2G)g+uOy&#6lKI-2|#;ED7=pW^j0RBMrn!@^*J&
zOHA8Q3*>MXctjR6Fz_7!VaBX$ot!{H_7YEDSN0c-ECS+eCG7mwK%pO=E{-7@=W8cy
z%sXTt(Ds)rVvTG~=5f6_D+5@WzbYzD;r+uh^%s|<(Kcoqr)MQ^<{eBnDrHW)*V?Tt
zbJ^psdHt{d_si8)CS7asTBLSq1xv%$Z=4UF9)2C`W4!+Dt`EP2*6&<BXZ5L@yh|#>
zHZGp`mcM<`jrytwpH@w~v8^cclwg_3qh(X#?*!g&v}XVRsAzgE`-WFCyBU^U(`LGI
zDvx<a&aC;q%$^Je`t{FM9T;p9wM848nxz8S48ASh!sF2I;3+XvuIKF2MbiZ<mK>dV
zZv{K2r0?W=j^}H{i@TKg(-$4x*nfecWFiNT*Y5oP(r@0sXnrap-@NGS`o#3C4S)9L
zgaN}qwZt`|BqgyV)hf9t6-Y4{85kMq8XD;u7=;*ES{WHynHXpr7+4t?Fq}*DM$wR)
zpOTqYiCaVA<eT4t8Z_WGlw{_n7MCRE7J&4a=o%R68kmF_npqhcTN#)^ESYh9r7Tbn
NgQu&X%Q~loCIGbv-^Bm`

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/light_blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..9d9fd84977b32d734a9a59670df7790c2c64314f
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2?gD*?Y{EovN>||9^v_y}eybOzh2H-XlQOj3q&S!3+-1Zlr-YN#5=*
zY>8<*YJnWi0*}aI1_r(ZAk3I`t&<Zd$X?><>&pIukwrk9t%RMw8YuL`)5S4F<9zLe
zjd_O*1ls;`MXZsn$vmz%XJr5@^H)X1DZGDJrvBoRG}^{&<MgcL&AfxjMy1SY_gcG^
zWiEUCHLw5m|9-i;%A{*8UW?Q&tzc=``i=9!)5EW0eT>(?-Sy#@(E6RL=d3<;lXppF
z*v7^4-txCEx=~;C;M1yUH?|dJo)RoGd9-Xw{GGu2jn?e{9~DinW#8~hW;esKYuZd#
zPUSJr$eA_Ym)VoSK)?REssn>fqPA#*Q?pbco58oGTX-D$9Xusw%JrOmx@fv!#gd~l
z@2z0xl=Pi^&+&YXcyX5!fBK@M8~ZOXluYE{@!FmLU;54a7tK#a<eL|LU7whqwc*d+
zoG@S*sFt`!l%yn<q*^5xr2;7iBLgENT|*;X1EUZFODiKoD-#240|P4q1BP>n-Y6P!
z^HVa@DsgKloP6^;P=f~ChLX(O)Z&uF+yamu6I}yCT?3O4Lo+KQV=DtQh$S<QuapJq
OVeoYIb6Mw<&;$UD-Qqp~

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/light_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..57f69fc22076734a19219b828bbb2df00ca9b704
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2{2Vio(Xm%KG~H|2G)g+uOy&#Q5g%H2_sJmIV0)GdMiEkp|)<dAqx?
zC8q7D1#&nGJR*x382Ao=Fk{xWPEMd8dx@v7EBgyZ76Ea#5_bM-pwJIb7sn8d^R*K;
z<{dH+X#2|*u|~Eg^SIuel>w~GUlkRn@cv<$`io1_XdAPQ)3cH{^A08(l`^N@YwcE+
zx$N=Ry#Ck!`{n8?ldiRREmFI*f~8^WH_iu755JD}F<$?6*N0z1>vyi6v-;Fc-X)b`
z8yC-e%iq4}Mt#+TPphWg*jAKzO0dl2(XuJ=cLMJ>TC@LuR5ZPoeZwo6-3-gFX)|3p
zmB&0IXV!dQW={qK{rcys4h%Ml+M*3k%~FAE2H%!$;c@79@RXP-*K_viqUnMaOODRG
zw}PEh(s%Mb$MZGf#a&AL>5GnT?7zTJGLeJFYj^&C={N6RG(Q!QZ(j6uePVjnhCh3A
z!hm6*TH+c}l9E`GYL#4+3Zxi}42+C)4UKdSj6w`7t&9w<OboOQ46F<c7|tbnqiD#@
zPsvQH#I2!l^3Cr+4H|G8N-}d(i%Sx73qX2IbPWu34NO7|&8&=!tqjZ{mdrT5QWmI(
N!PC{xWt~$(695T-;A;Q?

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/lime.png
new file mode 100644
index 0000000000000000000000000000000000000000..b02024d370801db837f76d4960837539dbc0f40b
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2{3ug(7Kd#p>(p|KDI}Z*Lb96SK@@Rt2hNED7=pW^j0RBMrn!@^*J&
zOHA8Q3*>MXctjR6Fz_7!VaBX$ot!{H_7YEDSN0c-ECS+eCG7mwK%pO=E{-7@=W8cy
z%sXTt(Ds)rVvTG~=5f6_D+5@WzbYzD;r+uh^%s|<(Kcoqr)MQ^<{eBnDrHW)*V?Tt
zbJ^psdHt{d_si8)CS7asTBLSq1xv%$Z=4UF9)2C`W4!+Dt`EP2*6&<BXZ5L@yh|#>
zHZGp`mcM<`jrytwpH@w~v8^cclwg_3qh(X#?*!g&v}XVRsAzgE`-WFCyBU^U(`LGI
zDvx<a&aC;q%$^Je`t{FM9T;p9wM848nxz8S48ASh!sF2I;3+XvuIKF2MbiZ<mK>dV
zZv{K2r0?W=j^}H{i@TKg(-$4x*nfecWFiNT*Y5oP(r@0sXnrap-@NGS`o#3C4S)9L
zgaN}qwZt`|BqgyV)hf9t6-Y4{85kMq8XD;u7=;*ES{WHynHXpr7+4t?Fq}*DM$wR)
zpOTqYiCaVA<eT4t8Z_WGlw{_n7MCRE7J&4a=o%R68kmF_npqhcTN#)^ESYh9r7Tbn
NgQu&X%Q~loCII-(-&_Cy

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/magenta.png
new file mode 100644
index 0000000000000000000000000000000000000000..db330135c500d1e3bd7525d3b289297307093aac
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2{0)X4BSKEv&Dv|9^v_y}eybOw3)P$QY=au_VYZn8D%MjWiG^$=lt9
zEir9JEs(=m;1OBOz`%C^gc-B0b#ej)*-JcqUD;nSvIvN?m9X<y1BHHgx;TbtoUfg*
zG4GIpK-*ugh&8e`naB0!tPEgf{;H@rh4&B3)L&eZM%$QeoSv1unRhVRsFXSFUTe3q
z%w><i=Jmh+-!E5JnRKniYmwTe6)X)~zi~czdiZs$kMa7qyFUC9TEBDkoYkjp@-C?i
z+qih%TmJS%H|nb%d|EZ_#<rr&Q-WnCkCsh|zY}=B(VG4LqoV1x>>FOm>}FVYO`GY;
zsXXQxIkV>bGJ7%@=+{42bzrbb)D~@UYL*IQGx)Z23y(v;gQvtyxt_C67flzeSaNjc
zy%p@7lD?DgIi9Z(FYZ#}PhWI&WB&z)l8GEVUc2-EOTT&lqWP(aeDk8O>l4$nHvHL}
z69x<e)e_f;l9a@fRIB8oR3OD*WME{ZYiOivU=(6tX=P++Wn!RhU|?lnz;G_n8%0BI
zeoAIqC2kFclW%?pYS4h&P?DLOT3nKtTL98yqHAENYhV&$Xl7+(Y-L~uv1G>am9juR
N44$rjF6*2UngGx1;7kAj

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/orange.png
new file mode 100644
index 0000000000000000000000000000000000000000..a880c1989b3a71e476623bf70c00f25bb32e1af1
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2{3BDZG!e`ReQI|KDI}Z*Lb96WeSOy9KD4u_VYZn8D%MjWiG^$=lt9
zEir9JEs(=m;1OBOz`%C^gc-B0b#ej)*-JcqUD;nSvIvN?m9X<y1BHHgx;TbtoUfg*
zG4GIpK-*ugh&8e`naB0!tPEgf{;H@rh4&B3)L&eZM%$QeoSv1unRhVRsFXSFUTe3q
z%w><i=Jmh+-!E5JnRKniYmwTe6)X)~zi~czdiZs$kMa7qyFUC9TEBDkoYkjp@-C?i
z+qih%TmJS%H|nb%d|EZ_#<rr&Q-WnCkCsh|zY}=B(VG4LqoV1x>>FOm>}FVYO`GY;
zsXXQxIkV>bGJ7%@=+{42bzrbb)D~@UYL*IQGx)Z23y(v;gQvtyxt_C67flzeSaNjc
zy%p@7lD?DgIi9Z(FYZ#}PhWI&WB&z)l8GEVUc2-EOTT&lqWP(aeDk8O>l4$nHvHL}
z69x<e)e_f;l9a@fRIB8oR3OD*WME{ZYiOivU=(6tX=P++Wn!RhU|?lnz;G_n8%0BI
zeoAIqC2kFclW%?pYS4h&P?DLOT3nKtTL98yqHAENYhV&$Xl7+(Y-L~uv1G>am9juR
N44$rjF6*2UngITK;OqbZ

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/pink.png
new file mode 100644
index 0000000000000000000000000000000000000000..876bf206b97028323090a3722f3a1a13e03dcf9c
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2{2W<&z#X%&o7l|9^v_y}eybOssv4s}@i-V@Z%-FoVOh8)+a;lDE4H
zTVmRdS|EqBz$3Dlfr0M;2s36~>*NFqvX^-Jy0X7uWDyW&D`Dra1`7S~ba4#PIA1$q
zW8NVHfwsR~5o=^?GLP%cSsB2}{8dqL3hy75slT`+jkYn{I6W(QGw)!sQ7LoUz1D7J
znadu3&Fg>tzhADdGU-~2*CMq`D_9z~e&c-b^ziFgALI3JcYXLJw0`I6Ijc|I<Xuu3
zwsG;ixBTskZq!#j__S);jcrAlrv%GP9xa;^e<$#Mqc!{gM@7?X**CnB+0C%*nl{sw
zQ+doYa%Ro<W%gt+(64{4>cC)=s4d#y)GQUqX7Fw479NLw2TzHaay@6CE}AY_vE=B?
zdn?#EC4DE~b39)oUfiX`pT6km#{LToB@;P#ymsgRmwxm9Me|b;`Q}Am*C(cDZTPb{
zCkz+{swJ)wB`Jv|saDBFsX&Us$iT=**U(7Uz$nDP(#put%EUn1z`)ADfZ<%CH;RVb
z{FKbJO57R>C*S-I)Sv;kp(HamwYVfPw*aKaMAyJj*T5vi(9Fun*vh~RV#$o-D`kOt
O7(8A5T-G@yGywp_0O8I6

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/purple.png
new file mode 100644
index 0000000000000000000000000000000000000000..f7be420f2e724b194d26253f5165c1f462676cf1
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2{0}g^Ah9bL#8s|KDI}Z*Lb96Ki7AF9oV*ED7=pW^j0RBMrn!@^*J&
zOHA8Q3*>MXctjR6Fz_7!VaBX$ot!{H_7YEDSN0c-ECS+eCG7mwK%pO=E{-7@=W8cy
z%sXTt(Ds)rVvTG~=5f6_D+5@WzbYzD;r+uh^%s|<(Kcoqr)MQ^<{eBnDrHW)*V?Tt
zbJ^psdHt{d_si8)CS7asTBLSq1xv%$Z=4UF9)2C`W4!+Dt`EP2*6&<BXZ5L@yh|#>
zHZGp`mcM<`jrytwpH@w~v8^cclwg_3qh(X#?*!g&v}XVRsAzgE`-WFCyBU^U(`LGI
zDvx<a&aC;q%$^Je`t{FM9T;p9wM848nxz8S48ASh!sF2I;3+XvuIKF2MbiZ<mK>dV
zZv{K2r0?W=j^}H{i@TKg(-$4x*nfecWFiNT*Y5oP(r@0sXnrap-@NGS`o#3C4S)9L
zgaN}qwZt`|BqgyV)hf9t6-Y4{85kMq8XD;u7=;*ES{WHynHXpr7+4t?Fq}*DM$wR)
zpOTqYiCaVA<eT4t8Z_WGlw{_n7MCRE7J&4a=o%R68kmF_npqhcTN#)^ESYh9r7Tbn
NgQu&X%Q~loCIGii-@pI>

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/red.png
new file mode 100644
index 0000000000000000000000000000000000000000..7cef740f6cef3da3853f53a3e014d1c367c07a9d
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2{1WdD#g{^7Zxg|8Fp~x3`OliQS2P!4Fi;SQ6wH%;50sMjD8d<n8Xl
zmYBAq7Rcc&@Q5sCVBk9d!i-thIyr%Y>?NMQuIw)uSp>w{O4#|UfkHn#T^vI+&eu-Z
zn0LrPpzSYL#2VR}%;S1<RtB&#e^peR!uyA1>Mt%yqixJKPR~l-%sZHDRLY!oueDoQ
z=Ca3M^ZH-^@0Y8qOuE+MwMgyK3YLbg-#8yUJ^VV>$9VnQT_1i4t>3wN&gxS)d6!g%
zZCpI>Er0u>8}(HWKCPN|V_Q+?DZw(6N6V(f-wC|mXwClrQPK2T_6@IOb~7xyrp<Ka
zR37t;oLTdInLQZ{^y{CiIxyHIYKt~FHA@Au8GKv1g~y@a!Bb+UT+i93i>3=!EIB&!
z-U@b3N#Du$9M9K?7k4S~r!P9XvHt=?$wUqwuig3orQf`N(fm|IzIoBt^@-_O8~*Ig
z2?K_KYKdz^NlIc#s#S7PDv)9@GB7gIH8j#SFbXlSv@$ZZGBMCLFt9Q(U^tiPjiMnp
zKP5A*61RrJ$v3|PHE6(XD9OxCEiOsSEdc2;(KRsCH82S=G_x`?wlXk-STf`IN?D*D
N22WQ%mvv4FO#oKC;1~b^

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/white.png
new file mode 100644
index 0000000000000000000000000000000000000000..d73ecd511334442544b44c8f367bac9e4c2f4028
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2{1bckaA-^QOMO{{Ibz_V#u$F|qp(ODln@8B2ovf*Bm1-ADs*lDyqr
z*b>ur)B-u21s;*b3=Dh+K$tP>S|=w^kiEpy*OmPRBa47ITM0XVHBjh>r;B5V#`)R_
z8}kks2(<m>idZ9ClX+Zk&dLB*=C6v1Q+WTdO#Q_rX|#>m#_3tfn|TM5jY^r*?zMI+
z%Ut&OYhM5B|NU}xl}XoHycVflTEWt=^&97dr-xt1`WUZ&yX(U*q4hgg&slxyChwBU
zu#Jo7z2$FTbfdoN!KYQzZfq;cJSA9W@@UzV_&b638?D*@KPsAD%f8{2%x;Ed*R+|g
zoXTUKkuz()FS93ufqwmSRR;!}L~YRqr)H@@HiK_Vx9~XhJ9tXWl<PVBbkTIdiX}&9
z-dn-WDd{`;p5yr%@!~Ee{`5shH}+p(D4EE?<Fz~gzx12;FPfi<$Tu(gx;`;IYr~(t
zIbpysP%UwdC`m~yNwrEYN(E93Mg~Skx`sx&21X$UmR3fFRwf481_o9J1`OvCy-_se
z=BH$)RpQoAIQiyxpau=N4JDbmsl_FUxdk9SCb|ZOx&|g8hGteq##RPq5KCqpUnvXJ
O!{F)a=d#Wzp$P!Mf8<*L

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel/yellow.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d8cabfd558fc392eb0a6be503b8b2c763690a5c
GIT binary patch
literal 635
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg
z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgp%vg0;tHfgLP8P}6126o
zO-)S;3JU%M!2{2mtL0zrP^_=7|9^v_y}eybOssgW`c$B5#*!evU<QY0H_||yByV>Y
zw#2j@wLlJMfk$L90|Vay5N6D}*2xJJWH0gbb!C6S$RZ%lR>IC-4HWv}>EaloalUrK
z#=JuY0&Rb}BG$;(WFFU>voe5{`KzMh6y859Q-5(u8f{~?ae7wrX5PVMqf+Lyd#&Bd
zGM7F6n%DpOf4^K^Wzw}4uSIH?R<JZ|{l@v=>EYM0KE~_c?)vacX#LLBb5@_a$-AU7
zY~$j2Z~5C7-Kej6@M+bw8{3L9PYITpJX$s-{!ZZiMr-!}kBX+(vTt}LvzuYrHEpIV
zr}CI*<jk7y%k0TupkM!7)q%k#QCqaZsaYzJ&EVV8Ej$kW4xSP-<$BIOT{K;=V#(2&
z_g1iTO8QQ|=XkzGytqq=KYh{Bjr|uGN+xpfc<s*rFa75Ii{_^y^399Bu1`$Q+VE#@
zP8cu@R7+eVN>UO_QmvAUQh^kMk%5tsuAz~xfl-KorInGPm5G72fq|8Q0mHdOZxju=
z`6-!cmAEw&PQLjas6hj6LrG?CYH>+oZUIP-iLQa6u7OF2p_!GDv6X=t#F81uSIPqQ
OFnGH9xvX<aXaWE-$>D|o

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_panel_mask.png
new file mode 100644
index 0000000000000000000000000000000000000000..476fde21a9619d8b29112faf195ea92edef63ed5
GIT binary patch
literal 1053
zcmV+&1mgRNP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkvmAkP!xv$rb>%c94sQ@kfA!+#TSmHibb$c+6t{YnB4RQO&XFE
z7e~Rh;NWAi>fqw6tAnc`2tGiZ9h?+hq{MTRLW>v=T<*tz&;N7pxq#5DGS%#f0jg#h
z=|o)2<yXbPD}3-Hh#|~K%+!;a#VkDQ>z=x)?xH-)yYJ8HR|+Nrd?Im->4rtTK|H%@
z>74h8!>lYR#OK5l23?T&k?XR{Z=6dG3p_JyWYhD+VPdh=#c~(3vY`@B6Gs$PqkJLf
zvch?bvs$gQ_C5IvLj`Rm!*yDtNMH#`q#!~@9TikzAxgVOiitFx$36Tbjz2{%nOqex
zax9<*6_Voz|AXJNHH%Y|Zc-=?^uE~k#~2XU1zHW;{yw(t)(PN$2ClS@zt#liK1pwM
zw8#-Kunk;XcQknqxZDATpLEHP9LY~hC>DYDGy0}HFn9~}t+{h+pX2la$kMEqZ-9eC
zV7x@x>mKh8cF*nKp7#8H0G6F{wGk}A8UO$Q24YJ`L;(K){{a7>y{D4^000SaNLh0L
z01m(a01m(bYSxJf00007bV*G`2j~F=5Ed5)tRBb!00J3FL_t(o!^KxIj;k;beXOVv
zn!-(JX;b<P93d4_x^(H&M#>q|AyFj<h{PEv=^~VlG%hT}1$HYV<2btk`|H03WaiC`
z?dKU26h#5X7|OB)01y!XKuQTB8lMVMN&rBf=MX{wz=W^+(4qU&`N8dWn;0fZ0vo!n
zLy{!ux^6OFmL)Ei3zlHB*&r;-5{JV9>-G9qWA$A<o2J3(bOI6K@pyd4aXc${-}fM*
z;0pj&tJUo66-O=UQiMc=D2iqiO-|qU<9i&(==&bFRnhIFlnCL7EX#1e-veEQe~D3v
zFv~Kx1c(UR?RF9Odc6VwzFZP;-GAo<Y)d>l0VyShVVF%^!m%bmM0h@*vx!SM)?=vl
zv1uCo4~(bad_I3f*zI;+MHs3&4*<vG5m6Ljzu&)oH+zAz2J$=~XA?ychGF>iU5Dbj
zATZnUr%>&5X(1X{fH5}q^>=66HYS7sW6WIxLI~7#Jqhwj5_MgJbMBr%RaGFO(V0Fg
z{l;UC)pd=ks{9>8<x~l>ZQF@qnx^9__?Y=iFVJU6L`c)r8eF&a(F;P`#nDW{b}9AN
z4Rz;j+fJMk(Mxc1YrJ$rU0h}ow&2RvOFQ=A#H$ER!P$iAqX1cNL}qX)<%=ft)8YL}
zW)qxEnEzCSHnp2c=(b+#0O$PUQtS&sQ50hdo(s;ob2|<hW8j>>Z7llly7@=s<23vL
X7p^XBr|>$500000NkvXXu0mjfp26Pl

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/black.png
new file mode 100644
index 0000000000000000000000000000000000000000..535c742370cb89db5ab9ab890ec42e8461f63398
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-&^wWn^U)<mHwB|Nnpg->OqUQN|>1cNd<<&4I~44rhT!
zWHAE+-(e7DJf6QI1t`c~;_2(k{(_N3K;CNd#-Cq+dUQQq978NlADv{I$7CqbdRDNA
zHGEo-n)?Y+pJ@TYzfA7k3Tk0B?JBDlDGO3w`{;CP+Mnj~x$}+urS{ZRz30_d7IQlF
z+j{NxV+)svbW5}FN7*Y~nB`Cs<5-g8yIOLG#^*&PpSuott<2!qaM)^jM$}B1Fik0@
zgA*C_IQx`@WHxT$-F>DscS;1~>yGCW8+q6|m!~8!KX}A>LRNE<<JP5JAq%=fmWHPM
z+*A2!jqp5mWwWZCQdJEL`PVx;h$l@@TFA`E!m#s7eO<*Yd4_ZM6Qa6|V^5#Y-Y+M8
z{SC*G`8QM;0@GP!8rL1p&-*_wPX5<J=?5}r4xV8wK3*BmaF2<#<J5xgs@eDNtlOdS
zYx51B7tIGAKGL^i+!J4I{mYQ~mBo|><^4@sK~uxBz5fdTVA|~crtxdy+ZDjDR4s9h
zC`m~yNwrEYN(E93Mg~Skx(24YhNd9~W>%)gR)&_^1_o9J22FfBeNZ&y=BH$)RpQq0
zIhgSSP=f~ChLX(O)Z&uF+yamu6I}yCT?3O4Lo+L5Ln~7Yh$XJcmu~{~FnGH9xvX<a
GXaWE=e(U}K

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..82a8fd287ad3d93e7812365dde0a939053fa8fe7
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-(hmY7Go08k^4k|Np<uF`1u0QN|>1cNd<<&4I~44rhT!
zWHAE+-(e7DJf6QI1t`c~;_2(k{(_N3K;CNd#-Cq+dUQQq978NlADv{I$7CqbdRDNA
zHGEo-n)?Y+pJ@TYzfA7k3Tk0B?JBDlDGO3w`{;CP+Mnj~x$}+urS{ZRz30_d7IQlF
z+j{NxV+)svbW5}FN7*Y~nB`Cs<5-g8yIOLG#^*&PpSuott<2!qaM)^jM$}B1Fik0@
zgA*C_IQx`@WHxT$-F>DscS;1~>yGCW8+q6|m!~8!KX}A>LRNE<<JP5JAq%=fmWHPM
z+*A2!jqp5mWwWZCQdJEL`PVx;h$l@@TFA`E!m#s7eO<*Yd4_ZM6Qa6|V^5#Y-Y+M8
z{SC*G`8QM;0@GP!8rL1p&-*_wPX5<J=?5}r4xV8wK3*BmaF2<#<J5xgs@eDNtlOdS
zYx51B7tIGAKGL^i+!J4I{mYQ~mBo|><^4@sK~uxBz5fdTVA|~crtxdy+ZDjDR4s9h
zC`m~yNwrEYN(E93Mg~Skx(24YhNd9~W>%)gR)&_^1_o9J22FfBeNZ&y=BH$)RpQq0
zIhgSSP=f~ChLX(O)Z&uF+yamu6I}yCT?3O4Lo+L5Ln~7Yh$XJcmu~{~FnGH9xvX<a
GXaWFG>Fj_2

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/brown.png
new file mode 100644
index 0000000000000000000000000000000000000000..bacf95324f40ca9595073629b4d3afb6256f33c3
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-*Ag6|$XFi`+H-|Np=B(VH-!C}Wbhy9-a_=D=hihqJ&V
zvY3H^?=T269?xHq0u*E~@$_|Nf5FHiAa6B!<IgWZJ-VJQjv*GOk5019V=@$IJu6tm
z8a^#Z&HaR^&$IyHUnci%1+}o6c9m6&lm#iTeRMiC?N4+0-1$cSQhREu-t%fJi#eV8
zZM}B;v4u-Sx}{n8qwJL~%yKA+aV*L4T`jpo<MX1D&s_(+R%UQ)IBc~%BWk8hn5God
z!HEodoPA0{G8?z>?mknRJ0*hgb;t9GjXZ3f%Tp4VA3WkbA*(sbaqH5qkOf^KOG8tB
z?y3B=MtGjOvRTzmsj7yB{Og?^#FHi{Eo5e7Vc2=4zOG`HJj1#B2~l0fv8T^x@0XLl
z{)S`8{2M9^f$1zVjq48Q=l!1-C;#iA^aGhQ2hT7TAFqsOxW~lWacV(#)$IFs*6q;v
zwfP3mi{=9lAL-jM?uoCq{$<Gg%3?}`^8O~Rps8Wm-hYLEFm3jJ)A%*<?FwL6s+PD$
zl%yn<q*^5xr2;7iBLgENT?12HL(>ogGb>YLD?>|d0|P4qgC@S6J}4S;^HVa@DsgN0
z9L)Fus6hj6LrG?CYH>+oZUIP-iLQa6u7OF2p_!Gjp_Qox#1hx!%Qt~~7(8A5T-G@y
GGywo2AME7-

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/cyan.png
new file mode 100644
index 0000000000000000000000000000000000000000..1c2078f641dc0428ead272eb77b70ccd63307407
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-%)JN=52A#M&nQ|NnpE6yaW=C}Wbhy9-a_=D=hihqJ&V
zvY3H^?=T269?xHq0u*E~@$_|Nf5FHiAa6B!<IgWZJ-VJQjv*GOk5019V=@$IJu6tm
z8a^#Z&HaR^&$IyHUnci%1+}o6c9m6&lm#iTeRMiC?N4+0-1$cSQhREu-t%fJi#eV8
zZM}B;v4u-Sx}{n8qwJL~%yKA+aV*L4T`jpo<MX1D&s_(+R%UQ)IBc~%BWk8hn5God
z!HEodoPA0{G8?z>?mknRJ0*hgb;t9GjXZ3f%Tp4VA3WkbA*(sbaqH5qkOf^KOG8tB
z?y3B=MtGjOvRTzmsj7yB{Og?^#FHi{Eo5e7Vc2=4zOG`HJj1#B2~l0fv8T^x@0XLl
z{)S`8{2M9^f$1zVjq48Q=l!1-C;#iA^aGhQ2hT7TAFqsOxW~lWacV(#)$IFs*6q;v
zwfP3mi{=9lAL-jM?uoCq{$<Gg%3?}`^8O~Rps8Wm-hYLEFm3jJ)A%*<?FwL6s+PD$
zl%yn<q*^5xr2;7iBLgENT?12HL(>ogGb>YLD?>|d0|P4qgC@S6J}4S;^HVa@DsgN0
z9L)Fus6hj6LrG?CYH>+oZUIP-iLQa6u7OF2p_!Gjp_Qox#1hx!%Qt~~7(8A5T-G@y
GGywqK>+He+

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0a0f6b5ea9b92c1daf02eaaea24cad87d1bdaf7
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-+qVEv)Pu?VQ~H|Nno$ujT?!lrhQM-G!%db6_%%!&%@F
zS<Jw|cNl~jkLRyQ0SdC0c>21szhGn$khhw=@#hzy9$ilt#}JFtM<?0lF&PT9o)s)&
z4WAaI=6*udXIg;pFOz$>f?8NjyUMCX%7T>FK02M6_NTdg?tCMEsXaAS?|HSA#hgz4
zwqCpa*uo_u-O?=lQT9p~W;v9^IF{u2u9n=P@p)0n=dJ@@D>FDY9JX4X5j9gLOjC;K
z;6w&J&ORj}nT=a`cb_TEof5(Ly5sr8Mjp1#<tYiw4<2!zkky>zxOHh)$bznrrJ*T5
z_f&pbBRo%C*{o`(R8_-5{`Jld;z<*f7BVxkFzmciUso|pp5fg6gs3j#*wg2;_sdCN
zf5Wk4{tXp|z;qUw#&w7D^Zw6^lmGQl`hm=ugJ&3vk5|Ss++$+xIJKa=YWDp*>vm}T
z+I)lOMe~7&kM!*r_rzCQ|1xBLWih2ed4H2u(A2PO@4v!7m^ORAY5bb_b_FmjRZCnW
zN>UO_QmvAUQh^kMk%5tsu7Rnpp=pSLnU$%rm7%4!fq|8QK@;Cj9~2F_`6-!cmAEy0
z4rcrS)Sv;kp(HamwYVfPw*aKaMAyJj*T5vi(9Fu%(8|;TVu@?=<(oh~44$rjF6*2U
FngD$<>>L09

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/green.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e684acc3e021a2c3c817b9018f8523adf7a17e7
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O--F6#Qf8wLULvP|Ns9??&BPwC}Wbhy9-a_=D=hihqJ&V
zvY3H^?=T269?xHq0u*E~@$_|Nf5FHiAa6B!<IgWZJ-VJQjv*GOk5019V=@$IJu6tm
z8a^#Z&HaR^&$IyHUnci%1+}o6c9m6&lm#iTeRMiC?N4+0-1$cSQhREu-t%fJi#eV8
zZM}B;v4u-Sx}{n8qwJL~%yKA+aV*L4T`jpo<MX1D&s_(+R%UQ)IBc~%BWk8hn5God
z!HEodoPA0{G8?z>?mknRJ0*hgb;t9GjXZ3f%Tp4VA3WkbA*(sbaqH5qkOf^KOG8tB
z?y3B=MtGjOvRTzmsj7yB{Og?^#FHi{Eo5e7Vc2=4zOG`HJj1#B2~l0fv8T^x@0XLl
z{)S`8{2M9^f$1zVjq48Q=l!1-C;#iA^aGhQ2hT7TAFqsOxW~lWacV(#)$IFs*6q;v
zwfP3mi{=9lAL-jM?uoCq{$<Gg%3?}`^8O~Rps8Wm-hYLEFm3jJ)A%*<?FwL6s+PD$
zl%yn<q*^5xr2;7iBLgENT?12HL(>ogGb>YLD?>|d0|P4qgC@S6J}4S;^HVa@DsgN0
z9L)Fus6hj6LrG?CYH>+oZUIP-iLQa6u7OF2p_!Gjp_Qox#1hx!%Qt~~7(8A5T-G@y
GGywo~^6ZiT

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/light_blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..2e65ce25e48bf5a8467464ee052efd6cb7a3b7b4
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-=PDZZKbY&U(x3|Ns9_@wl4@6lF~Ec6Z@v+#Hw;<Zu>v
zL>4nJ@ErzW#^d=bQh<W&C7!;n>@OHu1mvwIZ~XZMs7Ke+#WBR<^wCMSc}#`^t!D*`
zSi`3UskxsJ^_dnR{LAFtt)LcG)2^~=k+LA=wU17xru}IypF7{kUusWH)q7rTWih8y
zzpdA9Kelj*NVhZ#f0Vt_g;@?IF^(lUzN;m7XnbB&^117P*UAiz4Tr6kXGG1E3DcBf
zIyjL*kF!rnNM_>}-rZ+PbEiZwzV3KFv5|+Zb9qVv^Mgm6CuB7zIc{Cr6|$f!WNB#1
z&pnl&)(Fp2S2nBKDOJ_5kbk|igLu*erG?ClEDSrZ)Ynzal4m$~KOw5iIQI1U?EP}m
z*WYj~nSVotAuydqrg7cj{Jj73;^collzt#{=HMB|;^UR^4ELB=J5DX=u9|)S&bl2M
zzc%0CdC`2};Uj%J#y#=X*1rsyUs+6PP~P996*M(0+xxHZ52nrDZyLWQzFh$fOVtwB
zh?11Vl2ohYqEsNoU}Ruqq-$WRYiJr`U}j}%Y-MPvZD3$!V9><3(+5REZhlH;S|x4`
zpMx1c05xd9Z79jiO)V}-%q;-vG0`<J)HN^(F*LI>HncLefLP+1eEB9&4}+(xpUXO@
GgeCy<#_qEK

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/light_gray.png
new file mode 100644
index 0000000000000000000000000000000000000000..f1b3ea6f9221b63f28ea9d6b5550ffc81c5e0bbd
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-&06Gn<>MdwQDx|NkG9u00(n%9!Ns?!wc!IWQT>;Vkfo
zEM{QfI}E~%$MaXD00r4gJbhi+Uof%=$XiX``11=;kFKYSV~EA+qmyj&m<$D4&k7c?
zhEEGpb3Y;KGc7>)m&v_bK`pGNU1ilGWkJeoADvE3`_o)LcfOIo)SjBE_q^K5Vos-i
zTd&=IY~d1-ZfO?&D0`&~vm8od97}S1S4-~D_`Im(bJqc{l^Glx4qGkHh?*%ArYXgA
za3X^qXP=Ug%*HLeyU&#7PKjWA-SK>4BM)2W@{|PT2ah;U$ZAe<+`6<YWI<QR($JKj
zdn!Mz5uT^6Y*w{Xs;Xfj|9WQ!@uUe#3z->N7<OK%udA3P&v5R3LR6P=?CJB_`{kss
zzu{Oi|Aq=fU^<IT<GRE7dH?6d$^UvN{Xpi-!844-$1CF*?lG};oLbObHT(XZbvrbE
zZN9<tqWQqXNBVY*d*Z9De;G2rvY67KyuV2+Xlhut_g~>3Oq;#mG=5Edy8;-NswJ)w
zB`Jv|saDBFsX&Us$iT=**T7WQ&@{xr%*xc*%Ft5Vz`)ADpowp%4~mA|{FKbJO57Sg
z2Qz*EYS4h&P?DLOT3nKtTL98yqHAENYhV&$Xl7+>Xk}^vvBWj`@=c%~22WQ%mvv4F
FO#pz^?S=pV

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/lime.png
new file mode 100644
index 0000000000000000000000000000000000000000..20c5281a29138b9b2d84d83e06835251aaac14a9
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-&=G3ukN)%ik^W|Ns9>iQl&YMH!R4-CcMZHwPvIIh+L^
zk;M!Qe1}1p@p%4<6rdn`iKnkC`wK=E0eP#*8-IQQ>e2OdaSX9IeRPs-9+RO!>si4f
z*6?XTYVIdQeWnEn|1!CEE2xFlw5zOIq%25z?W5DFX@8o_=gv3sm)cWP^`2K-S<LCw
zZ|k+&k1bpx(k;!xA7!s}VU|NljAKcT?`p{%8lM-HeC|5nwK9Wa!(prC8BsH3!Zf9r
z4o+my<LpxslG(V0clVjn+$j-^uRESkY~*3<T%MA^{NNGi30ciaj$4;@g)Ha_SsI%1
zb5G@`HNx}MmCdSlN>w#1<X`XXAf7ZqX(2Ns3&YMU^>r1q<QdN0Pl)O=jy-)od%v9Y
z^*0<#=HF0Z2ux>@X<T<WKkxs%IQd@>r60(gIe3P#_;_VJ!#yU}j#CS|t7hN7vu=mR
zugy1jUNj$g_(<Q5aZh};^)Ex_R~Azml=nAj1x*dh_WmpUgK4w(o5rt+Z&v`rQnkc2
zq9i4;B-JXpC>2OC7#SED=^B{o8k&X}m|2+`TNzqv8yHv_7&P(i^g+>(o1c=IR*74~
z=U~PUKn)sj8%i>BQ;SOya|=LvOmqzlbq!2H49%>J4XsQqAeOi$U%m;{!{F)a=d#Wz
Gp$PzEGVS*O

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/magenta.png
new file mode 100644
index 0000000000000000000000000000000000000000..893bc49078c3026964852aa7d7cd0432e571aa50
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O--j6^{%&Gvdez`|NsAeOrqWaMH!R4-CcMZHwPvIIh+L^
zk;M!Qe1}1p@p%4<6rdn`iKnkC`wK=E0eP#*8-IQQ>e2OdaSX9IeRPs-9+RO!>si4f
z*6?XTYVIdQeWnEn|1!CEE2xFlw5zOIq%25z?W5DFX@8o_=gv3sm)cWP^`2K-S<LCw
zZ|k+&k1bpx(k;!xA7!s}VU|NljAKcT?`p{%8lM-HeC|5nwK9Wa!(prC8BsH3!Zf9r
z4o+my<LpxslG(V0clVjn+$j-^uRESkY~*3<T%MA^{NNGi30ciaj$4;@g)Ha_SsI%1
zb5G@`HNx}MmCdSlN>w#1<X`XXAf7ZqX(2Ns3&YMU^>r1q<QdN0Pl)O=jy-)od%v9Y
z^*0<#=HF0Z2ux>@X<T<WKkxs%IQd@>r60(gIe3P#_;_VJ!#yU}j#CS|t7hN7vu=mR
zugy1jUNj$g_(<Q5aZh};^)Ex_R~Azml=nAj1x*dh_WmpUgK4w(o5rt+Z&v`rQnkc2
zq9i4;B-JXpC>2OC7#SED=^B{o8k&X}m|2+`TNzqv8yHv_7&P(i^g+>(o1c=IR*74~
z=U~PUKn)sj8%i>BQ;SOya|=LvOmqzlbq!2H49%>J4XsQqAeOi$U%m;{!{F)a=d#Wz
Gp$PzMrS10s

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/orange.png
new file mode 100644
index 0000000000000000000000000000000000000000..99f66b2b95d6da4a99b009ba28fc2e236c4fa1f2
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-+x+@;uAs|5_sO|NsBLm!_5jMH!R4-CcMZHwPvIIh+L^
zk;M!Qe1}1p@p%4<6rdn`iKnkC`wK=E0eP#*8-IQQ>e2OdaSX9IeRPs-9+RO!>si4f
z*6?XTYVIdQeWnEn|1!CEE2xFlw5zOIq%25z?W5DFX@8o_=gv3sm)cWP^`2K-S<LCw
zZ|k+&k1bpx(k;!xA7!s}VU|NljAKcT?`p{%8lM-HeC|5nwK9Wa!(prC8BsH3!Zf9r
z4o+my<LpxslG(V0clVjn+$j-^uRESkY~*3<T%MA^{NNGi30ciaj$4;@g)Ha_SsI%1
zb5G@`HNx}MmCdSlN>w#1<X`XXAf7ZqX(2Ns3&YMU^>r1q<QdN0Pl)O=jy-)od%v9Y
z^*0<#=HF0Z2ux>@X<T<WKkxs%IQd@>r60(gIe3P#_;_VJ!#yU}j#CS|t7hN7vu=mR
zugy1jUNj$g_(<Q5aZh};^)Ex_R~Azml=nAj1x*dh_WmpUgK4w(o5rt+Z&v`rQnkc2
zq9i4;B-JXpC>2OC7#SED=^B{o8k&X}m|2+`TNzqv8yHv_7&P(i^g+>(o1c=IR*74~
z=U~PUKn)sj8%i>BQ;SOya|=LvOmqzlbq!2H49%>J4XsQqAeOi$U%m;{!{F)a=d#Wz
Gp$Pz&x9*4l

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/pink.png
new file mode 100644
index 0000000000000000000000000000000000000000..69bf2758364825392ba06b4eed6d8ba6ff60f9f2
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-+v!bUtZX@VR@{|Ns9RT;A&eMH!R4-CcMZHwPvIIh+L^
zk;M!Qe1}1p@p%4<6rdn`iKnkC`wK=E0eP#*8-IQQ>e2OdaSX9IeRPs-9+RO!>si4f
z*6?XTYVIdQeWnEn|1!CEE2xFlw5zOIq%25z?W5DFX@8o_=gv3sm)cWP^`2K-S<LCw
zZ|k+&k1bpx(k;!xA7!s}VU|NljAKcT?`p{%8lM-HeC|5nwK9Wa!(prC8BsH3!Zf9r
z4o+my<LpxslG(V0clVjn+$j-^uRESkY~*3<T%MA^{NNGi30ciaj$4;@g)Ha_SsI%1
zb5G@`HNx}MmCdSlN>w#1<X`XXAf7ZqX(2Ns3&YMU^>r1q<QdN0Pl)O=jy-)od%v9Y
z^*0<#=HF0Z2ux>@X<T<WKkxs%IQd@>r60(gIe3P#_;_VJ!#yU}j#CS|t7hN7vu=mR
zugy1jUNj$g_(<Q5aZh};^)Ex_R~Azml=nAj1x*dh_WmpUgK4w(o5rt+Z&v`rQnkc2
zq9i4;B-JXpC>2OC7#SED=^B{o8k&X}m|2+`TNzqv8yHv_7&P(i^g+>(o1c=IR*74~
z=U~PUKn)sj8%i>BQ;SOya|=LvOmqzlbq!2H49%>J4XsQqAeOi$U%m;{!{F)a=d#Wz
Gp$Pzot?zIE

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/purple.png
new file mode 100644
index 0000000000000000000000000000000000000000..db3cbab891d7dfd490f3f2084a06fef4e05a60d8
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-*CvI&zigm#D4$|NsB@`&YLEMH!R4-CcMZHwPvIIh+L^
zk;M!Qe1}1p@p%4<6rdn`iKnkC`wK=E0eP#*8-IQQ>e2OdaSX9IeRPs-9+RO!>si4f
z*6?XTYVIdQeWnEn|1!CEE2xFlw5zOIq%25z?W5DFX@8o_=gv3sm)cWP^`2K-S<LCw
zZ|k+&k1bpx(k;!xA7!s}VU|NljAKcT?`p{%8lM-HeC|5nwK9Wa!(prC8BsH3!Zf9r
z4o+my<LpxslG(V0clVjn+$j-^uRESkY~*3<T%MA^{NNGi30ciaj$4;@g)Ha_SsI%1
zb5G@`HNx}MmCdSlN>w#1<X`XXAf7ZqX(2Ns3&YMU^>r1q<QdN0Pl)O=jy-)od%v9Y
z^*0<#=HF0Z2ux>@X<T<WKkxs%IQd@>r60(gIe3P#_;_VJ!#yU}j#CS|t7hN7vu=mR
zugy1jUNj$g_(<Q5aZh};^)Ex_R~Azml=nAj1x*dh_WmpUgK4w(o5rt+Z&v`rQnkc2
zq9i4;B-JXpC>2OC7#SED=^B{o8k&X}m|2+`TNzqv8yHv_7&P(i^g+>(o1c=IR*74~
z=U~PUKn)sj8%i>BQ;SOya|=LvOmqzlbq!2H49%>J4XsQqAeOi$U%m;{!{F)a=d#Wz
Gp$PzU;O=_>

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/red.png
new file mode 100644
index 0000000000000000000000000000000000000000..dfecc550d09e80774f94f6756e076b47f3c33914
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-<`$r6(yV%u!YP4+NGOXMv)ON#5=*JdK+JlYt!00*}aI
z1_r*vAk26?e?<yVkiEpy*OmPRBa48%)#QyozX0{<db&7<Se!mO$u^J4P@wg!U=eHh
zv>-M26QVxT0)&5=+`ARj!fM)8RxMH%q`dag>D078&E<3F8~ID^si}I;tF0{Nbn3VD
z+U>^{E)nULX5o*rSGq9Ep(Mt!B*%BP<PMF`i%LFs9q?M2!Li}6)$)v}nKEITQcMRY
zGU##kDGAAJ+`_y2Olj_v2*%eP&nGtWuyrm^Nnn2Pi1UQ3<|N0hOS?iAbcHMpP5HT}
z^3xjOdFsk$RXe4s8W!@ecXkj@nxM3hnURHI=au@pidpgu=k6y&bs5K=KA*i`PWt*A
zjwSPNs4xVkv&b~AJDi{Qe_ovYuZPkPWX>Es!&rR0GM?cc6Klt*1>IG%@84OsL*v)x
z8$2(X4?KLNZ^yVNzS{biA@eJXDGkc|o3w(ahGl#I75>4r+51i7*TlCgfMKax;u=ws
zl30>zm0Xkxq!^40jEr;*Omz)SLk!HUOpUD!Ewv2{tPBjA_;&iBXvob^$xN%nt>JSp
z;|HJy4Y&;@nYpROC5gEOAU!6!28Ox@CLxAqR>p=_rWO!OT$3-~1nOb%boFyt=akR{
E08IGoegFUf

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/white.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf00c8adcc791f10d0d3c32af000bedddb5a2eaf
GIT binary patch
literal 669
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LEt;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-;|8JNMzkhyVZo3$WZW0SYlDdAqxC%U?fo0LbAi@Q5sC
zVBk9p!i>lBSEK+1*-JcqUD;nSvIxjqP2TwP3s8@)r;B5V#p$DyZ1b251zOJv7O{p;
z3sQ4GA?h<NK=_x*y<0&otfpOM)gom<%4;8;PEGsMTt0Wck-yZQnyUA_+R9>1r+!<n
z-F|H05|M6c7XB!Er3<qhN@5&Ka(q`y?$G$WsN{3k0k4%A92*W>EzgLWDHEnC#dL5Y
zgC1v}l90^CExfzWl;%!}V0_*2d}1RHTj%nW1m*{iI8VrGPIBD3v@2vmSIE-Pl%IPl
zKdlj-r><;PwNt99VIlu|X9w}52}%o@8Ce*1Ua7CEm?h6}?tVg4mvQXr^V$35q_4l>
zSTg^H3PWHzi%jFX!})pt=f%nYdMN!s=FGt}jK#+*;~DNTv38tV&|NkA{+)F@G=6Qq
z!SkZ|z{5xSc8q)CtF3<-GQYBz(xAM*Nh@e-Shn|H;U7$!z27u`O?<lo7?!Fft`Q|E
zi6yC4$wjF^iowXh$Vk_~RM*fn#K6qT)Y!_<Qrp15%D|wBZ>JB6hTQy=%(P0}8a@Xz
zegJCFfZI@#nVVW%l9*cn(qp1)V5n<g5@Kj(Wo&3=Y5}ptHTm*QpdJQKS3j3^P6<r_
DKS1t|

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier/yellow.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a1588e097262ac94f56b73698df40e41346b44a
GIT binary patch
literal 672
zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QY`6?zK#qG8~eHcB(ehe3dtTp
zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}LE(;1lBd{|3YV2cBYL
zVp|y){xdKnBqY?=*8?R@O-)ZPkbS#b@y~IU|NsB{#AL1niZUj7ySwl-ZVpTaaySb-
zB8wRq_zr_G<MI3zDL_H?5>H=O_7{vS0`gXqH~#zr)T8U^;uvCa`sgIvJSIbd*0X{|
ztl`sw)Z9;q`b-ND{$+CSR!|G8X;)dbNLi5b+DE5T)BZG<&z*1NFSVzp>OHTvvY6AU
z-_~olA6vLYq+6PWKgwR|!Yqf97{`(v-_?>kG(ImX`P_BDYh?z<hQn6NGooh7glS4K
z9h}IZ$JwVOB(re~@9s0Dxl<w-Uw1s8*vP}yxjZF-`N1R36SA6<9Jem*3R%z<vNSa1
z=bp+>YlP>iE1OmAl&Wf2$iLp%K|E=K(n4lN7KWWy>gy_I$upe0pAgk$9DDkF_I^3(
z>u)%g%)g<+5SY#))41+%e%}9iaq_<&N<WY}bMOpf@$t%dhI>q`9j6v_SIxeEXWb5s
zUz>06yl6h~@R7b9<DU3x>tBY<uPmlCDDQ953Yr?0?fqBy2h(QnH;rEt->v|LrD}<5
zL`h0wNvc(HQ7VvPFfuSQ(ls#EH8c$|Ftai>wlcKTHZZU<Flgf2>4TynH$NpatrE9}
z&%ulzfEqO5Hk4%MrWThZ<`#hTnCKc9>Kd4Y7@Aob8(NuKKrC@hzI+p?hr!d;&t;uc
GLK6VKAnuj`

literal 0
HcmV?d00001

diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/storage_power_supplier_mask.png
new file mode 100644
index 0000000000000000000000000000000000000000..7178545762d3b473c2ba5014dd5a94c7df4919ac
GIT binary patch
literal 1221
zcmV;$1UmbPP)<h;3K|Lk000e1NJLTq001BW002M;1^@s6dyaLk0004nX+uL$Nkc;*
zaB^>EX>4Tx04R}tkvmAkP!xv$rb>%c94sQ@kfA!+#TSmHibb$c+6t{YnB4RQO&XFE
z7e~Rh;NWAi>fqw6tAnc`2tGiZ9h?+hq{MTRLW>v=T<*tz&;N7pxq#5DGS%#f0jg#h
z=|o)2<yXbPD}3-Hh#|~K%+!;a#VkDQ>z=x)?xH-)yYJ8HR|+Nrd?Im->4rtTK|H%@
z>74h8!>lYR#OK5l23?T&k?XR{Z=6dG3p_JyWYhD+VPdh=#c~(3vY`@B6Gs$PqkJLf
zvch?bvs$gQ_C5IvLj`Rm!*yDtNMH#`q#!~@9TikzAxgVOiitFx$36Tbjz2{%nOqex
zax9<*6_Voz|AXJNHH%Y|Zc-=?^uE~k#~2XU1zHW;{yw(t)(PN$2ClS@zt#liK1pwM
zw8#-Kunk;XcQknqxZDATpLEHP9LY~hC>DYDGy0}HFn9~}t+{h+pX2la$kMEqZ-9eC
zV7x@x>mKh8cF*nKp7#8H0G6F{wGk}A8UO$Q24YJ`L;(K){{a7>y{D4^000SaNLh0L
z01m?d01m?e$8V@)00007bV*G`2j~F=5Faz@Z9z}~00O~DL_t(&-tAdCj_NQJJ)TKN
zK`JV$YypbwfHYYNtN?13K*=g-oF)xT8n%!s5>hH>1Nc=&iO1hK3~wZkgoL@iw(sA*
z5Y9RJSg+TE@qWKYmSv!n0sv;S*?^v=DdISOj<?$_OsJ}AFpl7eEXx1@*Xz}|po~1v
zr#XO51EKix(SXo`Y=S;cr_)n%S$Y+s-EL=Guq;cIWob1H0IXIk<($jqqBO_T1Ufs4
z!`SFHm^2aT7LzwM(YM>J(HX58kQdcSW}^pbAQYxUIcvZsnTg&vfjrMi1Ga=>qsyBL
zsb$=5x51d$Ql||f?#F^qO0ifhc#<SujCEb3ZCe6B$uH=t<TW^eNFKhP?HZ=C%73I{
z-;L!>P5drv2Zy2X0hOdS=>g#T@pu3LmdmBr#!b_pX&T(`_aFhHu_h3FE>c>{u`R~O
z<b}!a1Fyo@m=GMxqjkcjX}q1Vs;WtxFgOo{f>27eSu9OcKA+FM7VNqXRaFrkzo3g0
z9i?fiOsiE@p{{ErNrJkr0RXys(Wi^=;&)YzaL$Bn+mg0z`(s$<8~MFcafk_QRnVFT
z(lq4(&gsreDFtI}@S&7~_rMtAj4`f*ivDLZA<+@~QgmGh0MPk^icSb2e_I2LF>aFD
z6a@ef$8nejL^c}(AKu8-V~e67o6Ux+#=G5)<as`L3s6d*W7E|=DvHASwDMdZUelF~
zhc0rtT*%mm3lYvH7YSA2IUEjyjgH47_i;F@6DCOl-xt!a-3fKlzwJ^gAL!)=I3AC@
zFZEkAAf%pZ^B)%yITCc5n6ws%FbqLR7)CBqzY@{;d?xQafcA0P|4sK0o#KHS*%}Nk
zO)ODSO%+pjL$ZdUPy0@8&FNZoUM-r?9?&F-=#@V3e>5n@nqdkPM6T*rZT2fB@adq-
jU2&KHj6V3_gAe`zP@m2atGZ1d00000NkvXXu0mjfCV4QT

literal 0
HcmV?d00001