From b2c2bfa536e6be83bb2615f7f642a52e69e590a5 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Wed, 3 Jan 2024 19:56:50 +0700 Subject: [PATCH] Plate press coloring --- .../advancements/MachineAdvancementsData.kt | 12 +++-- .../mc/otm/datagen/blocks/BlockModels.kt | 3 ++ .../mc/otm/datagen/blocks/BlockStates.kt | 4 +- .../mc/otm/datagen/items/ItemModels.kt | 4 +- .../datagen/items/MatteryItemModelProvider.kt | 28 +++++------ .../mc/otm/datagen/lang/English.kt | 4 +- .../datagen/lang/MatteryLanguageProvider.kt | 46 ------------------ .../mc/otm/datagen/lang/Russian.kt | 4 +- .../mc/otm/datagen/loot/LootTablesData.kt | 4 +- .../datagen/models/MatteryModelProvider.kt | 14 ++++++ .../datagen/recipes/CraftingTableRecipes.kt | 22 +++++---- .../mc/otm/datagen/recipes/MatteryRecipe.kt | 5 ++ .../mc/otm/datagen/recipes/PainterRecipes.kt | 2 + .../dbotthepony/mc/otm/datagen/tags/Tags.kt | 4 +- .../mc/otm/block/tech/PlatePressBlock.kt | 5 +- .../mc/otm/compat/jei/JEIPlugin.kt | 3 +- .../compat/jei/PlatePressRecipeCategory.kt | 4 +- .../mc/otm/recipe/PlatePressRecipe.kt | 2 +- .../mc/otm/registry/MBlockEntities.kt | 4 +- .../ru/dbotthepony/mc/otm/registry/MBlocks.kt | 4 +- .../ru/dbotthepony/mc/otm/registry/MItems.kt | 8 +-- .../objects/ColoredDecorativeBlock.kt | 2 +- .../textures/block/plate_press/black.png | Bin 0 -> 744 bytes .../textures/block/plate_press/blue.png | Bin 0 -> 744 bytes .../textures/block/plate_press/brown.png | Bin 0 -> 744 bytes .../textures/block/plate_press/cyan.png | Bin 0 -> 744 bytes .../textures/block/plate_press/gray.png | Bin 0 -> 744 bytes .../textures/block/plate_press/green.png | Bin 0 -> 744 bytes .../textures/block/plate_press/light_blue.png | Bin 0 -> 744 bytes .../textures/block/plate_press/light_gray.png | Bin 0 -> 744 bytes .../textures/block/plate_press/lime.png | Bin 0 -> 744 bytes .../textures/block/plate_press/magenta.png | Bin 0 -> 744 bytes .../textures/block/plate_press/orange.png | Bin 0 -> 744 bytes .../textures/block/plate_press/pink.png | Bin 0 -> 744 bytes .../textures/block/plate_press/purple.png | Bin 0 -> 744 bytes .../textures/block/plate_press/red.png | Bin 0 -> 744 bytes .../textures/block/plate_press/white.png | Bin 0 -> 730 bytes .../textures/block/plate_press/yellow.png | Bin 0 -> 744 bytes .../textures/block/plate_press2/black.png | Bin 0 -> 861 bytes .../textures/block/plate_press2/blue.png | Bin 0 -> 861 bytes .../textures/block/plate_press2/brown.png | Bin 0 -> 861 bytes .../textures/block/plate_press2/cyan.png | Bin 0 -> 861 bytes .../textures/block/plate_press2/gray.png | Bin 0 -> 861 bytes .../textures/block/plate_press2/green.png | Bin 0 -> 861 bytes .../block/plate_press2/light_blue.png | Bin 0 -> 861 bytes .../block/plate_press2/light_gray.png | Bin 0 -> 861 bytes .../textures/block/plate_press2/lime.png | Bin 0 -> 861 bytes .../textures/block/plate_press2/magenta.png | Bin 0 -> 861 bytes .../textures/block/plate_press2/orange.png | Bin 0 -> 861 bytes .../textures/block/plate_press2/pink.png | Bin 0 -> 861 bytes .../textures/block/plate_press2/purple.png | Bin 0 -> 861 bytes .../textures/block/plate_press2/red.png | Bin 0 -> 861 bytes .../textures/block/plate_press2/white.png | Bin 0 -> 858 bytes .../textures/block/plate_press2/yellow.png | Bin 0 -> 861 bytes .../textures/block/plate_press2_mask.png | Bin 0 -> 1683 bytes .../textures/block/plate_press_mask.png | Bin 0 -> 1289 bytes 56 files changed, 87 insertions(+), 101 deletions(-) create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/black.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/blue.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/brown.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/cyan.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/gray.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/green.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/light_blue.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/light_gray.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/lime.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/magenta.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/orange.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/pink.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/purple.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/red.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/white.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/yellow.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/black.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/blue.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/brown.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/cyan.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/gray.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/green.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/light_blue.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/light_gray.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/lime.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/magenta.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/orange.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/pink.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/purple.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/red.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/white.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/yellow.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2_mask.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/plate_press_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 31380c0b3..7a8db81c5 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 @@ -1,6 +1,7 @@ package ru.dbotthepony.mc.otm.datagen.advancements import net.minecraft.advancements.AdvancementHolder +import net.minecraft.advancements.AdvancementRequirements import net.minecraft.advancements.FrameType import net.minecraft.advancements.critereon.ItemPredicate import net.minecraft.world.item.Item @@ -58,6 +59,7 @@ private data class CraftEntry( it.addCriterion(i.toString(), criterion(item)) } } + .requirements(AdvancementRequirements.Strategy.OR) .save(serializer, modLocation("machines/$path")) } } @@ -82,7 +84,7 @@ fun addMachineAdvancements(serializer: Consumer, lang: Matter val press = AdvancementBuilder() .parent(chem) .display( - itemStack = ItemStack(MItems.PLATE_PRESS), + itemStack = ItemStack(MItems.PLATE_PRESS[null]!!), title = translation.add("plate_press", "Bending the Material") { russian("Раскатка металла") }, @@ -90,10 +92,14 @@ fun addMachineAdvancements(serializer: Consumer, lang: Matter russian("Создайте пресс пластин, не суйте свои или чужие конечности внутрь") }, ) - .addCriterion("has_machine", criterion(MItems.PLATE_PRESS)) + .also { + for ((i, m) in MItems.PLATE_PRESS.values.withIndex()) + it.addCriterion(i.toString(), criterion(m)) + } + .requirements(AdvancementRequirements.Strategy.OR) .save(serializer, modLocation("machines/plate_press")) - CraftEntry(MItems.TWIN_PLATE_PRESS, "Twice the Thud", + CraftEntry(MItems.TWIN_PLATE_PRESS.values, "Twice the Thud", russianName = "Двойной стук").make(serializer, press, translation) val scanner = CraftEntry(MItems.MATTER_SCANNER, "Scanning Things that Matter", 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 4ccc440f4..3dba552b8 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 @@ -12,5 +12,8 @@ fun addBlockModels(provider: MatteryBlockModelProvider) { coloredMachine(MBlocks.COBBLESTONE_GENERATOR, listOf("0", "particle")) coloredMachine(MBlocks.ESSENCE_STORAGE, listOf("0", "particle")) + + coloredMachineCombined("plate_press", "plate_press2", listOf("idle", "error", "working"), listOf("0", "particle")) + coloredMachineCombined("twin_plate_press", "plate_press2", listOf("idle", "error", "working"), 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 38c4cafb9..978834388 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 @@ -93,8 +93,8 @@ fun addBlockStates(provider: MatteryBlockStateProvider) { provider.block(MBlocks.MATTER_DECOMPOSER) provider.block(MBlocks.MATTER_REPLICATOR) - provider.block(MBlocks.PLATE_PRESS) - provider.block(MBlocks.TWIN_PLATE_PRESS) + provider.block(MBlocks.PLATE_PRESS.values) + provider.block(MBlocks.TWIN_PLATE_PRESS.values) provider.block(MBlocks.GRAVITATION_STABILIZER) provider.block(MBlocks.GRAVITATION_STABILIZER_LENS) 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 0b3cc5702..d16873818 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 @@ -178,8 +178,8 @@ fun addItemModels(provider: MatteryItemModelProvider) { provider.block(MItems.POWERED_FURNACE, "powered_furnace_working") provider.block(MItems.POWERED_SMOKER, "powered_smoker_working") - provider.block(MItems.PLATE_PRESS, "plate_press_idle") - provider.block(MItems.TWIN_PLATE_PRESS, "twin_plate_press_idle") + 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.block(MItems.MATTER_RECYCLER, "matter_recycler_working") provider.coloredWithBaseBlock(MItems.COBBLESTONE_GENERATOR, "cobblestone_generator") 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 f53ef39e2..52586634c 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 @@ -32,25 +32,21 @@ class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event fun block(item: Item, path: String) = exec { withExistingParent(item.registryName!!.path, modLocation("block/$path")) } fun coloredWithBaseBlock(items: Map, path: String) { - block(items[DyeColor.BLACK]!!, path + "_black") - block(items[DyeColor.BLUE]!!, path + "_blue") - block(items[DyeColor.BROWN]!!, path + "_brown") - block(items[DyeColor.CYAN]!!, path + "_cyan") - block(items[DyeColor.GRAY]!!, path + "_gray") - block(items[DyeColor.GREEN]!!, path + "_green") - block(items[DyeColor.LIGHT_BLUE]!!, path + "_light_blue") - block(items[DyeColor.LIGHT_GRAY]!!, path + "_light_gray") - block(items[DyeColor.LIME]!!, path + "_lime") - block(items[DyeColor.MAGENTA]!!, path + "_magenta") - block(items[DyeColor.ORANGE]!!, path + "_orange") - block(items[DyeColor.PINK]!!, path + "_pink") - block(items[DyeColor.PURPLE]!!, path + "_purple") - block(items[DyeColor.RED]!!, path + "_red") - block(items[DyeColor.WHITE]!!, path + "_white") - block(items[DyeColor.YELLOW]!!, path + "_yellow") + for (color in DyeColor.entries) { + block(items[color]!!, path + "_${color.name.lowercase()}") + } + block(items[null]!!, path) } + fun coloredWithBaseBlock(items: Map, path: String, suffix: String) { + for (color in DyeColor.entries) { + block(items[color]!!, path + "_${color.name.lowercase()}$suffix") + } + + block(items[null]!!, path + suffix) + } + fun blocks(vararg items: Item) = items.forEach(this::block) fun blocks(items: Collection) = items.forEach(this::block) 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 6fe4e1df8..e03ae6762 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 @@ -455,8 +455,8 @@ private fun blocks(provider: MatteryLanguageProvider) { add(MBlocks.CHEMICAL_GENERATOR, "Chemical Generator") add(MBlocks.DRIVE_RACK, "Condensation Drive Rack") add(MBlocks.ITEM_MONITOR, "Item Monitor") - add(MBlocks.PLATE_PRESS, "Plate Press") - add(MBlocks.TWIN_PLATE_PRESS, "Twin Plate Press") + addBlock(MBlocks.PLATE_PRESS.values, "Plate Press") + addBlock(MBlocks.TWIN_PLATE_PRESS.values, "Twin Plate Press") add(MBlocks.POWERED_FURNACE, "Electric Furnace") add(MBlocks.POWERED_SMOKER, "Microwave Oven") 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 3c10bb57c..d87e5d4b1 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 @@ -349,52 +349,6 @@ class MatteryLanguageProvider(private val gen: DataGenerator) { slave.add(redItem, toFormat.format(red)) slave.add(blackItem, toFormat.format(black)) } - - fun addBlocks(list: List, toFormat: String) { - add( - whiteBlock = list[0], - orangeBlock = list[1], - magentaBlock = list[2], - lightBlueBlock = list[3], - yellowBlock = list[4], - limeBlock = list[5], - pinkBlock = list[6], - grayBlock = list[7], - lightGrayBlock = list[8], - cyanBlock = list[9], - purpleBlock = list[10], - blueBlock = list[11], - brownBlock = list[12], - greenBlock = list[13], - redBlock = list[14], - blackBlock = list[15], - - toFormat = toFormat - ) - } - - fun addItems(list: List, toFormat: String) { - add( - whiteItem = list[0], - orangeItem = list[1], - magentaItem = list[2], - lightBlueItem = list[3], - yellowItem = list[4], - limeItem = list[5], - pinkItem = list[6], - grayItem = list[7], - lightGrayItem = list[8], - cyanItem = list[9], - purpleItem = list[10], - blueItem = list[11], - brownItem = list[12], - greenItem = list[13], - redItem = list[14], - blackItem = list[15], - - toFormat = toFormat - ) - } } val englishColors = Colors("en_us", 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 2a1c9bc6a..82856ae07 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 @@ -457,8 +457,8 @@ private fun blocks(provider: MatteryLanguageProvider) { add(MBlocks.CHEMICAL_GENERATOR, "Химический генератор") add(MBlocks.DRIVE_RACK, "Стеллаж дисков конденсации") add(MBlocks.ITEM_MONITOR, "Монитор предметов") - add(MBlocks.PLATE_PRESS, "Пресс пластин") - add(MBlocks.TWIN_PLATE_PRESS, "Двойной пресс пластин") + addBlock(MBlocks.PLATE_PRESS.values, "Пресс пластин") + addBlock(MBlocks.TWIN_PLATE_PRESS.values, "Двойной пресс пластин") add(MBlocks.POWERED_FURNACE, "Электрическая печь") add(MBlocks.POWERED_BLAST_FURNACE, "Индукционная печь") 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 481aecb84..ca8d3a69f 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 @@ -157,8 +157,8 @@ fun addLootTables(lootTables: LootTables) { lootTables.tile(MBlocks.MATTER_REPLICATOR) lootTables.tile(MBlocks.MATTER_RECYCLER) lootTables.tile(MBlocks.MATTER_SCANNER) - lootTables.tile(MBlocks.PLATE_PRESS) - lootTables.tile(MBlocks.TWIN_PLATE_PRESS) + lootTables.tile(MBlocks.PLATE_PRESS.values) + lootTables.tile(MBlocks.TWIN_PLATE_PRESS.values) lootTables.tile(MBlocks.POWERED_FURNACE) lootTables.tile(MBlocks.POWERED_SMOKER) 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 246b82385..cebb67f1e 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 @@ -113,4 +113,18 @@ class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(eve } } } + + fun coloredMachineCombined(modelName: String, textureName: String, states: Collection, textureKeys: Collection) { + exec { + for (color in DyeColor.entries) { + for (state in states) { + val model = withExistingParent(modelName + "_${color.name.lowercase()}_$state", modLocation(modelName + "_$state")) + + for (key in textureKeys) { + model.texture(key, modLocation("block/$textureName/${color.name.lowercase()}")) + } + } + } + } + } } 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 275872420..7f56a681d 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 @@ -57,7 +57,7 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) { .unlockedBy(MItems.HOLO_SIGN) .save(consumer, modLocation("holo_sign_reset")) - MatteryRecipe(MBlocks.PLATE_PRESS, category = machinesCategory) + MatteryRecipe(MBlocks.PLATE_PRESS[null]!!, category = machinesCategory) .row(MItems.ELECTRIC_PARTS, MItems.ENERGY_BUS, MItems.ELECTRIC_PARTS) .row(MItemTags.TRITANIUM_INGOTS, Items.BLAST_FURNACE, MItemTags.TRITANIUM_INGOTS) .row(MItemTags.PISTONS, MItemTags.TRITANIUM_INGOTS, MItemTags.PISTONS) @@ -65,21 +65,23 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) { .unlockedBy(MItems.ELECTRIC_PARTS) .build(consumer) - MatteryRecipe(MBlocks.PLATE_PRESS, category = machinesCategory) + MatteryRecipe(MBlocks.PLATE_PRESS[null]!!, category = machinesCategory) .rowB(MItemTags.PISTONS) .rowB(MItems.MACHINE_FRAME) .unlockedBy(MItemTags.TRITANIUM_INGOTS) .unlockedBy(MItems.ELECTRIC_PARTS) .build(consumer, "advanced") - MatteryRecipe(MBlocks.TWIN_PLATE_PRESS, category = machinesCategory) - .setUpgradeSource(MItems.PLATE_PRESS) - .addUpgradeOps(UpgradeRecipe.Direct("BlockEntityTag")) - .rowB(MItemTags.PISTONS) - .rowB(MItems.PLATE_PRESS) - .rowB(MItemTags.TRITANIUM_PLATES) - .unlockedBy(MItems.PLATE_PRESS) - .build(consumer) + for ((color, press) in MBlocks.PLATE_PRESS) { + MatteryRecipe(MBlocks.TWIN_PLATE_PRESS[color]!!, category = machinesCategory) + .setUpgradeSource(press) + .addUpgradeOps(UpgradeRecipe.Direct("BlockEntityTag")) + .rowB(MItemTags.PISTONS) + .rowB(press) + .rowB(MItemTags.TRITANIUM_PLATES) + .unlockedBy(MBlocks.PLATE_PRESS.values) + .build(consumer, "twin_plate_press/${color?.name?.lowercase() ?: "default"}") + } MatteryRecipe(MItems.PATTERN_DRIVE_NORMAL, category = machinesCategory) .rowAC(MItemTags.ADVANCED_CIRCUIT, MItemTags.ADVANCED_CIRCUIT) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/MatteryRecipe.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/MatteryRecipe.kt index 7e2e75f89..e3a00907d 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/MatteryRecipe.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/MatteryRecipe.kt @@ -91,6 +91,11 @@ class MatteryRecipe(val result: ItemLike, val count: Int = 1, val category: Reci return unlockedBy("has_${location.namespace}_${location.path}", has(item)) } + fun unlockedBy(item: Collection): MatteryRecipe { + item.forEach { unlockedBy(it) } + return this + } + fun unlockedBy(item: TagKey): MatteryRecipe { return unlockedBy("has_${item.location.namespace}_${item.location.path}", has(item)) } 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 28ef24561..6bb0f685c 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 @@ -273,6 +273,8 @@ fun addPainterRecipes(consumer: RecipeOutput) { generate(consumer, MItems.COBBLESTONE_GENERATOR[null]!!, MItems.COBBLESTONE_GENERATOR) generate(consumer, MItems.ESSENCE_STORAGE[null]!!, MItems.ESSENCE_STORAGE) + generate(consumer, MItems.PLATE_PRESS[null]!!, MItems.PLATE_PRESS) + generate(consumer, MItems.TWIN_PLATE_PRESS[null]!!, MItems.TWIN_PLATE_PRESS) generate(consumer, MRegistry.VENT.item, MRegistry.VENT.items) generate(consumer, MRegistry.VENT_ALTERNATIVE.item, MRegistry.VENT_ALTERNATIVE.items) 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 3329b811a..f23b251af 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 @@ -190,8 +190,8 @@ fun addTags(tagsProvider: TagsProvider) { MBlocks.MATTER_BOTTLER, MBlocks.ENERGY_COUNTER, MBlocks.CHEMICAL_GENERATOR, - MBlocks.PLATE_PRESS, - MBlocks.TWIN_PLATE_PRESS, + *MBlocks.PLATE_PRESS.values.toTypedArray(), + *MBlocks.TWIN_PLATE_PRESS.values.toTypedArray(), MBlocks.MATTER_RECYCLER, MBlocks.MATTER_ENTANGLER, diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PlatePressBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PlatePressBlock.kt index 8aed09a9a..aee0f1e58 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PlatePressBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PlatePressBlock.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 @@ -13,6 +14,8 @@ 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.block.state.StateDefinition +import net.minecraft.world.level.material.MapColor +import net.minecraft.world.level.material.PushReaction import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock @@ -24,7 +27,7 @@ import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.shapes.BlockShapes -class PlatePressBlock(properties: Properties = DEFAULT_MACHINE_PROPERTIES, val isTwin: Boolean = false) : RotatableMatteryBlock(properties), EntityBlock { +class PlatePressBlock(val color: DyeColor?, val isTwin: Boolean = false) : RotatableMatteryBlock(Properties.of().mapColor(color?.mapColor ?: MapColor.METAL).pushReaction(PushReaction.BLOCK).requiresCorrectToolForDrops().destroyTime(1.5f).explosionResistance(25.0f)), EntityBlock { override fun newBlockEntity(p_153215_: BlockPos, p_153216_: BlockState): BlockEntity { return PlatePressBlockEntity(p_153215_, p_153216_, isTwin) } 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 354c4346f..22f6bdcd8 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 @@ -72,7 +72,8 @@ class JEIPlugin : IModPlugin { registration.addRecipeCatalyst(ItemStack(MItems.POWERED_SMOKER), MicrowaveRecipeCategory.recipeType) registration.addRecipeCatalyst(ItemStack(MItems.ExopackUpgrades.CRAFTING_UPGRADE), RecipeTypes.CRAFTING) registration.addRecipeCatalyst(ItemStack(MItems.ITEM_MONITOR), RecipeTypes.CRAFTING) - registration.addRecipeCatalyst(ItemStack(MItems.PLATE_PRESS), PlatePressRecipeCategory.recipeType) + MItems.PLATE_PRESS.values.forEach { registration.addRecipeCatalyst(ItemStack(it), PlatePressRecipeCategory.recipeType) } + MItems.TWIN_PLATE_PRESS.values.forEach { registration.addRecipeCatalyst(ItemStack(it), PlatePressRecipeCategory.recipeType) } registration.addRecipeCatalyst(ItemStack(MItems.PAINTER), PainterRecipeCategory.recipeType) registration.addRecipeCatalyst(ItemStack(MItems.MATTER_ENTANGLER), MatterEntanglerRecipeCategory.recipeType) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/PlatePressRecipeCategory.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/PlatePressRecipeCategory.kt index 506fd5382..c2be97082 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/PlatePressRecipeCategory.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/PlatePressRecipeCategory.kt @@ -42,7 +42,7 @@ object PlatePressRecipeCategory : IRecipeCategory, IDrawable { } override fun getTitle(): Component { - return MItems.PLATE_PRESS.description + return MItems.PLATE_PRESS[null]!!.description } override fun draw(graphics: GuiGraphics, xOffset: Int, yOffset: Int) { @@ -96,7 +96,7 @@ object PlatePressRecipeCategory : IRecipeCategory, IDrawable { } private val iconField by lazy { - JEIPlugin.helpers.guiHelper.createDrawableItemStack(ItemStack(MItems.PLATE_PRESS)) + JEIPlugin.helpers.guiHelper.createDrawableItemStack(ItemStack(MItems.PLATE_PRESS[null]!!)) } override fun getIcon(): IDrawable { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt index aca5daf14..861fa271f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt @@ -76,7 +76,7 @@ class PlatePressRecipe( override fun getType(): RecipeType = MRecipes.PLATE_PRESS override fun getToastSymbol(): ItemStack { - return ItemStack(MItems.PLATE_PRESS) + return ItemStack(MItems.PLATE_PRESS[null]!!) } fun toFinished(id: ResourceLocation) = SERIALIZER.toFinished(this, id) 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 fecb1ecc9..0189e278e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt @@ -62,8 +62,8 @@ object MBlockEntities { 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) - val TWIN_PLATE_PRESS by register(MNames.TWIN_PLATE_PRESS, { a, b -> PlatePressBlockEntity(a, b, true) }, MBlocks::TWIN_PLATE_PRESS) + 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 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) 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 0171399dd..0bd6a4775 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt @@ -106,8 +106,8 @@ object MBlocks { val MATTER_BOTTLER: Block by registry.register(MNames.MATTER_BOTTLER) { MatterBottlerBlock() } 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: Block by registry.register(MNames.PLATE_PRESS) { PlatePressBlock() } - val TWIN_PLATE_PRESS: Block by registry.register(MNames.TWIN_PLATE_PRESS) { PlatePressBlock(isTwin = true) } + 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: PoweredFurnaceBlock by registry.register(MNames.POWERED_FURNACE) { PoweredFurnaceBlock(MBlockEntities::POWERED_FURNACE, RecipeType.SMELTING, null, MachinesConfig.POWERED_FURNACE, BlockShapes.POWERED_FURNACE) } val POWERED_BLAST_FURNACE: PoweredFurnaceBlock by registry.register(MNames.POWERED_BLAST_FURNACE) { PoweredFurnaceBlock(MBlockEntities::POWERED_BLAST_FURNACE, RecipeType.BLASTING, null, MachinesConfig.POWERED_BLAST_FURNACE, BlockShapes.POWERED_BLAST_FURNACE) } val POWERED_SMOKER: PoweredFurnaceBlock by registry.register(MNames.POWERED_SMOKER) { PoweredFurnaceBlock(MBlockEntities::POWERED_SMOKER, RecipeType.SMOKING, MRecipes::MICROWAVE, MachinesConfig.POWERED_SMOKER, BlockShapes.POWERED_SMOKER_IDLE) } 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 7968c5b68..0cfc227f3 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt @@ -73,8 +73,8 @@ object MItems { 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: BlockItem by registry.register(MNames.PLATE_PRESS) { BlockItem(MBlocks.PLATE_PRESS, DEFAULT_PROPERTIES) } - val TWIN_PLATE_PRESS: BlockItem by registry.register(MNames.TWIN_PLATE_PRESS) { BlockItem(MBlocks.TWIN_PLATE_PRESS, 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: BlockItem by registry.register(MNames.MATTER_RECYCLER) { BlockItem(MBlocks.MATTER_RECYCLER, DEFAULT_PROPERTIES) } val POWERED_FURNACE: BlockItem by registry.register(MNames.POWERED_FURNACE) { BlockItem(MBlocks.POWERED_FURNACE, DEFAULT_PROPERTIES) } @@ -170,8 +170,8 @@ object MItems { init { val machines = ArrayList>() - machines.add(::PLATE_PRESS) - machines.add(::TWIN_PLATE_PRESS) + machines.addAll(PLATE_PRESS.asSupplierArray()) + machines.addAll(TWIN_PLATE_PRESS.asSupplierArray()) machines.add(::POWERED_FURNACE) machines.add(::POWERED_BLAST_FURNACE) machines.add(::POWERED_SMOKER) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/ColoredDecorativeBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/ColoredDecorativeBlock.kt index d12172250..6c538bb07 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/ColoredDecorativeBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/ColoredDecorativeBlock.kt @@ -77,7 +77,7 @@ open class ColoredDecorativeBlock( check(registeredBlocks) { "wtffffff???????????" } MRegistry.DYE_ORDER.forEach { - itemMap[it] = registry.register("${baseName}_${it.name.lowercase()}") { BlockItem(blockMap[DyeColor.WHITE]!!.get(), properties) } + itemMap[it] = registry.register("${baseName}_${it.name.lowercase()}") { BlockItem(blockMap[it]!!.get(), properties) } } registeredItems = true diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/black.png new file mode 100644 index 0000000000000000000000000000000000000000..1b53f937375a8fb525e5c6b72048ee2293fc4856 GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`g(bJ<^TWxOG(MyzJ2@AvzfDi8W>B0{DK)Ap4~_T zagw~anMpdfpRr>`sf3r1#cOV;eQ%11$ZJY5_^ zEKX0IXq|P$K%kA4arZenMRg7y7jcii33ZAJ&37btq&jY1+r9JPw3XXFFy?gJl-}W| z6`y#1f~4)AuGlB}Zprn(o-1zL&0bL%#%1rfXQQ z2?_54rm?xR&#-9tFEg`~d3wRFjF2#i*i|0D<}K^CJPQ3JZOCwr zQOL~Wg2Xq)1(oWP;+4w9QyGf3ZDz2vIAEqCysFzXYCVHOvBCkVwM=^snI^nxOrP+g z(VQtQSf|loA4hvC=e@&mK3j4wz3@scKG6TN@xpDE58bzz+CuXgA8ss??s}%bq2k?B zk^PJo>rP%yVQ~URfNF_rL`h0wNvc(HQ7VvPFfuSQ(ls#DHM9sZG_W!-wlcNUHUKgV zR^85ef}$ZeKP5A*61RriZI>c|8Z_WGlw{_n7MCRE7J&4afGjaE4ly*eGBvj{Fojsc TS^6UcsE5JR)z4*}Q$iB}Vr&VL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..47eabcb9e40ee7b797f6d33021fb1f3cdb92ab4e GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`g&v2+5i9l*U@deef#!)$tVG!2F8*gzhDN3XE)M7 zoFs2|7oNt=fyqD)XMsm#F#`kNVGw3Kp1&dmD9B#o>Fdh=f{~fqk~Mp+@==f;PZ!4! zi_=plT4x9K7Gb|eZ%gpR#o?fskBP2{BcGZo5EtbsjyOds@UzA$v>%$-`HQW4yMpF>` z6{nRiZpCHKzV6(~>5$vQVA*nu@xh+=zw_BORJ+do%Vc^`l{uH$bz<2+XFdf^4|B%% z6aL+PSnxX1o?SZ6?whmBvKw7Ys*{TDbSVqyDM?K&@M^bR%X^TkdCR&jk3v658#0_@ z6f*O;An{FcL8bbnc%^djREDB$n;9%E4w$J3uj=-UTF;S6G7^>bP0l+XkKE9VIa literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/brown.png new file mode 100644 index 0000000000000000000000000000000000000000..477efbcdd604d3bc9397f8a9de42e4986388b25e GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`uZYwjsO4uC)q09zJ1%_HHSA)17k^$UoeBivm0q3 zPLj8~3s2+bz+@nYv%n*=n1O-sFbFdq&tH)O6l5>)^mS!_!N|;Q$(p@Z`6x(_r;B5V z#p$UNt+S382(+;>?mj1{sLsLTBJR;Qp-xeu`HlpSRL9M0yLTR(wsPAC#+;6u(mVXL z;uFtLkhJ~N75gOLExG>JbH$Cj*()l;xa|Fwe16$6v!LtZf-^_nH8xyl)adV!+i_Su zA>m!XG&Xnk85RxyWoC9VPcPV&5fUa5yXr>37E9*%T}m&{FG?--^ z3IA?CEO;Gh&n}&3_sv;m*^MqH)k#Hnx|9Xc(vQEmj4H?cc z3YmFakocy!pi+HOyi&P%Dnrq>%?y?n2h3E2S9Nogkd<7iLiymvUxXG_kd7hb8w2l`(&UbxNjq5Bq7TWCJx!;MAKUC;D4RJ?mC zvY*jn-O0--EKa}(P%UwdC`m~yNwrEYN(E93Mg~Skx(0^2h87`)237{fR;HHP20(_v zs@qvlP&DM`r(~v8;?{7x?NS6#g9hA&lFZ!H;*!MN0+1dPkR=AjA%=!lrsh@#rVvXw TOMip_^)Pt4`njxgN@xNAAn*wU literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..1808bac0f6638b4c8cdf8b3316b61711e4fae774 GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`g*apiU0rq7cQy2efxHO$M@?%4U8p0e!&b5&u*lF zI7!~_E{XE)7O>#1tT-JC2RIt<)a`yo-U3d z7N@69w9YzWAkfCjxci)(qB;kUi?~PMggQlq<~tHRQXMz1?cRBC+RAMo7;`#qO7HN~ zicdU0LDKe5SL~B~x8(X?&lNZBX0NCW@ZpUHu zgoJki)7aeEXIM1+mzmkgJiTC7Mo5@M?5Z09TP&I5cPYI*zbLiT*M~t?YPR_Yjiw;> zD^4q4+=|Pdecic}(;>Hq!LsER?DswKg>%_8u&U^}-9_Ebi zC;Yqpu;6v1J-c+C-8W~MWjDH*R3{bP=~5QZQ<9om;MH!smiHi6^Okj69)*6AHe@)* zC}iewLE@X@f=cyC@k-_5sSHKiHZxdS957Q6Ue)axwVpwtSmA)wTBbdROcUNTrcZd$ zXwH-ttkY<)kE1=6^WNb&pDj6;UU;PzALxJCc;Pn7hwfWUZK3&$4>uM`cRkbJQ1R}m z$bLqPbtf;Uus8uDK()j*q9i4;B-JXpC>2OC7#SED=^7a78d`)H8dw<^TbWvF8vq#w zt8QmKLD7(#pOTqYiCe?%wo4H}4H|G8N-}d(i%Sx73qX2IK$aL7hZq`KnVMS}m_jV! TEd3Dz)WhKE>gTe~DWM4fkaY^` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/gray.png new file mode 100644 index 0000000000000000000000000000000000000000..c31d5b9ce7decaa8700886c6f875ef03d638b238 GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`g%JjxBvhDn_Al3zI}VX*%hDx42&f~e!&b5&u*lF zI7!~_E{XE)7O>#1tT-JC2RIt<)a`yo-U3d z7N@69w9YzWAkfCjxci)(qB;kUi?~PMggQlq<~tHRQXMz1?cRBC+RAMo7;`#qO7HN~ zicdU0LDKe5SL~B~x8(X?&lNZBX0NCW@ZpUHu zgoJki)7aeEXIM1+mzmkgJiTC7Mo5@M?5Z09TP&I5cPYI*zbLiT*M~t?YPR_Yjiw;> zD^4q4+=|Pdecic}(;>Hq!LsER?DswKg>%_8u&U^}-9_Ebi zC;Yqpu;6v1J-c+C-8W~MWjDH*R3{bP=~5QZQ<9om;MH!smiHi6^Okj69)*6AHe@)* zC}iewLE@X@f=cyC@k-_5sSHKiHZxdS957Q6Ue)axwVpwtSmA)wTBbdROcUNTrcZd$ zXwH-ttkY<)kE1=6^WNb&pDj6;UU;PzALxJCc;Pn7hwfWUZK3&$4>uM`cRkbJQ1R}m z$bLqPbtf;Uus8uDK()j*q9i4;B-JXpC>2OC7#SED=^7a78d`)H8dw<^TbWvF8vq#w zt8QmKLD7(#pOTqYiCe?%wo4H}4H|G8N-}d(i%Sx73qX2IK$aL7hZq`KnVMS}m_jV! TEd3Dz)WhKE>gTe~DWM4fZ?*}Q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/green.png new file mode 100644 index 0000000000000000000000000000000000000000..dc0ec59d8aee1b8fd06fceba41a2c49582e17110 GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`udPung9R)d&EiHzI{9N{{}Ch2F8*gzhDN3XE)M7 zoFs2|7oNt=fyqD)XMsm#F#`kNVGw3Kp1&dmD9B#o>Fdh=f{~fqk~Mp+@==f;PZ!4! zi_=plT4x9K7Gb|eZ%gpR#o?fskBP2{BcGZo5EtbsjyOds@UzA$v>%$-`HQW4yMpF>` z6{nRiZpCHKzV6(~>5$vQVA*nu@xh+=zw_BORJ+do%Vc^`l{uH$bz<2+XFdf^4|B%% z6aL+PSnxX1o?SZ6?whmBvKw7Ys*{TDbSVqyDM?K&@M^bR%X^TkdCR&jk3v658#0_@ z6f*O;An{FcL8bbnc%^djREDB$n;9%E4w$J3uj=-UTF;S6G7^>bP0l+XkK^v4O! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/light_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..f790103f4d9a7cb4782fe08874b9367abc201804 GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`g-dvxBvhDZ#-x3?c29A&+115H87S0`2{mLJiCzw z;v{*yyYMt_4on7eI14-?iy0XB4ude`@%$AjKtc8rPhVH|7mUo@maN%pm5+k-c)B=- zSe%|Z(K_phfj}E8bDZRr_ zD?ai31WDUJU9nH{-ID8nJy+bgo4ukkjLY6{$>*0HGYh&dE;w`KU1P&_MveXsxgCeq z6B6D9Ok;CrpJCDPUuI?}^YnsU86ja3v8!$bY_VjH-=*~O{G!xSUmpfpsoCZqG@63g zuQ;uIaVsu+_I2k@PKVqc2FsRPj1Ts_|DDgSq1tusUnbLos?52}t`p1tIrAxSdYCi5 zpYZSY!-Ch5_UzJmcHf+3mfh%LQk_(Er%PEtPf2QOfmgfjTHb?P&0E%Oc@+9d+K}NK zqmY@$1&MEp3o6wo#VeJIr!o|6+st5TallMPcvZJ&)OrSmVub@zYnk>OGEI2Xm_Fe} zqd8Mruuh}FK92TO&U=UBe759Vdf}B?e4zhjT9Aao_Wom9^U<$E> Tv-C#@P!EHrtDnm{r-UW|!L|ze literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/light_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..e70d121d7d31c3a12b9954763a5e5a7f9b9d5c01 GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`ud)p=KufyS5_9@zI|JH@8NSm4U8p0e!&b5&u*lF zI7!~_E{XE)7O>#1tT-JC2RIt<)a`yo-U3d z7N@69w9YzWAkfCjxci)(qB;kUi?~PMggQlq<~tHRQXMz1?cRBC+RAMo7;`#qO7HN~ zicdU0LDKe5SL~B~x8(X?&lNZBX0NCW@ZpUHu zgoJki)7aeEXIM1+mzmkgJiTC7Mo5@M?5Z09TP&I5cPYI*zbLiT*M~t?YPR_Yjiw;> zD^4q4+=|Pdecic}(;>Hq!LsER?DswKg>%_8u&U^}-9_Ebi zC;Yqpu;6v1J-c+C-8W~MWjDH*R3{bP=~5QZQ<9om;MH!smiHi6^Okj69)*6AHe@)* zC}iewLE@X@f=cyC@k-_5sSHKiHZxdS957Q6Ue)axwVpwtSmA)wTBbdROcUNTrcZd$ zXwH-ttkY<)kE1=6^WNb&pDj6;UU;PzALxJCc;Pn7hwfWUZK3&$4>uM`cRkbJQ1R}m z$bLqPbtf;Uus8uDK()j*q9i4;B-JXpC>2OC7#SED=^7a78d`)H8dw<^TbWvF8vq#w zt8QmKLD7(#pOTqYiCe?%wo4H}4H|G8N-}d(i%Sx73qX2IK$aL7hZq`KnVMS}m_jV! TEd3Dz)WhKE>gTe~DWM4fjiU=w literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/lime.png new file mode 100644 index 0000000000000000000000000000000000000000..acc05367a7295c1cad525835c40e689dc0ba1c27 GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`uhCc6951IPgo>!`}XZmD^zQN8W>B0{DK)Ap4~_T zagw~anMpdfpRr>`sf3r1#cOV;eQ%11$ZJY5_^ zEKX0IXq|P$K%kA4arZenMRg7y7jcii33ZAJ&37btq&jY1+r9JPw3XXFFy?gJl-}W| z6`y#1f~4)AuGlB}Zprn(o-1zL&0bL%#%1rfXQQ z2?_54rm?xR&#-9tFEg`~d3wRFjF2#i*i|0D<}K^CJPQ3JZOCwr zQOL~Wg2Xq)1(oWP;+4w9QyGf3ZDz2vIAEqCysFzXYCVHOvBCkVwM=^snI^nxOrP+g z(VQtQSf|loA4hvC=e@&mK3j4wz3@scKG6TN@xpDE58bzz+CuXgA8ss??s}%bq2k?B zk^PJo>rP%yVQ~URfNF_rL`h0wNvc(HQ7VvPFfuSQ(ls#DHM9sZG_W!-wlcNUHUKgV zR^85ef}$ZeKP5A*61RriZI>c|8Z_WGlw{_n7MCRE7J&4afGjaE4ly*eGBvj{Fojsc TS^6UcsE5JR)z4*}Q$iB}i**Wk literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/magenta.png new file mode 100644 index 0000000000000000000000000000000000000000..8de4317be06415529928f0b85e61329e97d662db GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`ubh=>;M1%ztC*@?c2BKR6jWZ)WBF0;VkfoEM{QfI}E~%$MaXD00r4gJbhi+UobLrTe4=aRXz&R)%ffib7!rt}U! zt@yz`%+m{YWrT!D#ICv#u*H%&ewWhA^NUhTeSH{YrDmId&}a%` zzv8s=#jUvP+1H&rIURC)7%W?EF+SMy{&zmRhHBTjf0;}Vsxs#?yG|_o=gg0!?J ze!{=o4+~yL+OtdN*?n`CS$3m~Np(`uoi1eoJte8B1zzp8Yk3cHHE&tBt!3JC$TZ4jHn@qzxAjTdgSeCWQ#)E1i0_;6#9bk{Te4HfU6 zitJ~!SaHYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`ueXW0{{R2zmmdx`}XbmH=F%|8W>B0{DK)Ap4~_T zagw~anMpdfpRr>`sf3r1#cOV;eQ%11$ZJY5_^ zEKX0IXq|P$K%kA4arZenMRg7y7jcii33ZAJ&37btq&jY1+r9JPw3XXFFy?gJl-}W| z6`y#1f~4)AuGlB}Zprn(o-1zL&0bL%#%1rfXQQ z2?_54rm?xR&#-9tFEg`~d3wRFjF2#i*i|0D<}K^CJPQ3JZOCwr zQOL~Wg2Xq)1(oWP;+4w9QyGf3ZDz2vIAEqCysFzXYCVHOvBCkVwM=^snI^nxOrP+g z(VQtQSf|loA4hvC=e@&mK3j4wz3@scKG6TN@xpDE58bzz+CuXgA8ss??s}%bq2k?B zk^PJo>rP%yVQ~URfNF_rL`h0wNvc(HQ7VvPFfuSQ(ls#DHM9sZG_W!-wlcNUHUKgV zR^85ef}$ZeKP5A*61RriZI>c|8Z_WGlw{_n7MCRE7J&4afGjaE4ly*eGBvj{Fojsc TS^6UcsE5JR)z4*}Q$iB}o@xs0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/pink.png new file mode 100644 index 0000000000000000000000000000000000000000..488a78fae221b08a59e3bf0186bcd6e4b19077cc GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`ufk^tN#E0f2m^f?c2BS-d*?ysDZI0$S;_|;n|He z5GTpo-G!%db6_%%!&%@FS21szhGqMwq(s-t9%rs$J50z z#NzbSiPl+1356@l@0MKu>$&2_-Ru>WVO;ipOFqBsm|4(ualx4*?;0DfGivmA$n7|+ zo{;b^U>ch{`wWYQ|1vW>nWq=*$_NRQh+TCfV2dSl{4S-J=NF}x`uZ@)O3gO^pwSe> ze#L3!i(7Hov#&dMaysPpFj%(SVtlaY{qKBs4b`r5|1y~#RAtU(cAZ%E&zVnw)5Dzc z{e*wF9~Qihv}c#jv-{>Ov+PC}lj@|RJ6*~GdP-7L3%uHG*YY0ZYTmML%cIaw(uNG@ z7=_F{E=YV+Tu`Y#DPE~uJe8qn+hzt!ivwmV!mGMHqt-Jh6e}E%TFbQOkZHo3#`Fm< z8qJx~f^`}V_HneQa^5=}=d&f}(hIND;sgCJ8!y~u`OtlfsVy|0@!`fI>8@w`8!FyC z71_^dvF_yM6c#671gMs{MwFx^mZVxG7o`Fz1|tI_BV7YST|+oZUIP-3CI!y;}AnbD^qhT15=14 UoTWcPfO;4_UHx3vIVCg!02U4nKmY&$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/purple.png new file mode 100644 index 0000000000000000000000000000000000000000..679edbb1d2638e37741c774b92f5f0edf52d8101 GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`uY;JmH+?$Pf?h3`}XY=fr=YI4U8p0e!&b5&u*lF zI7!~_E{XE)7O>#1tT-JC2RIt<)a`yo-U3d z7N@69w9YzWAkfCjxci)(qB;kUi?~PMggQlq<~tHRQXMz1?cRBC+RAMo7;`#qO7HN~ zicdU0LDKe5SL~B~x8(X?&lNZBX0NCW@ZpUHu zgoJki)7aeEXIM1+mzmkgJiTC7Mo5@M?5Z09TP&I5cPYI*zbLiT*M~t?YPR_Yjiw;> zD^4q4+=|Pdecic}(;>Hq!LsER?DswKg>%_8u&U^}-9_Ebi zC;Yqpu;6v1J-c+C-8W~MWjDH*R3{bP=~5QZQ<9om;MH!smiHi6^Okj69)*6AHe@)* zC}iewLE@X@f=cyC@k-_5sSHKiHZxdS957Q6Ue)axwVpwtSmA)wTBbdROcUNTrcZd$ zXwH-ttkY<)kE1=6^WNb&pDj6;UU;PzALxJCc;Pn7hwfWUZK3&$4>uM`cRkbJQ1R}m z$bLqPbtf;Uus8uDK()j*q9i4;B-JXpC>2OC7#SED=^7a78d`)H8dw<^TbWvF8vq#w zt8QmKLD7(#pOTqYiCe?%wo4H}4H|G8N-}d(i%Sx73qX2IK$aL7hZq`KnVMS}m_jV! TEd3Dz)WhKE>gTe~DWM4fb5aTc literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/red.png new file mode 100644 index 0000000000000000000000000000000000000000..003133d3368b43ba3815096396ba9e8b1cd6a3fc GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`uaJlO8@`=ZLefxGtN>~L@17k^$UoeBivm0q3 zPLj8~3s2+bz+@nYv%n*=n1O-sFbFdq&tH)O6l5>)^mS!_!N|;Q$(p@Z`6x(_r;B5V z#p$UNt+S382(+;>?mj1{sLsLTBJR;Qp-xeu`HlpSRL9M0yLTR(wsPAC#+;6u(mVXL z;uFtLkhJ~N75gOLExG>JbH$Cj*()l;xa|Fwe16$6v!LtZf-^_nH8xyl)adV!+i_Su zA>m!XG&Xnk85RxyWoC9VPcPV&5fUa5yXr>37E9*%T}m&{FG?--^ z3IA?CEO;Gh&n}&3_sv;m*^MqH)k#Hnx|9Xc(vQEmj4H?cc z3YmFakocy!pi+HOyi&P%Dnrq>%?y?n2h3E2S9Nogkd<7iLiymvUxXG_kd7hb8w2l`(&UbxNjq5Bq7TWCJx!;MAKUC;D4RJ?mC zvY*jn-O0--EKa}(P%UwdC`m~yNwrEYN(E93Mg~Skx(0^2h87`)237{fR;HHP20(_v zs@qvlP&DM`r(~v8;?{7x?NS6#g9hA&lFZ!H;*!MN0+1dPkR=AjA%=!lrsh@#rVvXw TOMip_^)Pt4`njxgN@xNAxTy(6 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/white.png new file mode 100644 index 0000000000000000000000000000000000000000..965f9af38ea54a7e3560f6a8e1f8efe126df366b GIT binary patch literal 730 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(mxfC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`uhL>|KGiP_xA1EC5)dh097-V1o;IsI6S+N2I3@n zySs49Uq5mH$l)yTh%9Dc;5!V$jK}j=qyPokOFVsD*LLRV<=&AA?587^B0>|>(nqv&suZ4cm0Ij zC2p5~h|c~u`{IrH|0+Fl-!aC`>pj@7{PJ_f0Vmd_F9O7~K06%9<_}>%!g1%Juz^A8 z3a$2L<{lY^I=?$78ogQO>PYGP_?5oW_%)|7KYH?;>+jxNUB*)IrINefYYO{(4g1IkiUiF1K0G1h3xYjlUeR@%zopr0CLHYaZfQY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP(nArC&U#<|G&ZT|AD8N znAlbzn}H!AA;Hwtbi1A1JX6#9`uab|RsR3~e`}5W?c2Ba)ZGIb!oXM(;VkfoEM{QfI}E~%$MaXD00r4gJbhi+UobLrTe4=aRXz&R)%ffib7!rt}U! zt@yz`%+m{YWrT!D#ICv#u*H%&ewWhA^NUhTeSH{YrDmId&}a%` zzv8s=#jUvP+1H&rIURC)7%W?EF+SMy{&zmRhHBTjf0;}Vsxs#?yG|_o=gg0!?J ze!{=o4+~yL+OtdN*?n`CS$3m~Np(`uoi1eoJte8B1zzp8Yk3cHHE&tBt!3JC$TZ4jHn@qzxAjTdgSeCWQ#)E1i0_;6#9bk{Te4HfU6 zitJ~!SagJBqT&aLRwo}+tk!lO--%7zP`P^U0z;UMn+-nT%UQSrpLB~ z|NsAg=0dADpec+cL4Lsu4$p3+fjCLt?k=KFZ~R;gvL>4nJ@ErtU#vK#0-vR~M zOFVsD*N(`;;uzv_eC?FZY0U~euCcdH#KrvkAFa;mc;S`7Jmd9J z7pC2IZz%bD;k)vyuXTGFt}avyQ4flo#oQGY;CAKfVFQ%|zhfD$y<>PD=*Q5?Hp~7( ztmTVcToYJL7d%`r@5s9cd;!`FEmwXo2s*Ek`s2D({+mb2W(j(XuA&O7djxLrU~L{Je!xDJ2c%diTMHNgPm6%Y;ky~cVHrydsL?`gRV4_&AjU8|-hX$;9Mfm7Sn(l=JwoMDSryZT90wU0#`+VDpWW2i zt5!0$olZQ>I9HCPqq#KJmr+79S>bnBx_&^x&4Wj@j&9Og&^Xooeb1FsT0OVTm+RrKUU=H(#*G=1A7!Q96KU$sB@xm*EdB*Fd zE=;@a-ca)Q!gu9YU+eZVTwSOZq8=1Ei@7T*!0pP{!v-n`e#bIgd&lrR(2t>&ZI=Co zSj!i?xF)cgE_k?L-jR0?_yV*UTCV(F5OiK6^~ZIo{5Ox3%@Xt&T}2gE_Xyq!X6RoS z>S1z5UM=vo^Z}F919Qt97T9zD=hFzzU`m>kyu{$Vap~I9b2rTr{FQjuh}f=Xdofv$ z;oQZkEo^JHe$8aK$eUotbj0!IsrsS-f5qCnY#G~FrX11u`S_!uelnxUvIJd8KY_H1 zs^-a$O%ue^cs4IPcWAm_67vJj2RpAk*y8X|@4!SZ_oz-?23=_;n|amG%MUQKZ~3@~ zDT{N%8k<&jzKqvO3O2OC7#SFu z=o%OTQHY_Ll>rE88yHv_7*tK34@waT4Y~O#nQ4`{HE^F(4+Lt^fZI@#nVVW%l9*e7 h&|@58XlP|>W@Tgov4rXAd{A0s@O1TaS?83{1OSIPJTCwM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/brown.png new file mode 100644 index 0000000000000000000000000000000000000000..5af3beab1bb1a828746ae009ee6fbf7626acf7db GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{Jv|C&U#<|G&ZT|AD8N znAlbzn}H!AA)%2+tk!lO--%7zP`P^y~tf7(@}NpT%UQSrpLB~ z|NsAg)$-?6KvNh?g8YIR9G=}s196hP-CabV-uSr~$l)yTh%9Dc;5!Jyj5{V~zXb}i zmw5WRvcF(t=C+U!+)x(_)N{zw#WBR=_}VF*)0!1{Tw`yYh>Q96KU$sB@xm*EdB*Fd zE=;@a-ca)Q!gu9YU+eZVTwSOZq8=1Ei@7T*!0pP{!v-n`e#bIgd&lrR(2t>&ZI=Co zSj!i?xF)cgE_k?L-jR0?_yV*UTCV(F5OiK6^~ZIo{5Ox3%@Xt&T}2gE_Xyq!X6RoS z>S1z5UM=vo^Z}F919Qt97T9zD=hFzzU`m>kyu{$Vap~I9b2rTr{FQjuh}f=Xdofv$ z;oQZkEo^JHe$8aK$eUotbj0!IsrsS-f5qCnY#G~FrX11u`S_!uelnxUvIJd8KY_H1 zs^-a$O%ue^cs4IPcWAm_67vJj2RpAk*y8X|@4!SZ_oz-?23=_;n|amG%MUQKZ~3@~ zDT{N%8k<&jzKqvO3O2OC7#SFu z=o%OTQHY_Ll>rE88yHv_7*tK34@waT4Y~O#nQ4`{HE^F(4+Lt^fZI@#nVVW%l9*e7 h&|@58XlP|>W@Tgov4rXAd{A0s@O1TaS?83{1ORdIJSzYI literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6c11b7ba607905e2aaa1b87cc795b42f0351a7 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{Jv|C&U#<|G&ZT|AD8N znAlbzn}H!AA)%W}ME`EMR6nsOI2j-SJEU@SP&!-Wb!IU&7d5OV!4@XaQ}smw{))AC*)q1VOgWOBm6nq%moUb4;JTV#S9f_6U_rWmQZUavWr280$|oes)u5 zuUg62b~^Di<6JqGj^@%>Uq%VdWQE^h>G}Z$HxC}sI=V?~LE}{S_dQomY4zMTlY1v( zap>7g=6HsZ-9`tj>MiTM1N(I>d>I)}Z_2oNYCosYgE`C}UN>!fVNl5W=+Uo*C;bv1 z9ajiUKM**fN#^;N2}Qb$MN`7fe=!PFSXUG~MgvnHgKCLuL`h0wNvc(HQ7VvPFfuSQ z(KRpxq7XwfD+3VHHZZU>kmJ%RuL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/gray.png new file mode 100644 index 0000000000000000000000000000000000000000..05bab290b1775ff4b446ab1d0f9bd6ed25db6709 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{Jv|C&U#<|G&ZT|AD8N znAlbzn}H!AA)%vL>4nJ@ErtU#vK#0-vR~M zOFVsD*N(`;;uzv_eC?FZY0U~euCcdH#KrvkAFa;mc;S`7Jmd9J z7pC2IZz%bD;k)vyuXTGFt}avyQ4flo#oQGY;CAKfVFQ%|zhfD$y<>PD=*Q5?Hp~7( ztmTVcToYJL7d%`r@5s9cd;!`FEmwXo2s*Ek`s2D({+mb2W(j(XuA&O7djxLrU~L{Je!xDJ2c%diTMHNgPm6%Y;ky~cVHrydsL?`gRV4_&AjU8|-hX$;9Mfm7Sn(l=JwoMDSryZT90wU0#`+VDpWW2i zt5!0$olZQ>I9HCPqq#KJmr+79S>bnBx_&^x&4Wj@j&9Og&^Xooeb1FsT0OVTm+RrKUU=H(#*G=1A7!vL>4nJ@ErtU#vK#0-vR~M zOFVsD*N(`;;uzv_eC?FZY0U~euCcdH#KrvkAFa;mc;S`7Jmd9J z7pC2IZz%bD;k)vyuXTGFt}avyQ4flo#oQGY;CAKfVFQ%|zhfD$y<>PD=*Q5?Hp~7( ztmTVcToYJL7d%`r@5s9cd;!`FEmwXo2s*Ek`s2D({+mb2W(j(XuA&O7djxLrU~L{Je!xDJ2c%diTMHNgPm6%Y;ky~cVHrydsL?`gRV4_&AjU8|-hX$;9Mfm7Sn(l=JwoMDSryZT90wU0#`+VDpWW2i zt5!0$olZQ>I9HCPqq#KJmr+79S>bnBx_&^x&4Wj@j&9Og&^Xooeb1FsT0OVTm+RrKUU=H(#*G=1A7!5ZR@fgH{PkH}&M2EKzJ%(!D>_FJGJ zdx@v7EBgyZW^M}!!3}k>Ks|>%T^vI^j<224IjvcN$2IoWiMW`5|D)A89WT5xm}k6R z>cX_!?hPe>FML;i^|fv4Jv~<{f$WfG(@+%i@XVTOh+7Vo~kbj@K>z8%a*Z?Wy%qapN~Hp>L)XrEKAUp^b<(C zsA``4*fc>rjc4<+bBCt;B{4tXe6aJ%gDnmZ^$twra*yiNWzdyovYA)?y!-$&`<9P; zn6fxGtg&fj=gWAlq~OD-@7wT~#ryB>m}C0v6)Qd@u}7#}Dyw3;kmDdD!&rZ!@w1yc zd(}$Dw$q8H8RyEebTpU7`Z7vrCM*07OV^3@JRc~469oVm9;mgQ)dQ-;DQ~NoE9?W6>@VaT+3xh(|M~{9jJn5JC z=(s{)`hma+O)}5FOeoT2ESeH-{)!Wf5KEYz&IhGM22WQ%mvv4FO#o9lJ=p*N literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/light_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..43cf87d0560f4e987ddc3efd8c32a245cc381f15 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{Jv|C&U#<|G&ZT|AD8N znAlbzn}H!AA)%H=O_7{xI+!hjo8|q?#dJcKIIEHu}Upu99TC)O=YwWEPaWVh?N2_x>UU+3N&v?Dm zg=x3l8%q9O_^$lwYu#Rks|(da)Po{tF?U4;xLx^r*g)mL?^uRw?--s3`Z2V!&9c7` zYx!aq*92D61rHa@JM!)UUw}44%az{?g3fEC{H6|4E+m3 zJxtEXs|CK6K46l1U~ZYi0(X+SOi6Q+ml&KkE?rxC?xtCSzY^~n5!=;lFDC0T zoVz%+g>B8&ubB)Nc@ylIjyT>tRbLd~uULDREn^$Ylp`8HAAdB|Pi8b(mY^%?Cy;hg z)javJX@Ynf&*o+44o&wgE7$3aGhvHnEkXE$~B zs+EjwrxQ;z&Xr^7XfBQQWt7lNR`?y3t{+fv^WYJ!qnorAG){GY-*e@ZR?lrSxpyKK zhn~G;j%O&@ZFIn@-m=a+uwTc*myz-Gri`1X_Hzn7n8WEAvZrIGp!Q02JUm}fj|u!a2rZ8b5n~;5_1a> gdW=I14XsSgtc*+`mM}e?4@!#+p00i_>zopr0I_F1qW}N^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/lime.png new file mode 100644 index 0000000000000000000000000000000000000000..da8664f0c73ac19579153e037273fa94c75d9c58 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{Jv|C&U#<|G&ZT|AD8N znAlbzn}H!AA)%{_+B=5lfqo3FY_sey z#9F@C#WjJ|biu;~^NzfGz!#v+&~oMXf}rynsXwku<-d8PY?h$M=qjqPx<~Ls zP!E$c@@j#vr4N{-9++F^u)v=CKc7Z$22;|U-p1Wz5;IG8HM#OeC+l$G1 z4CgLRZDCup^=l@>McxEErX!9wPt_L%_$$`lWy{#cGUbTI&&MAP^^+M*mL=#)`U#|6 zR5ee2Y?>gR#8*4VVN^JTnNQt)Ba_igyg;{A7b%rSlTiWMJ{*dtUfl~pla$Z?R7VXQyV_}NXJ zy=o<6+v&v9jC18!I+{ykeHkS*lNEl4rRxV2+&p+h>*yw}1&veP-}hWOrPXuWOzxeC z#i3^}nd2Esb{ieAs<*834(!*l@MUB?y(#17sr{Tn59Tm`c-^$^g+U?fqes6Mp7cw6 zbX*}Y{XpP^CYk47CKTy17EK8^|HUX!VO>$|7!6E)45}rr5hW>!C8<`)MX5lF!N|bK zMAyI&h(Zj_tPDU%+rYrez@TdKd{Bx&Xvob^$xN%nt%3WTdLU4P2Hb{{%-q!ClEmBs hgdXD%LqjW5GbEamTaeVER&S}jGJg%{~PQ=Ch`yZ{&>3HFl!93&j zQWvJ(c5f*8d*QqCtFLu?8Llo=3sDb>oWtO?x1HWS#uDxS;9_Yu=$~MdX zLagPBU0f4bO&2^|Fz?8_2YdnA3@ulFF9zt9t}*1vB(7 z4D~QMBd-?tTKa%V>Vdgs4h!tL|MO`CXD}trNnT=b-neva>A9O`3I0mFYeZ~Uv%Q$C z$8hfA)E2fiTfb&9T;xr#V>;q^^HhCNfWKnxUAByEEK`nX{Cxb;P(PW`WLbi)q@O_A zMOE|U$EFG5X*`>kojWw$FNyg9=YySB9&B-VsCQr@mwQyFE`zQ#lg+&9=j8{O*|&V$ z!<5CjVU0~IJ730YB?TWwecy(^EZ%>2#~jmVuUPRRi9JH)Qdt$#g&YSN8OHh(ji24r z*{fDEww+Eq%{W(%rK7nt)|XL2Gg;wxSh{{d!Oeq5w2p4lTF^Mv{e91sQ(8T@&E(#R zSR8uxk~yBCWVg`)t9r{i@4$W?3tvXY)0;AGp4!hT^k5G2hu2NpUKkXzK6>Tc(+>nrXp(vUWkQiIW6_jw^Iwbt71kBSj?uu>$Dmr`8c~vxSdwa$T$Bo=7>o>z zOmqzlfhfe#%*p_Sv<(cb3=FC!&j+OlgofPwl+3hB+#0ygsRsfzXuxeK$;?eHE=kNS iKW}ME`EMR6nsOI2j-SJEU@SP&!-Wb!IU&7d5OV!4@XaQ}smw{))AC*)q1VOgWOBm6nq%moUb4;JTV#S9f_6U_rWmQZUavWr280$|oes)u5 zuUg62b~^Di<6JqGj^@%>Uq%VdWQE^h>G}Z$HxC}sI=V?~LE}{S_dQomY4zMTlY1v( zap>7g=6HsZ-9`tj>MiTM1N(I>d>I)}Z_2oNYCosYgE`C}UN>!fVNl5W=+Uo*C;bv1 z9ajiUKM**fN#^;N2}Qb$MN`7fe=!PFSXUG~MgvnHgKCLuL`h0wNvc(HQ7VvPFfuSQ z(KRpxq7XwfD+3VHHZZU@}#JkkIF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/pink.png new file mode 100644 index 0000000000000000000000000000000000000000..7c1a38712a2745ec9de83301179d7cd6cf5515e6 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{Jv|C&U#<|G&ZT|AD8N znAlbzn}H!AA)%J!qJ_cCODnQ`2Kx z!vFvOU;fPUAJ7!Wk|4ie28U-i(m8b@ z>?NMQuIw)unYk?_1UJ;h0`(m7ba4#vIKFmD=d@-89@p4gC*orM{f}1XbiDA&V4m@M zsSDF?yEl~lz3^T6)z`Yc3|AMbg{TKb&SLJ03UIsf^{|1;f#0zV*WNKa5AIZ(O>z^xRFe1b-#oH6pgF*owlY75(%tzR=4F7hVWF&%Ndd8)oBz+bWUE?dSnmMKRxem?$asGrPevMfPY(oZ1m zqN;iFW77ojG@i}N&K;WWm&E*l^TEz554Jcw)H^Vd%RQ=7mqAyW$!1>l^YR1C>{~wW zVanp%u*Rm9oiF3Hl7bJTzHh@{7Vp2iV~**wSFHGu#2%q?sjQ0WLXLxs3}gL?#?Nl* z>{Tln+fFB*W}GX>($QQR>&qyinXK?TEL}gK;O4<2T1Pi&EohwT{=VnRDXpH{W^(UD zEDk+;$sEs6vfJo@RlQ}McVNGcg)bxH=}j3oPwnRvdN7Ci!|SGPFANGwGNDM9v1m%T`7cI+3hRnu$7o>cV^A$|jVMV;EJ?LWE=mPb3`Pb< zCb|ZOKonwVW@P|E+6D$z1_o7==YvuNLPKtTN@iLmZVlY$)B}MUG~hOrWag$8mn7yE iAoLiA7#docnpqi{KrCT;Ivx{QDoR&gppJmBBpY z^->q6-F9y%`Fr8J@~f|Pdl{}SR0~lLik!vV6&2ui@(H8Lqu!cpm7-(8@N; z{z9zfi(On3SWOo^Trls*y9ay$+6*mMelG|*uaWxWx>Wv~N6KaidW^233afhrZv`{- zFAViCIU}zY_*(jaN$P>QWeyAMx&QNN1ZOZM%}HKjaNf9dZRxq2W(odEylX^kSF^pC ztjBQf;?x$lHCw-CGF;?Muwy#nc=J?!QGmZgVMLnAx{{ z+{2W`xnYe>D?4AtYb6CAMt$FgzbxK=cgGylXRlcCA&EUg+g=zHvOaqBYvD=1 z#7D;!0@Du!PH2*O{$)auE@RP@aPwb`0u|O3#g5Uy)W@J&;u=wsl30>zm0Xkxq!^40 zj7)S541p-b(9FsJgtQF|tPBjQCeH_@2!w{*{FKbJO57T_CjHE6(XD9OxCEiOsS jEkNio4ly*eGBvX@GJ#ma^mINbEi!nz`njxgN@xNAKde0` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/red.png new file mode 100644 index 0000000000000000000000000000000000000000..660b8d74cc1ef18f141552eed1f0e28a7413ffe3 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QY`6?zK#qG8~eHcB(j1elRbib z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP{Jv|C&U#<|G&ZT|AD8N znAlbzn}H!AA)%kbA9HSnjYH{ z{{R2~Q{_{Ofu=B)1o;IsI6S+N2I3@nySs=!z43D~ki%Kv5eZbmcMyabcTCKF3lwB8 z@$_|Nf5FJiZ6P7Jp)MAv=a8q1V~EG`wNpB$H7oGA#@;#+7xV9bv^uBbg;xgijMqzD zn0DK}q2%v{@5-;f*6n4ux=<}dJt%S(b5~S=+m)|}4O9;Nj%B#^j^TNrA44nKEc*+w zmM?a3O<*-$@NmJrBkvyY1!yz0T=~5q=)6YikLyzTZyqU|CFn7_iYlz`5xf=5(7!O$ z!{m&-THtHx116~l=9W1uu;>2IrxBdNlr$%KiNSf}(zT`MZki?dEAg%ov0csfVzM5? zxrHk88~(C*|J@yPOrO1C#fK#J2$f4^RZJIh9Asn|>rXU(c2j4s zTFKaUI`K5)TsfAG=F(VSMhVSih2LT6`T+$u4<6Avx=Cw6<5c(eJy%X?_1rd-dnaOX z=-Er=c!rYQMhC3wE$h4k`*kdQ85vJ+%D8!IKc~=xIm{nkH*I@iP{{h|(XWLk{SqG? zR|rf$5ICVp=J}TiMY@bdQ^L)EF$z>zR}?!&15+P^YKdz^NlIc#s#S7PDv)9@GB7gH zH82FC5JNL70}#?SFt9Q(sG2+FVdQ&MBb@0B|rn%K!iX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/white.png new file mode 100644 index 0000000000000000000000000000000000000000..e156dcaf5ece6d0e7ea7700b4c648e8d7d1ae428 GIT binary patch literal 858 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..939804355501fc7ce8dc8ac19255e98eca2bfaa5 GIT binary patch literal 1289 zcmV+k1@`)hP)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 z01m?d01m?e$8V@)00007bV*G`2j~F<3poRV&W7*+00RX{L_t(&-ql$_uCg!?9t?5e z1zgJ|u!bGpptoRWVB-Od8w@Au5!ewL6R)7IJw^Y;?~oQLv{2rAeu=?CXWC9@z8Q)q zga8@a?N(`@PA7=t7|OB)0D#qMr95Yh0RX`He1_-q37gFZ`q0(qcswfY%jE)7kfy29 zrj$1Gtf~s4C~C%8m@19q7~(hvm$=<-Mhmb-RaGDVtEy7&Ba97DmSy7wu0bhPu2X?K z-2UGM-^K#~066EJ)?O}`qbFR~wNr!2ZeCRtP)e1yVgS$cdX??>d!;ReXpBGzX%rVl zVKqsNNsRYA&w+Ced7d}-F%-Hy1LfOZr1LH<#D73t*C2!#{K@?=UWFY{Uf=@XI;?f4 zX=*ionx+tjVe@l>_oPP|Kz9AQu9csx`+mPG3b2iRO$V;)8p1FHG@KO&%#Gb{_hVzp zJmB}mnMn*!#nAYV$3wZc@7toyRsNfR1OOl#3KK?!t%=qFnK9t4~N6S=y1cvn{;iX zI$$ix^o4;Ot5}kv>;5Jdx;G`=x!PC`aP{&uy8+}~ZXYDNa``#Y#UoY*&@EKA_^CTP zM4psVt3Emo(CPRS2O^kB2J*KzbTTDp4O1igLnkIfB-l=6bJYP;PL%pSv@H4-A4Smz zC%6V|nl~Mj(jIR&_00000NkvXXu0mjf9%oag literal 0 HcmV?d00001