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 942edb0de..4bc01a1bc 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 @@ -70,7 +70,7 @@ fun addMachineAdvancements(serializer: Consumer, lang: Matter val chem = AdvancementBuilder() .parent(root) .display( - itemStack = ItemStack(MItems.CHEMICAL_GENERATOR), + itemStack = ItemStack(MItems.CHEMICAL_GENERATOR[null]!!), title = translation.add("chemical_generator", "Burning the Organics") { russian("Сжигание органики") }, @@ -78,7 +78,11 @@ fun addMachineAdvancements(serializer: Consumer, lang: Matter russian("Создайте химический генератор. Лучше установить его снаружи") }, ) - .addCriterion("has_machine", criterion(MItems.CHEMICAL_GENERATOR)) + .also { + for ((i, v) in MItems.CHEMICAL_GENERATOR.values.withIndex()) + it.addCriterion("has_machine_$i", criterion(v)) + } + .requirements(AdvancementRequirements.Strategy.OR) .save(serializer, modLocation("machines/chemical_generator")) val press = AdvancementBuilder() @@ -117,7 +121,7 @@ fun addMachineAdvancements(serializer: Consumer, lang: Matter val capacitor = CraftEntry(MItems.MATTER_CAPACITOR_BANK.values, "Modular Matter Tank", russianName = "Модульный бак материи") - val counter = CraftEntry(MItems.ENERGY_COUNTER, "Visualize Power Burn", + val counter = CraftEntry(MItems.ENERGY_COUNTER.values, "Visualize Power Burn", russianName = "Визуализация сжигания энергии") val battery = CraftEntry(MItems.BATTERY_BANK.values, "Batteries Not Included", "By all means avoid the urge to hammer incompatible batteries into the power bus.", russianName = "Батарейки в комплект не входят", russianSuffix = "Пожалуйста, воздержитесь от вбивания кувалдой несовместимых батарей в энергетическую шину.") 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 531d0fd89..0919c9a83 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 @@ -14,6 +14,7 @@ fun addBlockModels(provider: MatteryBlockModelProvider) { colored(MBlocks.ESSENCE_STORAGE, listOf("0", "particle")) colored(MBlocks.ITEM_MONITOR, listOf("0", "particle")) colored(MBlocks.MATTER_RECONSTRUCTOR, listOf("0", "particle")) + colored(MBlocks.ENERGY_SERVO, listOf("0", "particle")) colored("matter_capacitor_bank", listOf("1", "particle"), "mattercapacitorbank_frame") colored("battery_bank", listOf("0", "particle"), "batterybank_frame") @@ -22,6 +23,9 @@ fun addBlockModels(provider: MatteryBlockModelProvider) { colored("android_charger", "_middle", listOf("0", "particle")) colored("android_charger", "_top", listOf("0", "particle")) + colored("chemical_generator", "_idle", listOf("0", "particle")) + colored("chemical_generator", "_working", listOf("0", "particle")) + colored("storage_power_supplier", listOf("0", "particle")) colored("matter_panel", listOf("texture", "particle")) colored("drive_viewer", "_idle", listOf("texture", "particle")) @@ -54,5 +58,16 @@ fun addBlockModels(provider: MatteryBlockModelProvider) { colored("android_station", "_idle", mapOf("1" to "android_station_base", "particle" to "android_station_base")) colored("android_station", "_working", mapOf("2" to "android_station_base", "particle" to "android_station_base")) + + val energyCounter = setOf( + "down", "east", "north", "south", + "north_down", "north_east", "north_west", + "south_down", "south_east", "south_west", + "up", "west", + ) + + for (model in energyCounter) { + colored("energy_counter_$model", listOf("texture", "particle"), "energy_counter") + } } } 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 70bacd72d..e9de264e2 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 @@ -29,7 +29,7 @@ fun addBlockStates(provider: MatteryBlockStateProvider) { provider.block(MBlocks.TRITANIUM_INGOT_BLOCK) provider.block(MBlocks.METAL_MESH) - provider.block(MBlocks.CHEMICAL_GENERATOR) + provider.block(MBlocks.CHEMICAL_GENERATOR.values) provider.block(MBlocks.MATTER_SCANNER.values) provider.block(MBlocks.ITEM_MONITOR.values) provider.block(MBlocks.HOLO_SIGN) @@ -110,7 +110,7 @@ fun addBlockStates(provider: MatteryBlockStateProvider) { provider.block(MBlocks.MATTER_PANEL.values) provider.block(MBlocks.MATTER_RECYCLER.values) provider.block(MBlocks.MATTER_RECONSTRUCTOR.values) - provider.block(MBlocks.ENERGY_SERVO) + provider.block(MBlocks.ENERGY_SERVO.values) provider.block(MBlocks.COBBLESTONE_GENERATOR.values) provider.block(MBlocks.ESSENCE_STORAGE.values) 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 f0c14a863..ec9d37129 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 @@ -53,46 +53,49 @@ fun addComplexBlockStates(provider: MatteryBlockStateProvider) { } } - with(provider.getMultipartBuilder(MBlocks.ENERGY_COUNTER)) { - // даваааййй - val up = provider.models().getExistingFile(modLocation("block/energy_counter_up")) - val down = provider.models().getExistingFile(modLocation("block/energy_counter_down")) - val west = provider.models().getExistingFile(modLocation("block/energy_counter_west")) - val east = provider.models().getExistingFile(modLocation("block/energy_counter_east")) + for ((dye, block) in MBlocks.ENERGY_COUNTER) { + with(provider.getMultipartBuilder(block)) { + val dyeName = dye?.name?.lowercase()?.let { "_$it" } ?: "" + // даваааййй + val up = provider.models().getExistingFile(modLocation("block/energy_counter_up$dyeName")) + val down = provider.models().getExistingFile(modLocation("block/energy_counter_down$dyeName")) + val west = provider.models().getExistingFile(modLocation("block/energy_counter_west$dyeName")) + val east = provider.models().getExistingFile(modLocation("block/energy_counter_east$dyeName")) - // ДАААА ДАВАЙЙ ДАААВАААЙЙЙЙЙЙ - val north = provider.models().getExistingFile(modLocation("block/energy_counter_north")) - val northDown = provider.models().getExistingFile(modLocation("block/energy_counter_north_down")) - val northEast = provider.models().getExistingFile(modLocation("block/energy_counter_north_east")) - val northWest = provider.models().getExistingFile(modLocation("block/energy_counter_north_west")) - val south = provider.models().getExistingFile(modLocation("block/energy_counter_south")) - val southDown = provider.models().getExistingFile(modLocation("block/energy_counter_south_down")) - val southEast = provider.models().getExistingFile(modLocation("block/energy_counter_south_east")) - val southWest = provider.models().getExistingFile(modLocation("block/energy_counter_south_west")) + // ДАААА ДАВАЙЙ ДАААВАААЙЙЙЙЙЙ + val north = provider.models().getExistingFile(modLocation("block/energy_counter_north$dyeName")) + val northDown = provider.models().getExistingFile(modLocation("block/energy_counter_north_down$dyeName")) + val northEast = provider.models().getExistingFile(modLocation("block/energy_counter_north_east$dyeName")) + val northWest = provider.models().getExistingFile(modLocation("block/energy_counter_north_west$dyeName")) + val south = provider.models().getExistingFile(modLocation("block/energy_counter_south$dyeName")) + val southDown = provider.models().getExistingFile(modLocation("block/energy_counter_south_down$dyeName")) + val southEast = provider.models().getExistingFile(modLocation("block/energy_counter_south_east$dyeName")) + val southWest = provider.models().getExistingFile(modLocation("block/energy_counter_south_west$dyeName")) - for (dir in arrayOf(Direction.EAST, Direction.WEST, Direction.SOUTH, Direction.NORTH)) { - part().modelFile(down).rotationY(dir.yRotationBlockstateNorth()).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.UP).condition(EnergyCounterBlock.IF_DIRECTION, dir) - part().modelFile(up).rotationY(dir.yRotationBlockstateNorth()).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.DOWN).condition(EnergyCounterBlock.IF_DIRECTION, dir) - } + for (dir in arrayOf(Direction.EAST, Direction.WEST, Direction.SOUTH, Direction.NORTH)) { + part().modelFile(down).rotationY(dir.yRotationBlockstateNorth()).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.UP).condition(EnergyCounterBlock.IF_DIRECTION, dir) + part().modelFile(up).rotationY(dir.yRotationBlockstateNorth()).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.DOWN).condition(EnergyCounterBlock.IF_DIRECTION, dir) + } - // низкий поклон за полностью рабочий поворот вокруг оси Z - part().modelFile(north).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.NORTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.UP) - part().modelFile(northDown).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.NORTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.DOWN) - part().modelFile(northEast).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.NORTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.EAST) - part().modelFile(northWest).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.NORTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.WEST) + // низкий поклон за полностью рабочий поворот вокруг оси Z + part().modelFile(north).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.NORTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.UP) + part().modelFile(northDown).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.NORTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.DOWN) + part().modelFile(northEast).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.NORTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.EAST) + part().modelFile(northWest).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.NORTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.WEST) - part().modelFile(south).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.SOUTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.UP) - part().modelFile(southDown).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.SOUTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.DOWN) - part().modelFile(southEast).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.SOUTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.EAST) - part().modelFile(southWest).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.SOUTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.WEST) + part().modelFile(south).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.SOUTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.UP) + part().modelFile(southDown).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.SOUTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.DOWN) + part().modelFile(southEast).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.SOUTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.EAST) + part().modelFile(southWest).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, Direction.SOUTH).condition(EnergyCounterBlock.IF_DIRECTION, Direction.WEST) - for (dir in arrayOf(Direction.WEST, Direction.EAST)) { - val mdl = if (dir === Direction.WEST) west else east + for (dir in arrayOf(Direction.WEST, Direction.EAST)) { + val mdl = if (dir === Direction.WEST) west else east - part().modelFile(mdl).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, dir).condition(EnergyCounterBlock.IF_DIRECTION, Direction.NORTH) - part().modelFile(mdl).rotationX(-90).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, dir).condition(EnergyCounterBlock.IF_DIRECTION, Direction.UP) - part().modelFile(mdl).rotationX(180).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, dir).condition(EnergyCounterBlock.IF_DIRECTION, Direction.SOUTH) - part().modelFile(mdl).rotationX(90).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, dir).condition(EnergyCounterBlock.IF_DIRECTION, Direction.DOWN) + part().modelFile(mdl).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, dir).condition(EnergyCounterBlock.IF_DIRECTION, Direction.NORTH) + part().modelFile(mdl).rotationX(-90).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, dir).condition(EnergyCounterBlock.IF_DIRECTION, Direction.UP) + part().modelFile(mdl).rotationX(180).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, dir).condition(EnergyCounterBlock.IF_DIRECTION, Direction.SOUTH) + part().modelFile(mdl).rotationX(90).addModel().condition(EnergyCounterBlock.INPUT_DIRECTION, dir).condition(EnergyCounterBlock.IF_DIRECTION, Direction.DOWN) + } } } } 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 f397d23fa..d3de3d6dc 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 @@ -166,15 +166,15 @@ fun addItemModels(provider: MatteryItemModelProvider) { for (item in MRegistry.CARGO_CRATES.allItems.values) provider.block(item, "${item.registryName!!.path}_closed") - provider.block(MItems.CHEMICAL_GENERATOR, "chemical_generator_working") - provider.block(MItems.ENERGY_COUNTER, "energy_counter_down") + provider.coloredWithBaseBlock(MItems.CHEMICAL_GENERATOR, "chemical_generator", "_working") + provider.coloredWithBaseBlock(MItems.ENERGY_COUNTER, "energy_counter_down") provider.coloredWithBaseBlock(MItems.MATTER_BOTTLER, "matter_bottler", "_idle") provider.coloredWithBaseBlock(MItems.MATTER_SCANNER, "matter_scanner", "_idle") provider.coloredWithBaseBlock(MItems.MATTER_REPLICATOR, "matter_replicator", "_idle") provider.coloredWithBaseBlock(MItems.DRIVE_VIEWER, "drive_viewer", "_idle") provider.block(MItems.MATTER_CABLE, "matter_cable_core") provider.coloredWithBaseBlock(MItems.MATTER_DECOMPOSER, "matter_decomposer", "_idle") - provider.block(MItems.ENERGY_SERVO, "energy_servo") + provider.coloredWithBaseBlock(MItems.ENERGY_SERVO, "energy_servo") provider.coloredWithBaseBlock(MItems.ESSENCE_STORAGE, "essence_storage") provider.coloredWithBaseBlock(MItems.MATTER_RECONSTRUCTOR, "matter_reconstructor") 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 927636f6f..b59724bc3 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 @@ -453,12 +453,12 @@ private fun blocks(provider: MatteryLanguageProvider) { add(MBlocks.TRITANIUM_INGOT_BLOCK, "Tritanium Plating Block") - add(MBlocks.ENERGY_COUNTER, "Energy Counter") - add(MBlocks.ENERGY_COUNTER, "facing", "Input facing: %s") - add(MBlocks.ENERGY_COUNTER, "switch", "Switch input facing") - add(MBlocks.ENERGY_COUNTER, "limit", "I/O Limit. -1 means no limit") + addBlock(MBlocks.ENERGY_COUNTER.values, "Energy Counter") + add(MBlocks.ENERGY_COUNTER[null]!!, "facing", "Input facing: %s") + add(MBlocks.ENERGY_COUNTER[null]!!, "switch", "Switch input facing") + add(MBlocks.ENERGY_COUNTER[null]!!, "limit", "I/O Limit. -1 means no limit") - add(MBlocks.CHEMICAL_GENERATOR, "Chemical Generator") + addBlock(MBlocks.CHEMICAL_GENERATOR.values, "Chemical Generator") add(MBlocks.DRIVE_RACK, "Condensation Drive Rack") addBlock(MBlocks.ITEM_MONITOR.values, "Item Monitor") addBlock(MBlocks.PLATE_PRESS.values, "Plate Press") @@ -469,8 +469,8 @@ private fun blocks(provider: MatteryLanguageProvider) { addBlock(MBlocks.POWERED_BLAST_FURNACE.values, "Induction Furnace") addBlock(MBlocks.MATTER_RECYCLER.values, "Matter Recycler") - add(MBlocks.ENERGY_SERVO, "Energy Servo") - add(MBlocks.ENERGY_SERVO, "desc", "Charges, Discharges or Exchanges energy of items") + addBlock(MBlocks.ENERGY_SERVO.values, "Energy Servo") + addBlock(MBlocks.ENERGY_SERVO.values, "desc", "Charges, Discharges or Exchanges energy of items") add(MBlocks.CARBON_FIBRE_BLOCK, "Carbon Fibre Block") add(MBlocks.METAL_JUNK, "Metal Junk Block") 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 3dc3f7820..f529af7e8 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 @@ -455,12 +455,12 @@ private fun blocks(provider: MatteryLanguageProvider) { add(MBlocks.TRITANIUM_INGOT_BLOCK, "Блок слитков тритана") - add(MBlocks.ENERGY_COUNTER, "Счётчик энергии") - add(MBlocks.ENERGY_COUNTER, "Facing", "сторона входа: %s") - add(MBlocks.ENERGY_COUNTER, "Switch", "сменить сторону входа") - add(MBlocks.ENERGY_COUNTER, "Limit", "лимит ввода/вывода. -1 для отключения лимитов") + addBlock(MBlocks.ENERGY_COUNTER.values, "Счётчик энергии") + add(MBlocks.ENERGY_COUNTER[null]!!, "Facing", "сторона входа: %s") + add(MBlocks.ENERGY_COUNTER[null]!!, "Switch", "сменить сторону входа") + add(MBlocks.ENERGY_COUNTER[null]!!, "Limit", "лимит ввода/вывода. -1 для отключения лимитов") - add(MBlocks.CHEMICAL_GENERATOR, "Химический генератор") + addBlock(MBlocks.CHEMICAL_GENERATOR.values, "Химический генератор") add(MBlocks.DRIVE_RACK, "Стеллаж дисков конденсации") addBlock(MBlocks.ITEM_MONITOR.values, "Монитор предметов") addBlock(MBlocks.PLATE_PRESS.values, "Пресс пластин") @@ -471,8 +471,8 @@ private fun blocks(provider: MatteryLanguageProvider) { addBlock(MBlocks.POWERED_SMOKER.values, "Микроволновая печь") addBlock(MBlocks.MATTER_RECYCLER.values, "Перерабатыватель материи") - add(MBlocks.ENERGY_SERVO, "Энергетическая помпа") - add(MBlocks.ENERGY_SERVO, "Desc", "заряжает, разряжает и передаёт энергию между предметами") + addBlock(MBlocks.ENERGY_SERVO.values, "Энергетическая помпа") + addBlock(MBlocks.ENERGY_SERVO.values, "desc", "заряжает, разряжает и передаёт энергию между предметами") add(MBlocks.CARBON_FIBRE_BLOCK, "Блок углеродных трубок") add(MBlocks.METAL_MESH, "Блок металлической сетки") 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 c6d6db337..3c8e2b49b 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 @@ -138,9 +138,9 @@ fun addLootTables(lootTables: LootTables) { lootTables.tile(MBlocks.PAINTER) lootTables.tile(MBlocks.MATTER_ENTANGLER) - lootTables.tile(MBlocks.ENERGY_SERVO) - lootTables.tile(MBlocks.ENERGY_COUNTER) - lootTables.tile(MBlocks.CHEMICAL_GENERATOR) + lootTables.tile(MBlocks.ENERGY_SERVO.values) + lootTables.tile(MBlocks.ENERGY_COUNTER.values) + lootTables.tile(MBlocks.CHEMICAL_GENERATOR.values) lootTables.tile(MBlocks.HOLO_SIGN, "isLocked") lootTables.tile(MBlocks.STORAGE_CABLE) lootTables.tile(MBlocks.ANDROID_STATION.values) 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 1b13af09d..460bfe781 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 @@ -47,10 +47,12 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) { .unlockedBy(MItemTags.TRITANIUM_INGOTS_STORAGE) .save(consumer, modLocation("tritanium_ingot_from_storage")) - ShapelessRecipeBuilder(machinesCategory, MItems.ENERGY_COUNTER, 1) - .requires(MItems.ENERGY_COUNTER) - .unlockedBy(MItems.ENERGY_COUNTER) - .save(consumer, modLocation("energy_counter_reset")) + MItems.ENERGY_COUNTER.values.forEach { + ShapelessRecipeBuilder(machinesCategory, it, 1) + .requires(it) + .unlockedBy(it) + .save(consumer, modLocation("${it.registryName!!.path}_reset")) + } ShapelessRecipeBuilder(machinesCategory, MItems.HOLO_SIGN, 1) .requires(MItems.HOLO_SIGN) @@ -176,7 +178,7 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) { .unlockedBy(MItems.ELECTROMAGNET) .build(consumer) - MatteryRecipe(MItems.ENERGY_SERVO, category = RecipeCategory.MISC) + MatteryRecipe(MItems.ENERGY_SERVO[null]!!, category = RecipeCategory.MISC) .row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES) .row(MItemTags.TRITANIUM_PLATES, MItems.ENERGY_BUS, MItemTags.TRITANIUM_PLATES) .unlockedBy(MItems.ENERGY_BUS) 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 268946d80..a3d384f29 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 @@ -293,6 +293,9 @@ fun addPainterRecipes(consumer: RecipeOutput) { MItems.DRIVE_VIEWER, MItems.ANDROID_CHARGER, MItems.MATTER_PANEL, + MItems.ENERGY_SERVO, + MItems.ENERGY_COUNTER, + MItems.CHEMICAL_GENERATOR, ) 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 6a05f734b..fd1615e8e 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 @@ -189,8 +189,8 @@ fun addTags(tagsProvider: TagsProvider) { *MBlocks.MATTER_PANEL.values.toTypedArray(), *MBlocks.MATTER_REPLICATOR.values.toTypedArray(), *MBlocks.MATTER_BOTTLER.values.toTypedArray(), - MBlocks.ENERGY_COUNTER, - MBlocks.CHEMICAL_GENERATOR, + *MBlocks.ENERGY_COUNTER.values.toTypedArray(), + *MBlocks.CHEMICAL_GENERATOR.values.toTypedArray(), *MBlocks.PLATE_PRESS.values.toTypedArray(), *MBlocks.TWIN_PLATE_PRESS.values.toTypedArray(), *MBlocks.MATTER_RECYCLER.values.toTypedArray(), @@ -210,7 +210,7 @@ fun addTags(tagsProvider: TagsProvider) { *MBlocks.STORAGE_POWER_SUPPLIER.values.toTypedArray(), MBlocks.PHANTOM_ATTRACTOR, - MBlocks.ENERGY_SERVO, + *MBlocks.ENERGY_SERVO.values.toTypedArray(), MBlocks.TRITANIUM_INGOT_BLOCK, MBlocks.METAL_JUNK, diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt index cd31ca398..858954a4d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt @@ -53,16 +53,16 @@ fun Block.getShapeForEachState(properties: List>, fn: (BlockState) - val builder = Object2ObjectArrayMap>() if (properties.isEmpty()) { - val shape = fn(stateDefinition.possibleStates.first()) + val shape = Util.backgroundExecutor().submit(Callable { fn(stateDefinition.possibleStates.first()) }) for (state in stateDefinition.possibleStates) { - builder.put(state, Supplier { shape }) + builder[state] = shape.asSupplier() } } else { val cache = Object2ObjectArrayMap, Supplier>() for (state in stateDefinition.possibleStates) { - builder.put(state, cache.computeIfAbsent(properties.map { state[it] }, Object2ObjectFunction { Util.backgroundExecutor().submit(Callable { fn(state) }).asSupplier() })) + builder[state] = cache.computeIfAbsent(properties.map { state[it] }, Object2ObjectFunction { Util.backgroundExecutor().submit(Callable { fn(state) }).asSupplier() }) } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/ChemicalGeneratorBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/ChemicalGeneratorBlock.kt index 48e4ca6ee..a70403517 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/ChemicalGeneratorBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/ChemicalGeneratorBlock.kt @@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.block.tech 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 @@ -24,7 +25,7 @@ import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.shapes.BlockShapes -class ChemicalGeneratorBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class ChemicalGeneratorBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { override fun newBlockEntity(p_153215_: BlockPos, p_153216_: BlockState): BlockEntity { return ChemicalGeneratorBlockEntity(p_153215_, p_153216_) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyCounterBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyCounterBlock.kt index 5f3d50d2b..818675b46 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyCounterBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyCounterBlock.kt @@ -4,6 +4,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap import net.minecraft.Util import net.minecraft.core.BlockPos import net.minecraft.core.Direction +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.context.BlockPlaceContext import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.Level @@ -26,7 +27,7 @@ import ru.dbotthepony.mc.otm.shapes.BlockShapes import java.util.concurrent.Callable import java.util.function.Supplier -class EnergyCounterBlock : MatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class EnergyCounterBlock(val color: DyeColor?) : MatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity { return EnergyCounterBlockEntity(blockPos, blockState) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyServoBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyServoBlock.kt index e95a95765..df08c8bfd 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyServoBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyServoBlock.kt @@ -1,6 +1,7 @@ package ru.dbotthepony.mc.otm.block.tech import net.minecraft.core.BlockPos +import net.minecraft.world.item.DyeColor import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.Level import net.minecraft.world.level.block.EntityBlock @@ -20,7 +21,7 @@ import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.shapes.BlockShapes -class EnergyServoBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class EnergyServoBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { override fun newBlockEntity(p_153215_: BlockPos, p_153216_: BlockState): BlockEntity { return EnergyServoBlockEntity(p_153215_, p_153216_) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/JEIPlugin.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/JEIPlugin.kt index c98c3ae30..d58aef0cb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/JEIPlugin.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/JEIPlugin.kt @@ -64,7 +64,7 @@ class JEIPlugin : IModPlugin { } override fun registerRecipeCatalysts(registration: IRecipeCatalystRegistration) { - registration.addRecipeCatalyst(ItemStack(MItems.CHEMICAL_GENERATOR), RecipeTypes.FUELING) + registration.addRecipeCatalyst(ItemStack(MItems.CHEMICAL_GENERATOR[null]!!), RecipeTypes.FUELING) registration.addRecipeCatalyst(ItemStack(MItems.POWERED_FURNACE[null]!!), RecipeTypes.SMELTING) registration.addRecipeCatalyst(ItemStack(MItems.ExopackUpgrades.SMELTING_UPGRADE), RecipeTypes.SMELTING) registration.addRecipeCatalyst(ItemStack(MItems.POWERED_BLAST_FURNACE[null]!!), RecipeTypes.BLASTING) 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 985ace44d..fea6ebb36 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt @@ -64,13 +64,13 @@ object MBlockEntities { 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) - 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 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) 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) - val ENERGY_SERVO by register(MNames.ENERGY_SERVO, ::EnergyServoBlockEntity, MBlocks::ENERGY_SERVO) + val ENERGY_SERVO by register(MNames.ENERGY_SERVO, ::EnergyServoBlockEntity, MBlocks.ENERGY_SERVO) 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) 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 baa5d5a73..f384631cf 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt @@ -97,15 +97,15 @@ object MBlocks { 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 ENERGY_COUNTER = registry.coloredWithBase(MNames.ENERGY_COUNTER, ::EnergyCounterBlock) + val CHEMICAL_GENERATOR = registry.coloredWithBase(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 ENERGY_SERVO = registry.coloredWithBase(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) 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 8c3681fec..8db343d04 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt @@ -77,8 +77,8 @@ object MItems { 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 ENERGY_COUNTER = register(MNames.ENERGY_COUNTER, MBlocks.ENERGY_COUNTER) + val CHEMICAL_GENERATOR = register(MNames.CHEMICAL_GENERATOR, MBlocks.CHEMICAL_GENERATOR) 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) @@ -99,7 +99,7 @@ object MItems { 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 ENERGY_SERVO = register(MNames.ENERGY_SERVO, MBlocks.ENERGY_SERVO) 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) } @@ -121,12 +121,12 @@ object MItems { machines.addAll(POWERED_BLAST_FURNACE.asSupplierArray()) machines.addAll(POWERED_SMOKER.asSupplierArray()) - machines.addAll(ANDROID_STATION.asSupplierArray().iterator()) - machines.addAll(ANDROID_CHARGER.asSupplierArray().iterator()) - machines.addAll(BATTERY_BANK.asSupplierArray().iterator()) - machines.add(::ENERGY_COUNTER) - machines.add(::CHEMICAL_GENERATOR) - machines.add(::ENERGY_SERVO) + machines.addAll(ANDROID_STATION.asSupplierArray()) + machines.addAll(ANDROID_CHARGER.asSupplierArray()) + machines.addAll(BATTERY_BANK.asSupplierArray()) + machines.addAll(ENERGY_COUNTER.asSupplierArray()) + machines.addAll(CHEMICAL_GENERATOR.asSupplierArray()) + machines.addAll(ENERGY_SERVO.asSupplierArray()) machines.add(::PAINTER) machines.addAll(COBBLESTONE_GENERATOR.asSupplierArray().iterator()) diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/black.png new file mode 100644 index 000000000..e02faebdb Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/blue.png new file mode 100644 index 000000000..061033bdf Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/brown.png new file mode 100644 index 000000000..85c2bbd9a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/cyan.png new file mode 100644 index 000000000..4096a5fad Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/gray.png new file mode 100644 index 000000000..1e57b5caa Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/green.png new file mode 100644 index 000000000..3434f4536 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/light_blue.png new file mode 100644 index 000000000..7edd8ec9b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/light_gray.png new file mode 100644 index 000000000..29cbfc793 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/lime.png new file mode 100644 index 000000000..f64f14244 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/magenta.png new file mode 100644 index 000000000..4fb0980a8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/orange.png new file mode 100644 index 000000000..35be64c44 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/pink.png new file mode 100644 index 000000000..df99c427a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/purple.png new file mode 100644 index 000000000..bcc33f27f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/red.png new file mode 100644 index 000000000..ce23d0f52 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/white.png new file mode 100644 index 000000000..d5bf85141 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/yellow.png new file mode 100644 index 000000000..b50a9fc8e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator_mask.png new file mode 100644 index 000000000..e722350b6 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/chemical_generator_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/black.png new file mode 100644 index 000000000..358300dd7 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/blue.png new file mode 100644 index 000000000..b7c893a27 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/brown.png new file mode 100644 index 000000000..7fb4497b8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/cyan.png new file mode 100644 index 000000000..361ac20d4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/gray.png new file mode 100644 index 000000000..c0ae4f6f5 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/green.png new file mode 100644 index 000000000..5e138d959 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/light_blue.png new file mode 100644 index 000000000..826b27502 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/light_gray.png new file mode 100644 index 000000000..320d8813d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/lime.png new file mode 100644 index 000000000..a2dd60cdf Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/magenta.png new file mode 100644 index 000000000..e96b1f083 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/orange.png new file mode 100644 index 000000000..752221d45 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/pink.png new file mode 100644 index 000000000..fa27e78ec Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/purple.png new file mode 100644 index 000000000..eebe83f7c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/red.png new file mode 100644 index 000000000..56f6a6d42 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/white.png new file mode 100644 index 000000000..ae41fb9e2 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/yellow.png new file mode 100644 index 000000000..788d302fb Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter_mask.png new file mode 100644 index 000000000..25941673e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_counter_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/black.png new file mode 100644 index 000000000..d8141cb2c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/blue.png new file mode 100644 index 000000000..30b95b2a2 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/brown.png new file mode 100644 index 000000000..dde430eda Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/cyan.png new file mode 100644 index 000000000..71d9cbd86 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/gray.png new file mode 100644 index 000000000..ca9825508 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/green.png new file mode 100644 index 000000000..5e60a36da Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/light_blue.png new file mode 100644 index 000000000..dd5336049 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/light_gray.png new file mode 100644 index 000000000..9aaeb815e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/lime.png new file mode 100644 index 000000000..864b48f58 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/magenta.png new file mode 100644 index 000000000..3be8506c4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/orange.png new file mode 100644 index 000000000..eae386ff0 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/pink.png new file mode 100644 index 000000000..6dbe8443d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/purple.png new file mode 100644 index 000000000..d0e289bc9 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/red.png new file mode 100644 index 000000000..f3523c6a9 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/white.png new file mode 100644 index 000000000..9ba4e7455 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/yellow.png new file mode 100644 index 000000000..6750d34e1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo_mask.png new file mode 100644 index 000000000..155963492 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/energy_servo_mask.png differ