From 8d7b73080f6828508e0b21b7845bc614a8efe16c Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 16 May 2022 19:08:25 +0700 Subject: [PATCH] Colored floor tiles and tritanium block --- colorizer.js | 85 +++++++ .../ru/dbotthepony/mc/otm/datagen/DataGen.kt | 25 ++- .../ru/dbotthepony/mc/otm/registry/MBlocks.kt | 22 +- .../ru/dbotthepony/mc/otm/registry/MItems.kt | 12 +- .../ru/dbotthepony/mc/otm/registry/MNames.kt | 1 - .../dbotthepony/mc/otm/registry/MRegistry.kt | 210 +++++++++++++++++- .../block/decorative/floor_tiles_black.png | Bin 0 -> 439 bytes .../block/decorative/floor_tiles_blue.png | Bin 0 -> 533 bytes .../block/decorative/floor_tiles_brown.png | Bin 0 -> 524 bytes .../block/decorative/floor_tiles_cyan.png | Bin 0 -> 534 bytes .../block/decorative/floor_tiles_gray.png | Bin 0 -> 510 bytes .../block/decorative/floor_tiles_green.png | Bin 0 -> 503 bytes .../decorative/floor_tiles_light_blue.png | Bin 0 -> 564 bytes .../decorative/floor_tiles_light_gray.png | Bin 0 -> 536 bytes .../block/decorative/floor_tiles_lime.png | Bin 0 -> 546 bytes .../block/decorative/floor_tiles_magenta.png | Bin 0 -> 553 bytes .../block/decorative/floor_tiles_orange.png | Bin 0 -> 564 bytes .../block/decorative/floor_tiles_pink.png | Bin 0 -> 564 bytes .../block/decorative/floor_tiles_purple.png | Bin 0 -> 547 bytes .../block/decorative/floor_tiles_red.png | Bin 0 -> 521 bytes ...{floor_tiles.png => floor_tiles_white.png} | Bin .../block/decorative/floor_tiles_yellow.png | Bin 0 -> 564 bytes .../decorative/tritanium_block_black.png | Bin 0 -> 456 bytes .../block/decorative/tritanium_block_blue.png | Bin 0 -> 546 bytes .../decorative/tritanium_block_brown.png | Bin 0 -> 527 bytes .../block/decorative/tritanium_block_cyan.png | Bin 0 -> 555 bytes .../block/decorative/tritanium_block_gray.png | Bin 0 -> 519 bytes .../decorative/tritanium_block_green.png | Bin 0 -> 531 bytes .../decorative/tritanium_block_light_blue.png | Bin 0 -> 577 bytes .../decorative/tritanium_block_light_gray.png | Bin 0 -> 551 bytes .../block/decorative/tritanium_block_lime.png | Bin 0 -> 565 bytes .../decorative/tritanium_block_magenta.png | Bin 0 -> 570 bytes .../decorative/tritanium_block_orange.png | Bin 0 -> 574 bytes .../block/decorative/tritanium_block_pink.png | Bin 0 -> 573 bytes .../decorative/tritanium_block_purple.png | Bin 0 -> 555 bytes .../block/decorative/tritanium_block_red.png | Bin 0 -> 537 bytes ...olorless.png => tritanium_block_white.png} | Bin .../decorative/tritanium_block_yellow.png | Bin 0 -> 577 bytes 38 files changed, 316 insertions(+), 39 deletions(-) create mode 100644 colorizer.js create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_black.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_blue.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_brown.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_cyan.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_gray.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_green.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_light_blue.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_light_gray.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_lime.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_magenta.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_orange.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_pink.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_purple.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_red.png rename src/main/resources/assets/overdrive_that_matters/textures/block/decorative/{floor_tiles.png => floor_tiles_white.png} (100%) create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_yellow.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_black.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_blue.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_brown.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_cyan.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_gray.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_green.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_light_blue.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_light_gray.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_lime.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_magenta.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_orange.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_pink.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_purple.png create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_red.png rename src/main/resources/assets/overdrive_that_matters/textures/block/decorative/{tritanium_block_colorless.png => tritanium_block_white.png} (100%) create mode 100644 src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_yellow.png diff --git a/colorizer.js b/colorizer.js new file mode 100644 index 000000000..c9f848298 --- /dev/null +++ b/colorizer.js @@ -0,0 +1,85 @@ + +// Использует Image Magick для автоматической перекраски текстур + +const fs = require('fs') +const root_main = './src/main/resources/assets/overdrive_that_matters/textures/' +const child_process = require('child_process') + +const args = process.argv.slice(2) + +if (args.length == 0) { + console.error('No texture(s) names specified.') + process.exit(2) +} + +const colors = [ + ['orange', [245, 116, 16]], + ['magenta', [186, 63, 175]], + ['light_blue', [59, 180, 219]], + ['yellow', [252, 199, 36]], + ['lime', [111, 187, 24]], + ['pink', [243, 139, 170]], + ['gray', [62, 66, 70]], + ['light_gray', [140, 140, 131]], + ['cyan', [22, 134, 145]], + ['purple', [116, 38, 169]], + ['blue', [51, 53, 155]], + ['brown', [114, 71, 40]], + ['green', [84, 109, 28]], + ['red', [156, 37, 34]], + ['black', [31, 31, 35]], +] + +process.stderr.setMaxListeners(40) +process.stdout.setMaxListeners(40) + +for (const texture of args) { + if (!fs.existsSync(`${root_main}${texture}.png`)) { + process.stderr.write(`${texture}.png does not exist\n`) + continue + } + + const splitted = texture.split('/') + const last = splitted.pop() + const combined = splitted.join('/') + + const basedir = `${root_main}${combined}` + + for (const color of colors) { + (async function() { + const identify = child_process.spawn('magick', [ + 'identify', + `${root_main}${texture}.png`, + ]) + + identify.stderr.pipe(process.stderr) + + const chunks = [] + identify.stdout.on('data', (a) => chunks.push(a)) + + await new Promise((resolve) => { + identify.on('close', () => resolve()) + }) + + const chunk = chunks[0].toString('utf-8') + const size = chunk.match(/PNG ([0-9]+)x([0-9]+)/) + const width = parseInt(size[1]) + const height = parseInt(size[2]) + + const name = color[0] + const rgb = color[1] + const magick = child_process.spawn('magick', [ + 'convert', + `${root_main}${texture}.png`, + '-size', `${width}x${height}`, + `xc:rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`, + '-compose', 'Multiply', + '-composite', + //'-layers', 'merge', + `${basedir}/${last.replace(/_colorless/, '').replace(/_white/, '')}_${name}.png`]) + + magick.stdout.pipe(process.stdout) + magick.stderr.pipe(process.stderr) + })() + } +} diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt index dd815a3ca..1c5671552 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt @@ -18,8 +18,6 @@ import net.minecraftforge.fml.common.Mod import net.minecraftforge.forge.event.lifecycle.GatherDataEvent import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.block.* -import ru.dbotthepony.mc.otm.registry.MBlocks -import ru.dbotthepony.mc.otm.registry.MItems import ru.dbotthepony.mc.otm.block.entity.worker.WorkerState import ru.dbotthepony.mc.otm.data.LootTableBasicAppender import ru.dbotthepony.mc.otm.datagen.blocks.BatteryBankProvider @@ -32,8 +30,7 @@ import ru.dbotthepony.mc.otm.datagen.loot.TileNbtCopy import ru.dbotthepony.mc.otm.datagen.models.BlockMatteryModelProvider import ru.dbotthepony.mc.otm.datagen.recipes.MatteryRecipeProvider import ru.dbotthepony.mc.otm.datagen.recipes.has -import ru.dbotthepony.mc.otm.registry.MItemTags -import ru.dbotthepony.mc.otm.registry.MNames +import ru.dbotthepony.mc.otm.registry.* @Mod.EventBusSubscriber(modid = DataGen.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) object DataGen { @@ -108,6 +105,17 @@ object DataGen { } } + private fun decoratives(list: ColoredDecorativeBlock) { + for (block in list.blocks) { + decorativeCubeAll(block) + lootTableProvider.simpleBlock(block) + } + + for (item in list.items) { + itemModelProvider.block(item) + } + } + @SubscribeEvent @JvmStatic @Suppress("unused") @@ -131,10 +139,11 @@ object DataGen { decorativeCubeAll(MBlocks.CRATE_LIST) decorativeCubeAll(MBlocks.CARBON_FIBRE_BLOCK) decorativeCubeAll(MBlocks.TRITANIUM_BLOCK) - decorativeCubeAll(MBlocks.TRITANIUM_BLOCK_COLORLESS) decorativeCubeAll(MBlocks.VENT) decorativeCubeAll(MBlocks.VENT_ALTERNATIVE) - decorativeCubeAll(MBlocks.FLOOR_TILES) + + decoratives(MRegistry.TRITANIUM_BLOCK) + decoratives(MRegistry.FLOOR_TILES) for (glass in MBlocks.INDUSTRIAL_GLASS_LIST) { decorativeCubeAll(glass) @@ -305,10 +314,8 @@ object DataGen { block(MItems.TRITANIUM_RAW_BLOCK) block(MItems.ITEM_MONITOR) block(MItems.TRITANIUM_BLOCK) - block(MItems.TRITANIUM_BLOCK_COLORLESS) block(MItems.VENT) block(MItems.VENT_ALTERNATIVE) - block(MItems.FLOOR_TILES) for (glass in MItems.INDUSTRIAL_GLASS_LIST) { block(glass) @@ -465,10 +472,8 @@ object DataGen { simpleBlock(MBlocks.CARBON_FIBRE_BLOCK) simpleBlock(MBlocks.TRITANIUM_RAW_BLOCK) simpleBlock(MBlocks.TRITANIUM_BLOCK) - simpleBlock(MBlocks.TRITANIUM_BLOCK_COLORLESS) simpleBlock(MBlocks.VENT) simpleBlock(MBlocks.VENT_ALTERNATIVE) - simpleBlock(MBlocks.FLOOR_TILES) simpleBlock(MBlocks.TRITANIUM_STRIPED_BLOCK) simpleBlock(MBlocks.MATTER_CABLE) simpleBlock(MBlocks.GRAVITATION_STABILIZER) 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 adaa9e679..ff1a2cccb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt @@ -17,6 +17,7 @@ import net.minecraftforge.registries.ForgeRegistries import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.block.* + object MBlocks { private val registry = DeferredRegister.create(ForgeRegistries.BLOCKS, OverdriveThatMatters.MOD_ID) @@ -97,13 +98,9 @@ object MBlocks { .strength(4f) ) } - val TRITANIUM_BLOCK_COLORLESS: Block by registry.register(MNames.TRITANIUM_BLOCK_COLORLESS) { Block( - BlockBehaviour.Properties.of(Material.METAL, DyeColor.WHITE) - .sound(SoundType.BASALT) - .requiresCorrectToolForDrops() - .explosionResistance(80f) - .strength(4f) - ) } + init { + MRegistry.TRITANIUM_BLOCK.registerBlocks(registry) + } val TRITANIUM_STRIPED_BLOCK: Block by registry.register(MNames.TRITANIUM_STRIPED_BLOCK) { Block( BlockBehaviour.Properties.of(Material.METAL, MaterialColor.COLOR_LIGHT_BLUE) @@ -121,13 +118,6 @@ object MBlocks { .strength(3f) ) } - val FLOOR_TILES: Block by registry.register(MNames.FLOOR_TILES) { Block( - BlockBehaviour.Properties.of(Material.STONE, MaterialColor.COLOR_LIGHT_GRAY) - .sound(SoundType.STONE) - .requiresCorrectToolForDrops() - .strength(3f) - ) } - val VENT: Block by registry.register(MNames.VENT) { Block( BlockBehaviour.Properties.of(Material.METAL, MaterialColor.COLOR_LIGHT_BLUE) .sound(SoundType.BASALT) @@ -144,6 +134,10 @@ object MBlocks { .strength(4f) ) } + init { + MRegistry.FLOOR_TILES.registerBlocks(registry) + } + val CARGO_CRATE: Block by registry.register(MNames.CARGO_CRATE) { CargoCrateBlock(null) } val CARGO_CRATE_WHITE: Block by registry.register(MNames.CARGO_CRATE_WHITE) { CargoCrateBlock(DyeColor.WHITE) } val CARGO_CRATE_ORANGE: Block by registry.register(MNames.CARGO_CRATE_ORANGE) { CargoCrateBlock(DyeColor.ORANGE) } 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 ce9786a7d..a803cdc02 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt @@ -291,13 +291,21 @@ object MItems { ) val TRITANIUM_BLOCK: Item by registry.register(MNames.TRITANIUM_BLOCK) { BlockItem(MBlocks.TRITANIUM_BLOCK, DEFAULT_PROPERTIES) } - val TRITANIUM_BLOCK_COLORLESS: Item by registry.register(MNames.TRITANIUM_BLOCK_COLORLESS) { BlockItem(MBlocks.TRITANIUM_BLOCK_COLORLESS, DEFAULT_PROPERTIES) } + + init { + MRegistry.TRITANIUM_BLOCK.registerItems(registry) + } + val VENT: Item by registry.register(MNames.VENT) { BlockItem(MBlocks.VENT, DEFAULT_PROPERTIES) } val VENT_ALTERNATIVE: Item by registry.register(MNames.VENT_ALTERNATIVE) { BlockItem(MBlocks.VENT_ALTERNATIVE, DEFAULT_PROPERTIES) } - val FLOOR_TILES: Item by registry.register(MNames.FLOOR_TILES) { BlockItem(MBlocks.FLOOR_TILES, DEFAULT_PROPERTIES) } + val TRITANIUM_STRIPED_BLOCK: Item by registry.register(MNames.TRITANIUM_STRIPED_BLOCK) { BlockItem(MBlocks.TRITANIUM_STRIPED_BLOCK, DEFAULT_PROPERTIES) } val CARBON_FIBRE_BLOCK: Item by registry.register(MNames.CARBON_FIBRE_BLOCK) { BlockItem(MBlocks.CARBON_FIBRE_BLOCK, DEFAULT_PROPERTIES) } + init { + MRegistry.FLOOR_TILES.registerItems(registry) + } + val INDUSTRIAL_GLASS: Item by registry.register(MRegistry.INDUSTRIAL_GLASS.name) { BlockItem(MBlocks.INDUSTRIAL_GLASS, DEFAULT_PROPERTIES) } val INDUSTRIAL_GLASS_WHITE: Item by registry.register(MRegistry.INDUSTRIAL_GLASS_WHITE.name) { BlockItem(MBlocks.INDUSTRIAL_GLASS_WHITE, DEFAULT_PROPERTIES) } val INDUSTRIAL_GLASS_ORANGE: Item by registry.register(MRegistry.INDUSTRIAL_GLASS_ORANGE.name) { BlockItem(MBlocks.INDUSTRIAL_GLASS_ORANGE, DEFAULT_PROPERTIES) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt index 6209e723a..1bf52c07c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt @@ -58,7 +58,6 @@ object MNames { // building blocks const val TRITANIUM_BLOCK = "tritanium_block" - const val TRITANIUM_BLOCK_COLORLESS = "tritanium_block_colorless" const val TRITANIUM_STRIPED_BLOCK = "tritanium_striped_block" const val CARBON_FIBRE_BLOCK = "carbon_fibre_block" diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt index 368300822..0c1841f7c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt @@ -4,7 +4,9 @@ import net.minecraft.core.BlockPos import net.minecraft.resources.ResourceLocation import net.minecraft.world.damagesource.DamageSource import net.minecraft.world.entity.EntityType +import net.minecraft.world.item.BlockItem import net.minecraft.world.item.DyeColor +import net.minecraft.world.item.Item import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.block.* import net.minecraft.world.level.block.state.BlockBehaviour @@ -12,15 +14,19 @@ import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.material.Material import net.minecraft.world.level.material.MaterialColor import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext +import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.ForgeRegistry import net.minecraftforge.registries.IForgeRegistry import net.minecraftforge.registries.NewRegistryEvent import net.minecraftforge.registries.RegistryBuilder +import net.minecraftforge.registries.RegistryObject import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.android.AndroidFeatureType import ru.dbotthepony.mc.otm.android.AndroidResearchType import java.util.function.Supplier +import kotlin.properties.Delegates import kotlin.properties.ReadOnlyProperty +import kotlin.properties.ReadWriteProperty import kotlin.reflect.KProperty class CrateProperties(val color: MaterialColor, val name: String) { @@ -85,6 +91,171 @@ private class RegistryDelegate(private val name: String) { } } +private class WriteOnce : ReadWriteProperty { + private var value: V? = null + + override fun getValue(thisRef: Any, property: KProperty<*>): V { + return checkNotNull(value) { "Property wasn't initialized" } + } + + override fun setValue(thisRef: Any, property: KProperty<*>, value: V) { + if (this.value != null) { + throw IllegalStateException("Property already initialized") + } + + this.value = value + } +} + +class ColoredDecorativeBlock( + val baseName: String, + private val propertySupplier: (DyeColor) -> BlockBehaviour.Properties +) { + private var _whiteBlock: RegistryObject by WriteOnce() + private var _orangeBlock: RegistryObject by WriteOnce() + private var _magentaBlock: RegistryObject by WriteOnce() + private var _lightBlueBlock: RegistryObject by WriteOnce() + private var _yellowBlock: RegistryObject by WriteOnce() + private var _limeBlock: RegistryObject by WriteOnce() + private var _pinkBlock: RegistryObject by WriteOnce() + private var _grayBlock: RegistryObject by WriteOnce() + private var _lightGrayBlock: RegistryObject by WriteOnce() + private var _cyanBlock: RegistryObject by WriteOnce() + private var _purpleBlock: RegistryObject by WriteOnce() + private var _blueBlock: RegistryObject by WriteOnce() + private var _brownBlock: RegistryObject by WriteOnce() + private var _greenBlock: RegistryObject by WriteOnce() + private var _redBlock: RegistryObject by WriteOnce() + private var _blackBlock: RegistryObject by WriteOnce() + + val whiteBlock: Block get() = _whiteBlock.get() + val orangeBlock: Block get() = _orangeBlock.get() + val magentaBlock: Block get() = _magentaBlock.get() + val lightBlueBlock: Block get() = _lightBlueBlock.get() + val yellowBlock: Block get() = _yellowBlock.get() + val limeBlock: Block get() = _limeBlock.get() + val pinkBlock: Block get() = _pinkBlock.get() + val grayBlock: Block get() = _grayBlock.get() + val lightGrayBlock: Block get() = _lightGrayBlock.get() + val cyanBlock: Block get() = _cyanBlock.get() + val purpleBlock: Block get() = _purpleBlock.get() + val blueBlock: Block get() = _blueBlock.get() + val brownBlock: Block get() = _brownBlock.get() + val greenBlock: Block get() = _greenBlock.get() + val redBlock: Block get() = _redBlock.get() + val blackBlock: Block get() = _blackBlock.get() + + private var _whiteItem: RegistryObject by WriteOnce() + private var _orangeItem: RegistryObject by WriteOnce() + private var _magentaItem: RegistryObject by WriteOnce() + private var _lightBlueItem: RegistryObject by WriteOnce() + private var _yellowItem: RegistryObject by WriteOnce() + private var _limeItem: RegistryObject by WriteOnce() + private var _pinkItem: RegistryObject by WriteOnce() + private var _grayItem: RegistryObject by WriteOnce() + private var _lightGrayItem: RegistryObject by WriteOnce() + private var _cyanItem: RegistryObject by WriteOnce() + private var _purpleItem: RegistryObject by WriteOnce() + private var _blueItem: RegistryObject by WriteOnce() + private var _brownItem: RegistryObject by WriteOnce() + private var _greenItem: RegistryObject by WriteOnce() + private var _redItem: RegistryObject by WriteOnce() + private var _blackItem: RegistryObject by WriteOnce() + + val whiteItem: Item get() = _whiteItem.get() + val orangeItem: Item get() = _orangeItem.get() + val magentaItem: Item get() = _magentaItem.get() + val lightBlueItem: Item get() = _lightBlueItem.get() + val yellowItem: Item get() = _yellowItem.get() + val limeItem: Item get() = _limeItem.get() + val pinkItem: Item get() = _pinkItem.get() + val grayItem: Item get() = _grayItem.get() + val lightGrayItem: Item get() = _lightGrayItem.get() + val cyanItem: Item get() = _cyanItem.get() + val purpleItem: Item get() = _purpleItem.get() + val blueItem: Item get() = _blueItem.get() + val brownItem: Item get() = _brownItem.get() + val greenItem: Item get() = _greenItem.get() + val redItem: Item get() = _redItem.get() + val blackItem: Item get() = _blackItem.get() + + val blocks = LazyList( + { _whiteBlock.get() }, + { _orangeBlock.get() }, + { _magentaBlock.get() }, + { _lightBlueBlock.get() }, + { _yellowBlock.get() }, + { _limeBlock.get() }, + { _pinkBlock.get() }, + { _grayBlock.get() }, + { _lightGrayBlock.get() }, + { _cyanBlock.get() }, + { _purpleBlock.get() }, + { _blueBlock.get() }, + { _brownBlock.get() }, + { _greenBlock.get() }, + { _redBlock.get() }, + { _blackBlock.get() }, + ) + + val items = LazyList( + { _whiteItem.get() }, + { _orangeItem.get() }, + { _magentaItem.get() }, + { _lightBlueItem.get() }, + { _yellowItem.get() }, + { _limeItem.get() }, + { _pinkItem.get() }, + { _grayItem.get() }, + { _lightGrayItem.get() }, + { _cyanItem.get() }, + { _purpleItem.get() }, + { _blueItem.get() }, + { _brownItem.get() }, + { _greenItem.get() }, + { _redItem.get() }, + { _blackItem.get() }, + ) + + fun registerBlocks(registry: DeferredRegister) { + _whiteBlock = registry.register("${baseName}_white") { Block(propertySupplier.invoke(DyeColor.WHITE)) } + _orangeBlock = registry.register("${baseName}_orange") { Block(propertySupplier.invoke(DyeColor.ORANGE)) } + _magentaBlock = registry.register("${baseName}_magenta") { Block(propertySupplier.invoke(DyeColor.MAGENTA)) } + _lightBlueBlock = registry.register("${baseName}_light_blue") { Block(propertySupplier.invoke(DyeColor.LIGHT_BLUE)) } + _yellowBlock = registry.register("${baseName}_yellow") { Block(propertySupplier.invoke(DyeColor.YELLOW)) } + _limeBlock = registry.register("${baseName}_lime") { Block(propertySupplier.invoke(DyeColor.LIME)) } + _pinkBlock = registry.register("${baseName}_pink") { Block(propertySupplier.invoke(DyeColor.PINK)) } + _grayBlock = registry.register("${baseName}_gray") { Block(propertySupplier.invoke(DyeColor.GRAY)) } + _lightGrayBlock = registry.register("${baseName}_light_gray") { Block(propertySupplier.invoke(DyeColor.LIGHT_GRAY)) } + _cyanBlock = registry.register("${baseName}_cyan") { Block(propertySupplier.invoke(DyeColor.CYAN)) } + _purpleBlock = registry.register("${baseName}_purple") { Block(propertySupplier.invoke(DyeColor.PURPLE)) } + _blueBlock = registry.register("${baseName}_blue") { Block(propertySupplier.invoke(DyeColor.BLUE)) } + _brownBlock = registry.register("${baseName}_brown") { Block(propertySupplier.invoke(DyeColor.BROWN)) } + _greenBlock = registry.register("${baseName}_green") { Block(propertySupplier.invoke(DyeColor.GREEN)) } + _redBlock = registry.register("${baseName}_red") { Block(propertySupplier.invoke(DyeColor.RED)) } + _blackBlock = registry.register("${baseName}_black") { Block(propertySupplier.invoke(DyeColor.BLACK)) } + } + + fun registerItems(registry: DeferredRegister) { + _whiteItem = registry.register("${baseName}_white") { BlockItem(_whiteBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _orangeItem = registry.register("${baseName}_orange") { BlockItem(_orangeBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _magentaItem = registry.register("${baseName}_magenta") { BlockItem(_magentaBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _lightBlueItem = registry.register("${baseName}_light_blue") { BlockItem(_lightBlueBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _yellowItem = registry.register("${baseName}_yellow") { BlockItem(_yellowBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _limeItem = registry.register("${baseName}_lime") { BlockItem(_limeBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _pinkItem = registry.register("${baseName}_pink") { BlockItem(_pinkBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _grayItem = registry.register("${baseName}_gray") { BlockItem(_grayBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _lightGrayItem = registry.register("${baseName}_light_gray") { BlockItem(_lightGrayBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _cyanItem = registry.register("${baseName}_cyan") { BlockItem(_cyanBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _purpleItem = registry.register("${baseName}_purple") { BlockItem(_purpleBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _blueItem = registry.register("${baseName}_blue") { BlockItem(_blueBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _brownItem = registry.register("${baseName}_brown") { BlockItem(_brownBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _greenItem = registry.register("${baseName}_green") { BlockItem(_greenBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _redItem = registry.register("${baseName}_red") { BlockItem(_redBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + _blackItem = registry.register("${baseName}_black") { BlockItem(_blackBlock.get(), Item.Properties().tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB).stacksTo(64)) } + } +} + object MRegistry { private val features = RegistryDelegate>>("ANDROID_FEATURES") private val research = RegistryDelegate>>("ANDROID_RESEARCH") @@ -92,19 +263,19 @@ object MRegistry { val ANDROID_FEATURES get() = features.get() as ForgeRegistry> val ANDROID_RESEARCH get() = research.get() as ForgeRegistry> - fun initialize(context: FMLJavaModLoadingContext) { - context.modEventBus.addListener(this::register) - context.modEventBus.register(MStats) - context.modEventBus.register(LootModifiers) + val TRITANIUM_BLOCK = ColoredDecorativeBlock(MNames.TRITANIUM_BLOCK) { + BlockBehaviour.Properties.of(Material.METAL, it.materialColor) + .sound(SoundType.BASALT) + .requiresCorrectToolForDrops() + .explosionResistance(80f) + .strength(4f) + } - MBlocks.register() - MBlockEntities.register() - MEntityTypes.register() - MMenus.register() - MItems.register() - AndroidFeatures.register() - AndroidResearch.register() - MSoundEvents.register() + val FLOOR_TILES = ColoredDecorativeBlock(MNames.FLOOR_TILES) { + BlockBehaviour.Properties.of(Material.STONE, it.materialColor) + .sound(SoundType.STONE) + .requiresCorrectToolForDrops() + .strength(3f) } private fun register(event: NewRegistryEvent) { @@ -188,4 +359,19 @@ object MRegistry { INDUSTRIAL_GLASS_RED, INDUSTRIAL_GLASS_BLACK, ) + + fun initialize(context: FMLJavaModLoadingContext) { + context.modEventBus.addListener(this::register) + context.modEventBus.register(MStats) + context.modEventBus.register(LootModifiers) + + MBlocks.register() + MBlockEntities.register() + MEntityTypes.register() + MMenus.register() + MItems.register() + AndroidFeatures.register() + AndroidResearch.register() + MSoundEvents.register() + } } diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_black.png new file mode 100644 index 0000000000000000000000000000000000000000..bca87104817d2e7e5b8874e89c4e55eeadf09195 GIT binary patch literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF3<&Kd?o04YR!CAGp+e@eURXJ!%pZdhsYxv3G%;Y)huUN5Id!X)=@(Pkrd)4(dOmXU=1pf(TqFCYeg5a2XYy=un_~x?x1)bS+3y<0 z^;ea|+RP6v0y;po#5JNMC9x#cD!C{XNHG{07#ZmrnCcpug&3GwnVJKUwt<0_fk9cs gjbs!Jx%nxXX_dG&u(KxI2WnvOboFyt=akR{07F@V1ONa4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..e21597d4dc52e52bc503915474e618b387f28c2f GIT binary patch literal 533 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>nB+pMG4uC3dmrCq11*P*3duc=)puMn%L zRimL*ZDcZ2Q>$7-t4d3!;s5{tDxB_*frc|CdAqwvm8L&20&+MDJR*x382I*sFrx)) zunJI+y~NYkmHip30GFB3jhyqJfkJCMT^vIsF6*9iOge19!E#`#a3`yZ%*l0^|NUQl zG;?P`LL*~C)7y_{_AQ*ov_)qk+fQwW6>e5bCLflW{e|Q5-V+>~ub*jg3y)n|`u3FU zaaq;yiFOiZfwLxg>3?_ldPem7-!C>+cdt)>{Me#z*4{;btnL1`H#PkHl9~I;Y*KiPY9{}Ydc178l4EGbo~0A==kGiBMdeBQKPJW9 z9J~IOF8Bv@w`z%NL`h0wNvc(HQ7VvPFfuSQ(ls#EH8cw`Ftai>2O@0)11kfAvWOeW eC>nC}Q!>*kacf{_O}G!#z~JfX=d#Wzp$P!&p|V2& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a8874f8f867d78946273b6d51e3187a53eb2d0 GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>6iNjPgs6uD~@x@jcaDJR-0CD|&)SSlpi02#`$R*EThKvKa)TOz?mDcVvY%0i*Q zO+C^=KF&(<|Ns9H&pqRS#xf>(ySqrt&TN$faySb-B8wRq`1XS^qXlcQ3Q&-}#M9T6 z{TZtOmzmLxob#W7LMuI8977~7o1VL!ci4c3IY7-fLTop9rS1BvH0#~@v_nQ`pDAT#UbT3lvv$_*IZ-cr zW7k~K+OfiDcZJZ!@DG>!X4p5{A1}Pq$NT%O#N*c$f34#}=9nqIi~5q2bnMYm4QK7#EoPW4Y~O#nQ4`{HL$ZL R+y`o4@O1TaS?83{1OVk2un+(M literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..7709a8c5d523bcd4b308f63689c44676d3228962 GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>!XCAGq(bwasi!lm^>dF8wT;lhPg zLfIvPS;b;4{X*Hrf|*7C|Np-`64IAfBxyNgt5`V%7{hqJ&VvY3H^Z$Ah#TCfJI z00r4gJbhi+pRo#XnHk;4IsX|bwARzbF+}3B?z!lq!v-9z7qXXcs#tu&>+ZYy#YZ!L zI38|z$JoI8`|;{uecNOm)+@bQ@Smx}btdnVgDczS-ib}knX>NJoUMxQf|}nw5@J?g z`=F!n!l{C}7Q0xyBY2fu;!2au;=<;itE!Q{*Y`Q+s&rrf14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>aed{_; zSW3<^{4Ke|GAs8EZ))M2--iqTTIyZne=U%{!_VYek=<9L^!T8J;~N%C)_s4}F=6YC zmh~^4!WXN*{36X$14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>ujJ=j7i?^E+UiepELz>I14-?iy0XB_Jc5^1#7ShP>{XE)7O>#8LI%7nbD1$ z^Pho23p`yMLnJPnp1aM*tjNIl@^;(*|LbM9YwD{A>$$ru@z^_MZ`U-Xq-#B@ z-?Z88Uaaom{n9xhOIdhd*IAZlk6NA=^d}u|Pwt!-_<%+D|^qQyZQ7pm-8!*y|?7w zTdnTVyGL2Hnw@pF+_v+-mvobXYB5eZ$D+7bFh#Sc$8glbfGSez?YhY(hxDV98;OXk;vd$@?2>>MSpDX|X literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_light_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..0325b4fa29e584eebe9d8b8278fba677a1c16ac0 GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>lJbRD9#EnKXb{Ws!Ydm+q(ac>2lQ)~p zJzy|pv%#cI$~nzOGj{4vSg${EgMR;7tBp7G``1}*x}n#*#&F7(|Ns9#{wkRPw2m>! z+ucQBbGB^*ki%Kv5n0T@z_%ZS87)|YRe*x*C7!;n?9W&QxXg@h859{6JLUQ{@OaA4nm~4?s~qaVUT zD|2=Po;!CmP3pe)z85++4vi6iCpFcrjk0cAKCAYXe1-~l>{Hw8*MOc-Epd$~Nl7e8 zwMs5Z1yT$~21Z7@2Bx}(W+4V14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>;OkH}&M2EP3u%xJ+H ztO68dFY)wsWq-yhz-4B1Bj@~QpwN0x7sn8Z%ev=oZ)!H+V7(wKz4N%5TlVk&_Ej5} z?=d*cP|fIY@Y9N$;#YziOuI8!|B5^4oXSz)&&!H9aW{0E)7jAZw&q7-Q>I)!s%rMe zq*>W*;mt!^7q1c0Nwn+`u>5o+$NF5&t+z7zhp%sZzkTtdKQj0KyuP-CeR|PsBZpNo zHH#*BuRdP`(kYX@0Ff!6LFx53Q3o$UWGBpPxZ36=<1B0@N g8_6gda`RI%(<*UmU}sIZ57fZm>FVdQ&MBb@0EyzjApigX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_lime.png new file mode 100644 index 0000000000000000000000000000000000000000..d67da9e55d05a8f99b183dbceb655ff7cb086764 GIT binary patch literal 546 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>b)5S4F;A!yfQDvQz6tFvCWT&5g5)!w>uEI;on!TKH?K zvEoISb!*KsA9Yr{-d*1u_5H$;z@w3Oo*jryIU~ARCRxr``ug^VZ+E_`q_V<14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>68U#(-)b~m}fS1hH?L5^O-YD z`llQB6{uy-HJvimsAsZK_jbEAQ;fQI*sYyp*g4Z=!vFvO_r^Uf16stGp!(hZ3ww}c(R8})NiYMXO~~=o3i?c$l>VFryC!;ZM8Cw*4($f z>SCmYLubU_Nlp9K-nKX_JYoJn?(bi@iejB-bTH+c}l9E`GYL#4+3Zxi}42+C) z4NP?n%|Z;!tW3>;NZY``%D|v3;zlxxhTQy=%(P0}8rWGA?gKS2c)I$ztaD0e0suRC B#L)l% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..b799704dab2b7783487f5a15d7d74b281454a84c GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>g`>9yqKs4{E1m6Gu|4+5-&jMPK1i*=LoSadqJ-G2Lf|I;M%`g1;N)Ayd z4a;=XGgG_*Z>pVg{Tg_@Ws1tBWiwPd^KY!Q-o3rG>f0hwZ;|vuY2NaQ$!lih9=GfZ zv%Y=#L+P7p3CRsHeWkJc|Hn^HtN0LfE>_B8>Rf*op@~6t-^xF(+o^O!=ibo|VWE{d zI|9$0JDMhS-+SK+9UF(nh`*DX>efbCw=JJl`$|4Tg**1C?e%LwPpFo-MwFx^mZVxG z7o`Fz1|tI_BV7YiT|=`F12ZdAb0E?-Ft9Q(D2up}jG`eoKP5A*61N6+)`a^&4Gf;H KelF{r5}E*QR>e^O literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_pink.png new file mode 100644 index 0000000000000000000000000000000000000000..3de3c029a0a8904680971eb35094a533fcf129b2 GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>EB5EMo+#@1|NnpM+@3!`>ll-~ z-CYzmXWKRaIh+L^k;M!QeEUI|(SkKt1t`c~;_2(k{)|qWL|&HM{PPkgW8$xzfVXeMm0!W_YiUX&nnPu zB&}hYZhB^lSKv*xQ?6eFkGD)wxwLGCN@xC!mDanrw^n^yB1h=og3iTCc}$(_&muH2sP0?&$8|fEj_BMw`XMZ| zGG|BNxpPO;r0#p~d!b|F&=~P|Qd8a9DC@T6vua<-XQ*(;KDE7m4d@Bg64!{5l*E!$ ztK_0oAjM#0U}U6gV5)0q7Ghv#WoiyY+6D$z1_osjH14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>>e6Qe74!*Iul)JX)?bLB9L{|NjA%C-Q-|FeZ7syU4y~E}RJDa29w( z7BevL?FV5-3)Wy2pdfpRr>`sfGgbjEGou?h=RX65HhQ`^hDcmi?Y~)e*nq>u-A{G1 zq~)heCU5`Oryu9z=V@m?!^*(5?6`QTlP+sUZk`hFCr*beF{TRMS>F$+bkDpUwPg11 z;(|jxYc+BgKI`)RcIAx5rtc>58fSyv=B3P%jp>Z&pX}~F=cDWn%WZ3ev`-y1JpcLa z|6Lg;nx|*q@6~=ct7_4uX&*Q5)h&O|ytOoJPQ~usw&6BQ%6}bGIde_F#I(+M)r#k? zTt9mS3n#RHGXKZ8q>}U8G->6XK*y_=xJHzuB$lLFB^RXvDF!10BO_e{Q(Z%|5CbzS rQ*$8FHZZU14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>%)=K%{M8U}a!X7I7mPMMG|WN@iLmZVl|L S3HN~-7(8A5T-G@yGywopj;_4` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_white.png similarity index 100% rename from src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles.png rename to src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_white.png diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/floor_tiles_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..7260ff5bdc3c920fed46e8cef56f2961a759562a GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>I;!&LxXP_H^4C|%-&iewW})oWm2x-N$lqQoe{H4wxka*f z*2$k=EO&O1?DTT6D=Xwq&6hpBK=#Bu*&j!gPtKG5c~s@t9GMGCV)5S4F z;JK_x9GRZ;M2|MbZnUdCMmzubGj1 z+_Eps`u61yrEjVwBsawLmB#M>A3r^<;zQ86SSgRGbNyL_CI;1gEC0A|r_vFfdq+Qn zg;wV52t0T0Xqwc0?|m zx6uBxt?|Yw#z%VF=IuSbW>Ww8BOlv29S&+AU@8m!7VIM%>Z7bMLG;hzd&Nzx+kO@F zEaftNClOm4QK7#EoPW4Y~O#nQ4`{HL$ZL+y`o4@O1TaS?83{1OP?{g--wg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..bb4605b982d3c9fa8e1bac9ae2a66ae471397a5a GIT binary patch literal 546 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a> z=(TI>HtXoM>FBj;>oh5==E%r~Ny`LF%LGcx1j)#T%E*T3>UAiqX6x#AsHo-`o6gqO zX;f7&GBTMVBNwKulBuMUVQe}}O}*I2WTuL0?*IS)Q_dMk11(}q@^*KTE8@Cone4SGRFD>6cbYvL?_ zu}##q68-wB$E7^iWa8Jwz6`Oda+y14-LqN!(e~2|o;_D?3qNVxw&Q%|nR)kU5P5?SwwZt`|BqgyV)hf9t6-Y4{85kMq8kp)DnuQpcS(%yx pk+y+>m4QK7#EoPW4Y~O#nQ4`{HL$ZL+y`o4@O1TaS?83{1OR%eu!H~r literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..0da196ade4247b1db2db87dab1693a1ff90585f3 GIT binary patch literal 527 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>*;t(vHfs;G^csGXWvik)(Rk&K^#bdkG8ytQJ8iEM$Jy1j;& zuYt6WfwY~vScs`yp_|74|Nmq29KQn%XH4>TcabVhe_{mWa29w(7BevL9ROj*tZSW| zKtc8rPhVH|XRHF;Y$~5@)Y5=L%RF5iLnJP%P6#YwGURd2J?VAr_F16?TMGVnKWeZu z_1|YpP%NgX3=xz-ra7g2b!}!U3w_Dsw3%8$&C}QI=0qM2Q3B`IiU^XOgMV)ujzI?K))yor5ut8vk(j{9?)FK#IZ0z{p6~z*N`JEX2Uf%G4Z)v<(cb3=GO5ZX}~<$jwj5OsmAL Uft@wsK2QULr>mdKI;Vst0M2)*JOBUy literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..5f004ef762014c7311ecffe67c1f6ce563c0a8ec GIT binary patch literal 555 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>2^ZH26;$!Zrt)|N@VNW(xcTsS`0;r9376Ijm(}yfrSeB7i?vM@DyS4L ztP)7d5^L_`@ebsVPU4SBpFoGsSU&mWie|Nnpa=En(_Cn@>NQYT3)6t7H^+l&3(q?3ok!|lTC}}?c2{Ls?=KieA;%~DJjLRQg3ow>BL8G z8jGeL$bY;-x>MsaXRbd#+m6j1sxH4T=5O^250^{aI4iC)?DX{x<=%>}b;T!`MGNPD zp0Tz5_?H6Xm*YbAksE4ure?xi@1@Dq9HdwB{QuOw+43Bg!@1Z44$rjF6*2UngCB_w%`B& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..70690a2a53039c9566e3652c70d4742bf1d9718c GIT binary patch literal 519 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>TBuf>lvEZIlAiT8UFwO|BL70A3&2Clf2zsB;Vw1?ErE(3p^r=85sBufG}g$wN6f; zAbW|YuPggARsn7{l}|QmX+WWco-U3d5|>pcL>4hC3OGk+&D>y7@uuSBUw^5uF7hFY z^IV)+4zx@PYML&_v~QQ`vl+rMj_1luS=XcpJAdA-s&M+WTgH)DY9-cI8zpDxzBgdH z*SglCiaE0J=?UhEi?6nsO%@lvnR}t})tZjFby0o>+(nt+miy1NIy3d)ze@pX3pMAt zy*Mk?`#!YoQ{}metmT{u|6hN+Sr^n&)2ZFKc;AEX{5y8C&N?)i6BwQhswJ)wB`Jv| zsaDBFsX&Us$iT=57?iq(W+4V14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>ss;aSn}&w@#|XidnHI(`-oV235Vp$*ae6NWlQVZ z3Rrjw>sj;L1&Rh|%LM1hSo@0n|NlR0`sWQm^BI%8-Cd-a60R%(aySb-B8wRq_zr+D zW7f4!PM{!riKnkC`!iMnZZ?%qHfm`=q2-<~jv*44RVM@%9d_VxQf1tfT%MeN$t?GM z{e?%I^`{R+y9q`nbm?x~ux8<@+uQQxwvGOijpCF8-?_1=d3UoH)PFlayI~`$b#FQ?EB>3tn~4H2Wf1=k05eqOsjrF<^?P z*@oJe(J9N@s;XYfRed#G8{Z)OD09ZWStY8)`@Vj*-mB`gOZtRXocfR7?Cv&f3(^~! z@_|lPEpd$~Nl7e8wMs5Z1yT$~21Z7@2Bx}(W+4V14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>vO-e1_2yeTt&6NS-mu<$Q?qW? z|Ns9h{`i#vt!7N}c6U+P!uE3}ki%Kv5n0T@z;^(I8MCf+asma}OFVsD*`KiraI>j= zvQbL|3hnZAaSV~TEIQ$K&|wE2=i13vH#DBz_HvSwqVAvn_GOPH_hvjv?sdIlBQh~% z#(cGfFQaFk{_P%{Wt#sea{1=0S#e6?%QnO<4`B6F-o+`NSz7R6r|9;1Nu|BBXI}i{ z_Ik?NHLo}wW;4ZWZS-l_>XZIsrE}6ek9O7EC2fuGjc@Ik_)ytoLEyVr9}cuRO0`Xw z|7WB$b?VODKXhuI1nSD4{VsB3Zh#!~8^f@W>ifShd|tnLHAm$^hgrGDx&Or{FXNQ3 z6ko9x=nK^n*NBpo#FA92RP literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_light_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..290fb6bb87a2fdb32ce4eb3727609bd3040d298d GIT binary patch literal 551 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>qFX8phb*H-tI1PMO+HnKn`bt zM`SSr1K$AFY)wsWq-yhz|E%e$wn;=D74Ab#W6(Uvh0M5d4~fyoDWKv zt9s79yEJ-w-v9rzm0cel-NY}J*4H4c$yhkk=R@{c)A;O_PHV&>FQ2u2SpH<0$<^a5 z<*Sq*HDqqwI_vQHy-doyTOTqybhI0!ROiZhUJ6&=e`kY_%C$2Y=Tk2j_y^6gy|7N~ zNA2TV=0X>jnSXhCkfGdcW$Oxg-Mdz?OKlD%neF|wX4-nwK9fh9yUr={mmI0>N&fOr z?(pHWORS|i-#q93_m8n}3wzp}nIcj^*Q=JeMwFx^mZVxG7o`Fz1|tI_BV7YiT|=`F u12ZdAb0E?-Ft9Q(D2up}jG`eoKP5A*61N6+)`a^&4Gf;HelF{r5}E*U_`%5l literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_lime.png new file mode 100644 index 0000000000000000000000000000000000000000..97bf58f142dc9d806a9052aab923f5ee3ac0f666 GIT binary patch literal 565 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>#|5M|(f}GEo?NMQuI$fP1-RK%KG~?H0fn}Ex;TbNTo#>h zJLs?jk8|zht0jliZtJuvY;uytBT~a>8=@7x!KjbzpX9*tT?ZB z=gMU-ZHv;mcIzzUn&jpqoM%*3_(AS$?y`vcj}y~O>My9N-dZ=0p+w`uLZRDCH%^qa z#jB}YYb}Ymq!r3$moHJOd{{f=LWX~7g+jm*qdm1BXA7=;bLQ~T@Q2#xvwlj|Em4@) z@=4}FM^xb4&oh?JzrS*w(v!UniDJ*W|NUe9=geVv+&^{+&cptHiB=oi*V;Py>UftDnm{ Hr-UW|>w&zj literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_magenta.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7f5ba60a521e526a2f9832bc96028ae5cf4d03 GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>QtsHCnhV!CMm`wDaNKLC!{FFr7FcQHlNv`UAfqN zR+COuy>|I7`}MO;C(SjT(xKO|&2CMGa$=o!d97CIPWyFT`c2#I)->x>|NsAADu{Uj z&{D=EZ+91^*wmOcKn`btM`SSr1K$AFY)wsWq-yhz|E%e$wn;=D74el z#W6(Uvgm}|;KK$y&41Oh6fA?DA87@c3q2X}7Z3kUVMG!>`k|m4j~1Xz$iP zls@n3r<;F09BnwBS{@KAb}j8m_SxIFaGlZUS_@l7ro)pj%swJ)w zB`Jv|saDBFsX&Us$iT=**T7WQ&@9Bj%*xaph_nq1tPBjwB5ow3Xvob^$xN%nt%032 R;XY6UgQu&X%Q~loCIDiP%O?N; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..993d660e09e4f224f29afafe5ef1c2749ad766be GIT binary patch literal 574 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>2_*^WoCXoC8|NlCQ zg?&JK8I!!-U6i$wa;$(H&H|6fVg?4j10c+pb*+;VD9B#o>Fdh=j8%Y}P34n~S{hJj zm#2$kh{R>l3Ac+5Iq*2wPIkRfvRPo;!lk@h{{NqtW3yPiw`R@8j#=$WlXyN~Rxz=i zzO!b|>!8(@!so4GLoR=j+G*7K)vQ&^L+YaM4v*E%&F9zd_$snG`_9>(XXR1Lb5cY7 z8E%RE2Tr$}6=fiZtm21x2 zJ(~W|xIgP>&c5XeaxI@E68bkTy7l{Bdt7~Ntm_GFwo5tIaUcG(IiBFSR9nO2Eg U13PQNeV_&gPgg&ebxsLQ0FGqGmjD0& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_pink.png new file mode 100644 index 0000000000000000000000000000000000000000..6150820a80f518b2a29ed7ca8cafaf5df0e97d1e GIT binary patch literal 573 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>a<=D%v$imfKv3!5FyfBd(fbfx^)qRH~FbrwBa*r9UxPf*J; z{nC}|^K*00?&(g~4!>&hcA|9fjeFiJnwAJ2Zdv`s%<{*L)wex1ZaaGROh(;e-cxbr zUs)E!Hu_JE;7+i;ELkTxA%g4Wh9zgOn0zR8oo{Yb)23$fDppqRhN0)>55LaJyDiyd z$S)q>(r>f+>EhoLn|27FDsE7I*7Zu__>8K5e5Im_)@qk>?BhRt=MReEcx@|ocP-Ep zswJ)wB`Jv|saDBFsX&Us$iT=**T7WQ&@9Bj%*xaph_nq1tPBjwB5ow3Xvob^$xN%n Vt%032;XY6UgQu&X%Q~loCIFt{*%JT& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_purple.png new file mode 100644 index 0000000000000000000000000000000000000000..b901bce3afcd3020b1be7f63674880b51a35c7fc GIT binary patch literal 555 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>x z3*>MXctjR6Fz_7!VaBX$ot!{H_7YEDSN3PD0^DpWpKR39fI^!+T^vIsE{jeGEIRDK z;Vj5;G%|nAjcE1Ux!?XB=SgehH+j@~kmmz~^3sNQHQ|EX;@Ru}UbC(-Ja2cmkwtFe z>PuI)YchB>StRVbd8zyG`n{HJQop498Jg@{6>s0>@}CspurHx-_BqANqIHs6W~iU+ z43P|A+W$UAOZo8WkP8{nt`!C86TLosTO9AIa%F1!?DNaY=PiF){ZYAhW9Nm)CxTm< zdJ219UBBOO*r#g4gadW^9{gus%)>r`DJ*FT(D|w*t`Q|Ei6yC4$wjF^iowXh$Vk_~ zRM*ff#K6qT)EtPk4GgRd49X&IB%^4^%}>cptHiB=oi*V;Py>UftDnm{r-UW|2Yk4d literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/tritanium_block_red.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1887300524ee8ea3b97d1c254e657aacd1c856 GIT binary patch literal 537 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>o|MG@|Nm<{+m`^XU`+CMcafRH;>Zr z&wsD?k4*d2&XAb&Y~oXm38Iym$3A4=uiDS2Xrya+>#Xd(?|D3wZmQKbB56-D5o6=+%O4>J6crcAVe2>{-2UsiE?Ft~DK2@gIIN zrRB4Ix%__uD411CTq814Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>$BWnkn3sE7G1V+>s-EXPx}IPRYCL z6*hEBuIZ5cb6n-pGPx@&K9S^l$grEYti)k;^w{&5BbBU$!A`c>t@Y@-9yC%+i7nJ4Lt8ODgT1J@eup zx7SnFu6f1jFq