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~;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	nas?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+uOyI0u;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+uOylKI-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%*HLeyUPKjWA-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