From d6dc8689f819ec9ac10b5c37bc443903817bb5d4 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Wed, 3 Jan 2024 18:51:59 +0700 Subject: [PATCH] Essence storage coloring --- .../mc/otm/datagen/blocks/BlockModels.kt | 1 + .../mc/otm/datagen/blocks/BlockStates.kt | 2 +- .../mc/otm/datagen/items/ItemModels.kt | 9 ++++----- .../datagen/items/MatteryItemModelProvider.kt | 2 +- .../dbotthepony/mc/otm/datagen/lang/English.kt | 4 ++-- .../otm/datagen/lang/MatteryLanguageProvider.kt | 1 + .../dbotthepony/mc/otm/datagen/lang/Russian.kt | 4 ++-- .../mc/otm/datagen/loot/LootTablesData.kt | 2 +- .../otm/datagen/recipes/CraftingTableRecipes.kt | 2 +- .../mc/otm/datagen/recipes/PainterRecipes.kt | 2 ++ .../ru/dbotthepony/mc/otm/datagen/tags/Tags.kt | 2 +- .../mc/otm/block/tech/EssenceStorageBlock.kt | 5 ++++- .../mc/otm/registry/MBlockEntities.kt | 2 +- .../ru/dbotthepony/mc/otm/registry/MBlocks.kt | 2 +- .../ru/dbotthepony/mc/otm/registry/MItems.kt | 5 +++-- .../textures/block/essence_storage/black.png | Bin 0 -> 1331 bytes .../textures/block/essence_storage/blue.png | Bin 0 -> 1331 bytes .../textures/block/essence_storage/brown.png | Bin 0 -> 1331 bytes .../textures/block/essence_storage/cyan.png | Bin 0 -> 1331 bytes .../textures/block/essence_storage/gray.png | Bin 0 -> 1331 bytes .../textures/block/essence_storage/green.png | Bin 0 -> 1331 bytes .../block/essence_storage/light_blue.png | Bin 0 -> 1331 bytes .../block/essence_storage/light_gray.png | Bin 0 -> 1331 bytes .../textures/block/essence_storage/lime.png | Bin 0 -> 1331 bytes .../textures/block/essence_storage/magenta.png | Bin 0 -> 1331 bytes .../textures/block/essence_storage/orange.png | Bin 0 -> 1331 bytes .../textures/block/essence_storage/pink.png | Bin 0 -> 1331 bytes .../textures/block/essence_storage/purple.png | Bin 0 -> 1331 bytes .../textures/block/essence_storage/red.png | Bin 0 -> 1331 bytes .../textures/block/essence_storage/white.png | Bin 0 -> 1326 bytes .../textures/block/essence_storage/yellow.png | Bin 0 -> 1331 bytes .../textures/block/essence_storage_mask.png | Bin 0 -> 1695 bytes 32 files changed, 26 insertions(+), 19 deletions(-) create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/black.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/blue.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/brown.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/cyan.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/gray.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/green.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/light_blue.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/light_gray.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/lime.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/magenta.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/orange.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/pink.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/purple.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/red.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/white.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/yellow.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage_mask.png 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 315bc0f59..4ccc440f4 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 @@ -11,5 +11,6 @@ fun addBlockModels(provider: MatteryBlockModelProvider) { resourceCubeAll(MBlocks.TRITANIUM_INGOT_BLOCK) coloredMachine(MBlocks.COBBLESTONE_GENERATOR, listOf("0", "particle")) + coloredMachine(MBlocks.ESSENCE_STORAGE, 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 6aba587d5..38c4cafb9 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 @@ -107,7 +107,7 @@ fun addBlockStates(provider: MatteryBlockStateProvider) { provider.block(MBlocks.MATTER_RECONSTRUCTOR) provider.block(MBlocks.ENERGY_SERVO) provider.block(MBlocks.COBBLESTONE_GENERATOR.values) - provider.block(MBlocks.ESSENCE_STORAGE) + provider.block(MBlocks.ESSENCE_STORAGE.values) provider.exec { for (crate in MRegistry.CARGO_CRATES.allBlocks.values) { 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 6bb6f9915..0b3cc5702 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 @@ -159,12 +159,11 @@ fun addItemModels(provider: MatteryItemModelProvider) { provider.block(MItems.TRITANIUM_TRAPDOOR[null]!!, "tritanium_trapdoor_bottom") - for (color in DyeColor.values()) + for (color in DyeColor.entries) provider.block(MItems.TRITANIUM_TRAPDOOR[color]!!, "tritanium_trapdoor_${color.name.lowercase()}_bottom") - for (item in MRegistry.CARGO_CRATES.allItems.values) { + 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") @@ -172,7 +171,7 @@ fun addItemModels(provider: MatteryItemModelProvider) { provider.block(MItems.MATTER_CABLE, "matter_cable_core") provider.block(MItems.MATTER_DECOMPOSER, "matter_decomposer_working") provider.block(MItems.ENERGY_SERVO, "energy_servo") - provider.block(MItems.ESSENCE_STORAGE, "essence_storage") + provider.coloredWithBaseBlock(MItems.ESSENCE_STORAGE, "essence_storage") provider.block(MItems.MATTER_RECONSTRUCTOR, "matter_reconstructor") provider.block(MItems.POWERED_BLAST_FURNACE, "powered_blast_furnace_working") @@ -183,7 +182,7 @@ fun addItemModels(provider: MatteryItemModelProvider) { provider.block(MItems.TWIN_PLATE_PRESS, "twin_plate_press_idle") provider.block(MItems.STORAGE_POWER_SUPPLIER, "storage_power_supplier") provider.block(MItems.MATTER_RECYCLER, "matter_recycler_working") - provider.allColoredBlock(MItems.COBBLESTONE_GENERATOR, "cobblestone_generator") + provider.coloredWithBaseBlock(MItems.COBBLESTONE_GENERATOR, "cobblestone_generator") provider.block(MItems.STORAGE_BUS) provider.block(MItems.STORAGE_IMPORTER) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/MatteryItemModelProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/MatteryItemModelProvider.kt index e90c8448c..f53ef39e2 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/MatteryItemModelProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/MatteryItemModelProvider.kt @@ -31,7 +31,7 @@ class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event fun block(item: Item) = exec { withExistingParent(item.registryName!!.path, modLocation("block/${item.registryName!!.path}")) } fun block(item: Item, path: String) = exec { withExistingParent(item.registryName!!.path, modLocation("block/$path")) } - fun allColoredBlock(items: Map, path: String) { + fun coloredWithBaseBlock(items: Map, path: String) { block(items[DyeColor.BLACK]!!, path + "_black") block(items[DyeColor.BLUE]!!, path + "_blue") block(items[DyeColor.BROWN]!!, path + "_brown") 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 50e35e437..6fe4e1df8 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 @@ -426,8 +426,8 @@ private fun blocks(provider: MatteryLanguageProvider) { 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") - add(MBlocks.ESSENCE_STORAGE, "Essence Storage") - add(MBlocks.ESSENCE_STORAGE, "desc", "Allows to store and retrieve experience levels") + addBlock(MBlocks.ESSENCE_STORAGE.values, "Essence Storage") + addBlock(MBlocks.ESSENCE_STORAGE.values, "desc", "Allows to store and retrieve experience levels") add(MBlocks.MATTER_RECONSTRUCTOR, "Matter Reconstructor") add(MBlocks.MATTER_RECONSTRUCTOR, "desc", "Repairs tools using matter") add(MBlocks.DEV_CHEST, "Dev Chest") diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/MatteryLanguageProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/MatteryLanguageProvider.kt index 2718b807b..3c10bb57c 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/MatteryLanguageProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/MatteryLanguageProvider.kt @@ -83,6 +83,7 @@ class MatteryLanguageProvider(private val gen: DataGenerator) { fun add(key: Block, value: String) = slave.add(key, value) fun addBlock(key: Collection, value: String) = key.forEach { add(it, value) } fun add(key: Block, suffix: String, value: String) = slave.add("${key.descriptionId}.${suffix}", value) + fun addBlock(key: Collection, suffix: String, value: String) = key.forEach { add(it, suffix, value) } fun add(key: Item, value: String) = slave.add(key, value) fun addItem(key: Collection, value: String) = key.forEach { add(it, value) } fun add(key: Item, suffix: String, value: String) = slave.add("${key.descriptionId}.${suffix}", value) 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 69395a069..2a1c9bc6a 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 @@ -428,8 +428,8 @@ private fun blocks(provider: MatteryLanguageProvider) { add(MBlocks.BLACK_HOLE, "Локализированная сингулярная точка аномального искажения пространства-времени") addBlock(MBlocks.COBBLESTONE_GENERATOR.values, "Генератор булыжника") add(MBlocks.INFINITE_WATER_SOURCE, "Неиссякаемый источник воды") - add(MBlocks.ESSENCE_STORAGE, "Хранилище эссенции") - add(MBlocks.ESSENCE_STORAGE, "desc", "Позволяет хранить очки опыта") + addBlock(MBlocks.ESSENCE_STORAGE.values, "Хранилище эссенции") + addBlock(MBlocks.ESSENCE_STORAGE.values, "desc", "Позволяет хранить очки опыта") add(MBlocks.MATTER_RECONSTRUCTOR, "Материальный реконструктор") add(MBlocks.MATTER_RECONSTRUCTOR, "desc", "Чинит инструменты используя материю") add(MBlocks.DEV_CHEST, "Сундук разработчика") 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 f78f65f44..481aecb84 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 @@ -131,7 +131,7 @@ fun addLootTables(lootTables: LootTables) { } lootTables.tile(MBlocks.COBBLESTONE_GENERATOR.values) - lootTables.tile(MBlocks.ESSENCE_STORAGE) + lootTables.tile(MBlocks.ESSENCE_STORAGE.values) lootTables.tile(MBlocks.MATTER_RECONSTRUCTOR) lootTables.tile(MBlocks.FLUID_TANK) lootTables.tile(MBlocks.PAINTER) 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 c9e89a661..275872420 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 @@ -391,7 +391,7 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) { .unlockedBy(MItemTags.TRITANIUM_NUGGETS) .save(consumer, modLocation("ingot_from_nuggets")) - MatteryRecipe(MItems.ESSENCE_STORAGE, category = machinesCategory) + MatteryRecipe(MItems.ESSENCE_STORAGE[null]!!, category = machinesCategory) .row(MItems.MATTER_CAPACITOR_PARTS, Items.ENDER_EYE, MItemTags.ADVANCED_CIRCUIT) .row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES) .row(MItemTags.GOLD_WIRES, MItemTags.HARDENED_GLASS, MItemTags.HARDENED_GLASS) 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 4294b3830..28ef24561 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 @@ -272,6 +272,7 @@ fun addPainterRecipes(consumer: RecipeOutput) { generate(consumer, MItems.TRITANIUM_TRAPDOOR[null]!!, MItems.TRITANIUM_TRAPDOOR) generate(consumer, MItems.COBBLESTONE_GENERATOR[null]!!, MItems.COBBLESTONE_GENERATOR) + generate(consumer, MItems.ESSENCE_STORAGE[null]!!, MItems.ESSENCE_STORAGE) generate(consumer, MRegistry.VENT.item, MRegistry.VENT.items) generate(consumer, MRegistry.VENT_ALTERNATIVE.item, MRegistry.VENT_ALTERNATIVE.items) @@ -290,5 +291,6 @@ fun addPainterRecipes(consumer: RecipeOutput) { for (color in DyeColor.entries) { consumer.accept(PainterArmorDyeRecipe(mapOf(color to 1)).toFinished(modLocation("painter/armor_dye_" + color.getName().lowercase()))) } + consumer.accept(PainterArmorDyeRecipe(mapOf(null to 15)).toFinished(modLocation("painter/armor_clear_dye"))) } 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 e0e173231..3329b811a 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 @@ -219,7 +219,7 @@ fun addTags(tagsProvider: TagsProvider) { MBlocks.ENGINE, MBlocks.HOLO_SIGN, *MBlocks.COBBLESTONE_GENERATOR.values.toTypedArray(), - MBlocks.ESSENCE_STORAGE, + *MBlocks.ESSENCE_STORAGE.values.toTypedArray(), MBlocks.MATTER_RECONSTRUCTOR, MBlocks.FLUID_TANK, MBlocks.ANDROID_CHARGER, diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EssenceStorageBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EssenceStorageBlock.kt index 41eb4826a..84339f5a0 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EssenceStorageBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EssenceStorageBlock.kt @@ -4,6 +4,7 @@ import net.minecraft.core.BlockPos import net.minecraft.world.InteractionHand import net.minecraft.world.InteractionResult import net.minecraft.world.entity.player.Player +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 @@ -11,6 +12,8 @@ import net.minecraft.world.level.block.entity.BlockEntity import net.minecraft.world.level.block.entity.BlockEntityTicker import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.material.MapColor +import net.minecraft.world.level.material.PushReaction import net.minecraft.world.phys.BlockHitResult import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape @@ -21,7 +24,7 @@ import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.registry.MItems import ru.dbotthepony.mc.otm.shapes.BlockShapes -class EssenceStorageBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class EssenceStorageBlock(val color: DyeColor?) : RotatableMatteryBlock(Properties.of().mapColor(color?.mapColor ?: MapColor.METAL).pushReaction(PushReaction.BLOCK).requiresCorrectToolForDrops().destroyTime(1.5f).explosionResistance(60.0f)), EntityBlock { override fun newBlockEntity(pPos: BlockPos, pState: BlockState): BlockEntity { return EssenceStorageBlockEntity(pPos, pState) } 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 f345eb9ca..fecb1ecc9 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt @@ -68,7 +68,7 @@ object MBlockEntities { 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) + 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) val FLUID_TANK by register(MNames.FLUID_TANK, ::FluidTankBlockEntity, MBlocks::FLUID_TANK) val ANDROID_CHARGER by register(MNames.ANDROID_CHARGER, ::AndroidChargerBlockEntity, MBlocks::ANDROID_CHARGER) 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 634a71f79..0171399dd 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt @@ -115,7 +115,7 @@ object MBlocks { 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: EssenceStorageBlock by registry.register(MNames.ESSENCE_STORAGE) { EssenceStorageBlock() } + val ESSENCE_STORAGE = registry.coloredWithBase(MNames.ESSENCE_STORAGE) { color, _ -> EssenceStorageBlock(color) } val MATTER_RECONSTRUCTOR: MatterReconstructorBlock by registry.register(MNames.MATTER_RECONSTRUCTOR) { MatterReconstructorBlock() } val PAINTER: PainterBlock by registry.register(MNames.PAINTER) { PainterBlock() } val MATTER_ENTANGLER: MatterEntanglerBlock by registry.register(MNames.MATTER_ENTANGLER) { MatterEntanglerBlock() } 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 bab4bcba9..7968c5b68 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt @@ -135,8 +135,8 @@ object MItems { val INFINITE_WATER_SOURCE: BlockItem by registry.register(MNames.INFINITE_WATER_SOURCE) { BlockItem(MBlocks.INFINITE_WATER_SOURCE, DEFAULT_PROPERTIES) } - val ESSENCE_STORAGE: BlockItem by registry.register(MNames.ESSENCE_STORAGE) { - object : BlockItem(MBlocks.ESSENCE_STORAGE, DEFAULT_PROPERTIES) { + val ESSENCE_STORAGE: Map = registry.coloredWithBase(MNames.ESSENCE_STORAGE) { color, _ -> + object : BlockItem(MBlocks.ESSENCE_STORAGE[color]!!, DEFAULT_PROPERTIES) { override fun appendHoverText(p_40572_: ItemStack, p_40573_: Level?, p_40574_: MutableList, p_40575_: TooltipFlag) { super.appendHoverText(p_40572_, p_40573_, p_40574_, p_40575_) p_40574_.add(TranslatableComponent("$descriptionId.desc").withStyle(ChatFormatting.GRAY)) @@ -185,6 +185,7 @@ object MItems { machines.add(::PAINTER) machines.addAll(COBBLESTONE_GENERATOR.asSupplierArray().iterator()) + machines.addAll(ESSENCE_STORAGE.asSupplierArray().iterator()) machines.add(::MATTER_DECOMPOSER) machines.add(::MATTER_CAPACITOR_BANK) diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/black.png new file mode 100644 index 0000000000000000000000000000000000000000..0c76753ceec6ee199d190e44c99870d17ac3b2e0 GIT binary patch literal 1331 zcmZ{idrZ?;6vt0nI)qAj7ZsImXu+Z62ec@~newPoUa7TWk-3$Zf>;DvRD4mTiYUqy z6tt~?7=h_Xp}3X_3>7ChBN!w&@G+4o5k!kY(J5yoOSbHfCFh=Rz9;9CZ|==45Js=E zv7TcM05*cKP?1@g=EIvoG51K}0gYKKHU&im0n``KKE_kco|zaXiUQcl0#K>|KA1r~ z5)if{oJ2@OIEtV~IE_$_AVCl!Ee~N0TBRch&^ZE~vJi|2?Fg3;G7ypw4k0unv?0VI z=n-xpbRa|`EfVRS2t53J?ex{ihUwvqHAp^?C=4;b5lJD6UIV;m_cu#@sRQ?E-diw!5R&p+~hZ)jQ)ZJ6w?`3bv}e z*KNg#PzgF4jVWj9^vS`V>RGB;uk|y_h&JVfL&a_G@NcEDgfGXsj|}OxWTCs9w37@? zHc3H`l7rIU%%|D$I~)CI)QZ9e$&XD=q=XVq$y{OKKFYbCd!dVXKD`yOwd{Y5%0+h442Bhm1BdaXgSO_YWJv`LVI`QLaeVrG8N~zcmCqjahm6>vM`Hf>+f7{ zc*;-(`1K`}#u{mp)zrEv+cy84CzXkFQWm=g4m8-?t*X+by?mcZ;ticj8+W8T$*+j* z=(_bm_0kj<73tX1*M5BYLCxVyj6$yf-j?p#4(%5j`PJz8mPC(3hn2paB+Be)QLfGG zrqb*oXHzO8gb!PkO5;SyT1%3h{er{0m(C>J9?_BpP4S&Brt8P+N9QVMfW^-_tRvo2 z^bV%!?0EAvSv8w7^4w7F_(k&d@ww@vL{<9z*>DNwIgs_HnD=`|z?jEfebsYo;l#rQ0qNT2L(#>*gr`-&b;73TqQ^sh z#egY)WFGa<%Ih_s#(PKd-m2diH;gRe$=TzZUA8`Mc`W<0wDnc3&*;Q8Q+`o-%%9~U zxenFVy87&1BVBDORqw#G6Zf2?L|M$u%ufU7-FBC=OqJxxRKMY=S&uKV`dSnYMb6BO z;=5h$hH?w7?i<@aXKDXD8`tVUJ)3J=9Qz@H z+Q;7ZKJ)xQ$@hrz89MNSZT{^G6?};zDPEDxP0UI*3-}Vg>?MScxx_yHTw=Ps2!cxx zJB!O-{s)k4O-kLE^Zx+tj>l><;Q3F2B2|_wSH#OQ{$>2cK0aJF!SyBn4&id0mYNw5 M@S{WPf~EWa0y`@<6aWAK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..90cc6fa92a3b12c84c07db7b33cf066fd788d08e GIT binary patch literal 1331 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 JSmQ6-_ZOy3IEVlM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b70f47e38cb9535bc9798eda3620375c88fba7 GIT binary patch literal 1331 zcmZ{idrZ?;6vs~s9YUo*f#Q62QwxfcU!g@Q&J+Ztyi#k$B6BM*1+fUUi1?yP6+x6K zC}>*?Vg#lmKyfV-7%EP1MleWl;A0|FB3La3MW>vVEZMR@mYjRO`JS9lzPUFyUl_T@ z-fpHH0N4vcf?7z`GRm64IbICMNGC&zh*lAf9+ z7K^1)DI%Wba(~c#M6uoK}b!exYNgyRT%5WYhwML2^XN61IWMyNvA zjj$DAJ3`+z z=n-xpbRdKyH5_T32z>lv{nXXShNW|(9}^>7ijGu;8mU4ozhamdZ1CDd>G3CA{d<4MNSMqZrJtM!)H75wUhAiq5pBwGdiibM@NcEjgg4i&j|{0bWZ`@{X%`uq z>=ObWB?hFvnM-vH?rij-QpyV(BtJH}km5?XC9{Qv`>oFP+zVR7XZMyz-?D0!d|fB0 z?jnUY9r2pDz;LU`U2PgXMa^cmQMyOfR@8S#E<}49B$F}D`{ph=9iw^9Dhsh*zVXiG zhNldbpHE+0X|$0#QAMepbZGO{F1kO| zmk*fpM&?isufAUWX{>i7_pSPkanr~mzMM0*)ouIZmdCO`OIu&nut&$Qne&QtQGe=I z<gqFljWo5nRJ{{ZPTX^m5@k_0(?1QIpSMTHGFOl%l6{6JXFR^d>T6NZi(Hv$ z#do{r8+6v%x^Eo%T&4YU>}OT^>p47!;^+@yBrmV6xy)8g`@Wg7ptEN>FZVxrW$ISX zX*a#?edh7OD$hNFJ#_E|$MV}3DuN}7gjhu)FFqsDBH&GUbCwcpONrUOJYuRm34%uu zyNY!${{zUjCnRsq{(pda$9=5@@c1V|kt|D;D`I77|1v&eHk-#Gc;3X{Av~VTG7AHO M;K-obK*+0x5pss-SF@|dP%($S4Fo0bw0Hq4xy?LY@ z2FN4;o=XAvB>*mInxEIM1Rya*p<;n~fyd*yySpJ%(k&)pWusSE$gJ zi=|R2BA(;%e$P%Lr8nClK}^e2-9!a27$1kcW_kP>HY` zVGF`GglL2mgzX3?5vmcI5p)Pzgj$45ghT{B`UufJAK?;0BZ3m)3PK3l2ccsy(k~#y zBJ4mog%F2u3_*=>2B8!|f*?X#4#GOLN<|Q&a|k+RAQ%za5NZ(85aJOIBQznjB19qR z5pE!~BZML?6zLrZe)z@u>8p_q)596-kepZ(H2vHpMMU^I@OyecaoWU&tO=aCU%xia zY%CSRFoESTi9&O8ifCiH0+2g}f&Sv4o5zZ1-}Mo8t?GtTjAadcog0p8b05W=yqtg(zlT!(%YMr>(jfa zG<(R}oXl7yfUQcUaiVCwCCScy(UCpNXOeD@Xi0;nm<|`y^%HfYbCol|;+HJeQT7zQ zooPBZ-gHe?$)yZ=W!kNJu)(VcTFOW1gI^sPc_;F=O@a*-q-I^pZ-Z|oEh}yxFftq3 zd_PvWIS|!(mwu=w-%?b)!`Q1?Jm$gba!Dr^3{p-G>noIIKAIXpG%aSf}tS>aIN%uFl1 z+quwCYN6GAYuoEA?VD#ar_x8y<=YlUy$>O=*;{g$Et9pCqa=cOOPvKWNH60o?;G%&n5UC#NQ!&zSD9u142P~ JU~Pc(z+c##HwXX# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/green.png new file mode 100644 index 0000000000000000000000000000000000000000..103cac4e848e47cca4ad181b8c510acd74b1640c GIT binary patch literal 1331 zcmZ{idrXsO6vod-=@2S+D9md&wcya^16q{gOhKxYTPjv;Wp3rBAQrh46>n5Q5k;AT zg0>Y9BQPB)6i1oBP;r7YfIkOMs2(alprOQklYf{$Ky3lzV>F%etk|H4Fo2zG096jadupT_ z2FM@*p34FFB>*ldnx9uM10Y!9P>GOQ;PH4K9v)04lg(zQrKL#}v$C?Xg5|D4nTtds zk;~5&LK5UwIzMyNtKj<6fydxTS|^UQ^RR%(2O`|&!panP)3BW0m0Mz8>dW6$g05U`}C`0 zDPy4&g$XT&2^z!QDWZ+#24L1H3iOu*-8@>v_^yw%YgN~uWG=4f>)h#lXFtDZ=Wl7k zt47QF<7}13zP{gr4N~KYqQ20Ek%DE0EF)*Th#QbG&r$2powF~IlX90EtjvxGuq?mV zWyuT45p~oX63*1<;{)8)t~su+^wUeoR@Jye*=_#t@5M6Gi)Ynq2FcZC;(6)BPBUn< zj`M#M@1Oj74#Q5^QSZ&5m*v+}`1uhhL_LRwP(VC>+=%iJh zL~!E~&cp?#OL_K6h`<{7&r$b9MgJD2O8 zFmrspdt-`a2F64sy=Kz3)hBbHJa$IHqM3gEb@q0vDl|zi-lYj^AGP{GM%_Rq9q1R(H$

&I(HXQ`%v`7fF5Bb-T_ zc9!YvSkpB{C6_kjlVP{w!8)HJXel4H8T{(-$UCvGZ33*TAewbazYV^Xwk*B9-@vMG zTmG@a-GQvmyZA#*L(^E<)1GyE8fqU%3psV$lNHUM*Y|0=b{PgfQ%7xBaPURs(DJ^# zxi2G2CybA}_uTk%TW82%_8%#}Mz_2Aif2~h@rUz$leJBU!V7;5PAY@zq;?+iuY*)tuN`vzVbyVSGW zjBk3Ly1%F8x`lZT9eB>Ae)|HYP^yfJR>t#V)8Z)sFVc&0byt)>9?e-f05iuiP8v?AqS##`d)$>)-MFY@mYKHq5x#ehf{ K9#|6~-~Sijwl=c> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/light_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..cbf458e94bf864cbc671b20961c3fc1242777b6d GIT binary patch literal 1331 zcmZ{idrZ?;6vs~s9YUqNi}Tq{EjYCK6_?XC)2v)(M_~NW&$(H@GMXC#D*BLQ|W0hIXw@2w-{ zAV4+&@LUGKD+BP%(EPk=DFBHfijWAb3tTSO$H#|Gr!$$%tgNg+V_$A=E=PBjP#Gl> ziA*L##4}v(kJ^ZQgtG{h2n7gYq(mcZN4SD;385O{7{V@u?-5E7P9w+>3K4P;st|S} zY(m(A5Q~tCuodArLJdL_f*wJOP>Ya_umORGfkJdCLb!m?fS^RUj1Z14q39Ndv~vjY z2-^@&AS56hK~N){LeL>d5kyGMLs*UW=?Fsf2uJrU1T#V_!bOA(ghYgc2#p9W2r&o- zgzE@x2oXq)Kw3KjAHP^Lc{Q?WayVr*l2`0*|7d+9l0qD{8u(A|ZJ0Fi;VVO??lr7R zuo^psFj8PQNV1`NyNg>HUI63{VMvf9^u`et^}AlexkYU}L0@F#>AfjDkHElZ=Wc4E zs)sB35}g!BzrNRuCaLAPsyD(kRJ_!jYhi5@a)Ptxx@ldz^7p2&GVXA~6nWxc`-;1r z_T2D%VY|_se7e?<6zr{@mOt&4VQLxCq8xKAzr`E;y)=gK`!)hDq+r#H$d`;4cShqd17oLjMJY$xH+Adjl`%?WA zdVYXkPkd>NnL1uYshx0Y@y~f&kuW`Z;f%n(dKc%Fm73HS?=ngJfs?7DZZvoKWr;IQ zzb>dwmh72NI{M_5pFn;kEf z8)M|mXyetiDvr&7f41}T`)mDG&|EQ0>;LM|&^u9pQ!=crBsJ+%f9roMZC-L~pP6B7 zUG}lk+m)y(yzoPvm5?1}T^t7hWjlJ5=o#w}%sbkmAKky=YU|DbB zoR`tMam&N5-Pixz+7aHL_eVy6#p{lt@|lBZ?7_T%bZz6osFGj9Qp@2Q;aGgZ>w%%X zZ=_&o7UkfIYt^4dyNB}Ls9&4c4=v!!Iis6Aw>)Zkl=h*t`DG1zc4$rA1=6yJc#oCm|Xx6munVuGM=5+g|-p4O3o$6Vw zmN(r`z2Dmuctx@Y_CM!XfBSreK&nWLQzY>cvXZOwn3 KDx@}8w(l<*lsfbP literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/light_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..c93546b8705f1f2bd55edaa35bc9833259d9b2d5 GIT binary patch literal 1331 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 Lhx%3d%J%;Sez7@Z literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/pink.png new file mode 100644 index 0000000000000000000000000000000000000000..1e0559b7f9df65b2763b7dfe8b1e7edbc20345b0 GIT binary patch literal 1331 zcmZ{idrZ?;6vt0nI)us_iu2h`EjYCK0WC^#hF6vHN~sl#%&oi>#3In5;)^O(L{L;v z(6$!D2&f~4;#wv!RGi?9V36Rz$3&(?5G@A97iT3)w(O53=bmrAC+CxI?#;~?M6R;2 zo@osLHvEuap;;N`<3EjJ?%{&{YO`2u42TE-s4Jp0kDG!pilyQFpm^N z09gdU3kd+X48S#A{d3fE01`tGF5;ONI2?|LhX?do zi6jyUBA(%Je$<335zZo1BIF?mks6J#9pNg%WrS*kV+gwtjv|yIoJNo#JOVJpIMgc^iq1Ra6~p%x(vVFLme{rKomh;R|15kY})1tAO_LeMD`ZOtY2)!_f^{)Q*DA4{M;>d zWc5fzf1;iI$hY@f&>$W?UeXtC7%p0F%o$~E$!PYQHb%}~yGt)E^-v?|6O%WrdselLw7yg1gqWJs$a3+Bs6JIK&z zlNj(QDIo35T$(+vqrsa-EibGW|J3MAiZ9`m%oY^xrJU`)7re;dv!^`f7Ntr2olacc zNeXQ&U`?E-yH@0`9341G%VxAvyGB$L+Pi}DF+NjmcMwKq?8Kz-;Ez0kwge{)w&yXI@P>}up(OQPGc-Adm^5@xhFE7oLm zQE3j4y)lIz#DmQWg>k%OjU~z6VZotYOQ(}=4{JyRrnnAQ)AeI@BeNCLz~Yx|W&vx` zww+-*GuCuXTE(Ue`efM$Jy`2g0xcCIwgcZB8h$VEwM&Mzm851}>Td(@#4XEi?=vzQ z+E#q3bay0b@-JSfH8hQtKkHe$+fesFT+FK9mL_ffvY}7YwbS_I3svm;g$G_n53cCT zpZ6+SJ2CpGd-sh$w|0gNv7X`Fx2iYB^}~z&W$dv{u3H{AKbC$hZFyDWIWm6DlvkvU{-_Pg zajde|)n)YbnfnJyo?C?H;QkkE^KV}$=ZWQsaq=W?LS~X#z>Dx=FCje5CGzy)5>w?t5L|-T zQLKIWA3(Y#F=a#c{{yr;Zc%2y{htJRiZn?kkCUeV%Xo`CJ-KXx>qYz>!sR+IH8a5H LMF!UfO7{H)Z7Mql literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/purple.png new file mode 100644 index 0000000000000000000000000000000000000000..d278320e77f79e44a3753ecfcda9e5178fba4f52 GIT binary patch literal 1331 zcmZ{idrZ?;6vs~~9YW;|#rdpL3yL;BphYRp6r@UdrPhi?<}6P^Eb=HSzNk_~1Vse} zZEHb{z;vWgT+0N8iW8g>3=$mpn8=g}R*OOL#aYRcE&F51x#yej$@%1)dvo&z5vy%& zrrQ93Ek8I&XjZ!UaHo*XJxp*=WfsfL0pS4vbw$+AF%+|>#{~<+0d_F}6Muv=0larH^IQP`1IRzq- zNFtFS;yE_^M|GG2;XFbmLLPz;DUk>}5w0OzL8wMJfv^YRI6^7HS%gf4e1vR-Dumq# zTM)J(L?fgiY)3eWP=nBnphZw4)FNadBqDIopO21(2$v8V5#$J05kk>17@b4V?gBzA z!VZK}2yqBU5tImL5Htv41OZZW5!Rx0Dgqx}L(wGz!GO?)a2X*DAs*o{LK8wOLKK1y z;U+>mLKsrR(5?f4i*wgaUd=*3Ih?Wb5=WbEA}Td)9$fCWVymX>x%nb z*6dIPzoWsBbhcKP5a^+trkM6dH?@ptm5(`<-{B1XUK&Msvu%1UAhpIqFfWs|%K{p0 z;{zTi1f;&5O?BXPH26>{<%RX)pBi0Au_f%1nS#Ro#n}=J-XLTSe|FYM$vB5r!p;u-$^^^Oj!D^)44KBSYlgQrtQo$XvQuZkS( zv>O8IBuQ=x(y?c6e0Z6MR7Wn;3O)U}Tf1u7)!(QxuSLwZBD$U0t#xfAVS0PBd|i4M zh3W{|o0DlPd9YP3H;k36vm!Y-&Ofqe=~U94VKr&M6w~2mx^bdzWTt!ySpJgDC}2+5 zwbM=KMw_lnt61bg-z`~7c=X3q)MB=Zs=2Y?KV99N*TRz!J$`?gDd*- z=e&;8j2j6%|Mmqko>&$iBTL}KWh9sdya{jC62i+|A}?PKFG19bu86T0C7l%b~yotXMMdns+3L*%!sCc7F6+x6K zC}>*&F#^*Opg76|hFT{$BN!w&@G_Ap5v+ni(J5yiS+Zq+EIIFa@|>Jsp1g0~Tygkn zYpa=70AMW&3Y1XFqK@A*GpdJ*4{9kf-|Qde4^UUY_!v#6JS#Rx5(cn~4WLp3e4s|E zA%F}L;DsDOPy*nRs{LurasYxQ4wVY21wNne;o-q#GTCf)dV0Ec;k>M@tUQ*h%5}C> zDwWISh+X2 zOBoBLC`@QEM3^z$og_w<8vw0S6zDGvx_PvS@ogVz*QRMW$z0MPsCB0coPB+tpTDII zuNo=ukF!-C`|5rxHp)yViuytuhYOY)vP_&EB3?kod`F!_w|ajfC-p8bSeY#euq?mV zWyudwi#i$%31@2b@d56d8R{9Y_0vnpHr2R8*=@nlZ^e|FP~z(s!Cp0dbWX3es%Yh_iP zL~zp)&cp?#OL_Jx)4(Z4CaaC!HKH+NygPCs(z8)E8RfXob@Aya?Q?cXkomF=cP`gI zWvYF=dSi+s4UCCOdd;M5n|J1u^4OUPi)Z=v*W25zuFxjEe4j@64W3FGbF^_%T#?$@ z)Nb&vlP9>SiDOS+dkGbXw0W19`5r!gTf3^;b@Q}}tKqH|WVb`RrQS$L(%M^8>(aXD z4137joXA`$gsm!-VZ3Oa1z~5uAaBpo>BQ|}9WgK(-QhBN{dnETY}GU{|2dO=gfnT= z&Kf;C)_g6wl4myPong1~!Ful^Xe}SH8Tc}9_`TT2HUZXG5G}PyzYe^UwJy7Tz`$xS zuJ~Bt?m$-OUi`kMv3acQS!A3J$tl5c4C+<1P$&!ehX`lMf&)rkX9xbO$Bzg@^&Uk!@-P@vcC~#(_ z7T)cg-&ks{tNq5d*IC{-$9h(!ubwBcEsXpSLU1@+vRSQKG?(dFKAXEXOU3J9zK~kNWKkl|q>^E?OBch)s{D1UyMk-V%~am6Yo(Ag9WMBn2e7 ztFZLte}Lp|afzEU{~uu7aa%(H?*Akx6O-c=%IM_Oe;F?+mn-0r0#EYq5P`sHDaC+D L7#>&?AV2UIj2<_x literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/white.png new file mode 100644 index 0000000000000000000000000000000000000000..79a8ae9ec113040be880ab873945fbec4bbd0a74 GIT binary patch literal 1326 zcmZ{idrXsO6vj`13RpowXw`^TgMb$62hyR%$;DPE6hfhRnN?bDa<@Q5E>&7DC__*{ z9bOP|UZ>WIG!-VUfR%z15uFN%E=-AY(HWt^5!l&BmTcJ{OU`?qJSXRuC-0lLBr+n{ zZt9$=0AMEw;YE?kBu{{iCE10M`%aN!wKXt25a7lk+PI8LdS-k`R5(C^8-Qvrz!*7F zy#?4#0KAg|aH|0r@>5NsRR9#1NTHZdE^s&;7K=rv)7{+Mva_=hv8bqMaB#4vr$;On zOQq7&9L}{G;a-HZ2;U;?M~Fh|I)prg76cu_C4>qDCBk8ZZxBu(7&?UD%uuvHhY*Lb z1K}t_JVF`5NrdAFwFny!B9XQSAsTHn5d`QQhECZCw-D|kTt$#0Bp@6>xQ$>y*obfw z!H8f&5F$;8_8kZTxFBZoY8Lv*p-nVew6;*j$p@k+q9URpVCZ?$q=^d)=1q|$-P%bS zYlR@3Z~c~HN%L@uy32G2uy`Qg1&Tx3%Z|`u9}_bSCmRO(9%-n)+zt8|sd(W+me8vA zol@1QoW@h0d4=)Sl1jFZ#g?M`@uLq1-mpv5+7#!wxP<<6X}>eOSY44KJ4gi0+T_-n z>nyt5XU}LO!kdIP7iQ8Hlupbo4fl}VFgqHaa34Ruu9Z5c&d?-6PALaA?W0`?o)+M% zUTEs~G-bS$sre$^Kx>fgCAH@h2|E!sax8h2PA_?YqWH9joyWx!DNB|ZN{!U7sRh*T z&ds?kzB;Xe`_#1gg?zzutDKhPu?OnTfw)=aKQ29j_x9FW2M^JQI;|XSAvi6R<(C;) zee)>2skJr3&`iHI<`2(?_HA|fNqaA=F2{udSw5+uzjYm=S@JR)*Vf3-WXEdi&gwBct z#^!Uq!gZXVzw@81FV|~^M_fBJ!>{JZ3;JdmU#G7;DvRD4mTiYUqy z6tt}cF#^+(LUAn<7%D0_BN!w&P?^Y-2v&hZ_dxn%^lFq?X2_^ zi9`~K1QE}0I6rA3ln7@LDiQJ#qLC7VupQwF!X<=igkuQ15Pm=?ML3NhLnuJVL8wC5 ziLeP_3ql-18p2kD;|Mhf%?LUK4MHtKHo^u3E(QwFxe(z3LL-6#;W9!vI)|cb7&@Fo zNI=+zZ~`F_;Ru2X;S_=vL5v_oY97LBv`t44pnEvFWg!?5+7K=xWFRCV97JeBXhn!c z&?8(&Xh(=ZY6LoTAn@>uHB(o!GE5DptwyU4vKy}~Z$y$uN390l)B78yOhWj|km-B% zs}e27MlOit+YFP)RByNFHo6ypRi_{%NECYWND1}(KEkP0)o_BgxPhzlrf}T@1D~C{ zrH-l|t>{m3lpp>2ehV7JrsE}j5r&bXWyV|+bDMx2oITG~Z`BOtj92>UWkjoD+@<_Bclh_xSi+ZM*J}moHCDoTGSUt! zXtYlXdXyZL{(278iQm!SN2Qb(){B2`bR#8{a7tzi3-^-GcHawG$Yb@C$KE10iNDo} zt2;?yjfa^N=V=}lc`HnVC#gB~R!Y~XicEcb_-Sl#Gs#Wb+~HHUGS zIqA?&H=h}6x+<+=lZX7Xot8gX>t6yb6{8M=UmY5GCk${*fwh&SW?kBEgKxzxOK@gLevyo__5Z|G*moeH2)1&U)*Z#n}?nVoR_;rxJfP1C`s;u~RU<#3I#FS_9M zP+#6}&L8ol99(g&`qNm?NZuROYvcNng*+L1Y?H^9f#w0}htigpHLTI`tLFS7ZOjMl z@?4iHJ6&CNkI_M8E>&&EwBz^OBt%)v&CE~z=jQIxGRzfL6RCc~lQRY`GJ2ckE=BJ2 zjN-eU^9)*RjqW?gUUx~Kr~Ry|Ks}r5SRDI4oWx{q%A>ca+xEXIN|1y3e7K_U!xW2^SAzZH85(@(Y LepEs~$J0CA literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..decef23af87daa0a200e105378846a30e6aba9ab GIT binary patch literal 1695 zcmV;Q24MM#P)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)2z=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;wH)0002_L%V+f000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j~F<3n&3U8N|#000f&!L_t(&-o;o?OFB;&|BNn} z5axjGLBSBbCY1=i0tpH_`4S2{<~8zQhi-M~VDtjI6y1X8yg<`5WV2aNN>MJC0RYu%)wZTq zs{sJEwzf>Ca|j_s(RCe^Qfn|8jRF8DrQqjuT?YURheO*u0H~^pWHMR&Ahe_oIrY(k4DrFJxcDn#z`(Llu&7-3uqG_6KPrY6@)9Ex(nA(}-UXaaZ zEln`+#JkVPin#$}f7o-h}EI@o5?e&8h(wa=hx3 z$)q)A7>26`$nNg$gw4GAz;HOk{{FsnK9NYE-|u64d)qMra=9E)f=W#(wL?L9-?xR9IQIJb z>Ug-@oW;QN^Rs0F@n)3035LTVG)=QiP%IYl@bF+U&40asn5Jpsk3a|^N~hDo$Hxaz zRTbrO*><0^3uSe6b%Mztd!$UX+immd>4~_d)1952iNpNtF$`m3T|6E~I-UMM70ZaY z5%RMq9*?_c!fEN$&$w*PNdp!G^Tt#SEE?%_n%EvBe+h-zM`kCP4S994aoLzSXBY4^v%QMF zI3fGWq!U#d4u>%sjr=j-RJl+}aeaMleZ9aBajQC>MTOyTIMAasnM`6Z7|iyfm6^Z` zVzC$qAsCHDe^VQNeSKM``jgs__mjCXAjW$n5|OT(3j>r=EG;eB#(sW&7S|t;<$NbB z)CXd**o0|*je+ImWlw9u;qdQOwn6j2Tul%Pg|M=+vY6T)06srIF&GR2?TthtvorAh p{q5WHe>Dtw!l6(It6r>002ovPDHLkV1mI&Df0jT literal 0 HcmV?d00001