diff --git a/machine_colorizer.js b/machine_colorizer.js new file mode 100644 index 000000000..c9a09dc6d --- /dev/null +++ b/machine_colorizer.js @@ -0,0 +1,113 @@ + +// Использует Image Magick для автоматической перекраски текстур + +const fs = require('fs') +const root_main = './src/main/resources/assets/overdrive_that_matters/textures/block/' +const child_process = require('child_process') + +const args = process.argv.slice(2) + +if (args.length != 1) { + console.error('Usage: ') + process.exit(2) +} + +const colors = [ + ['white', [255, 255, 255]], + ['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) + +async function size(path) { + const identify = child_process.spawn('magick', [ + 'identify', + path, + ]) + + 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]) + + return [width, height] +} + +(async function() { + const textureOverlay = args[0] + const textureColor = textureOverlay + '_mask' + + if (!fs.existsSync(`${root_main}${textureOverlay}.png`)) { + process.stderr.write(`${textureOverlay}.png does not exist\n`) + process.exit(1) + } + + if (!fs.existsSync(`${root_main}${textureColor}.png`)) { + process.stderr.write(`${textureColor}.png does not exist\n`) + process.exit(1) + } + + try { + fs.mkdirSync(`${root_main}/${textureOverlay}`) + } catch(err) { + + } + + const [widthOverlay, heightOverlay] = await size(`${root_main}${textureOverlay}.png`) + const [width, height] = await size(`${root_main}${textureColor}.png`) + + if (widthOverlay != width || heightOverlay != height) { + process.stderr.write(`${textureColor}.png has size of ${width}x${height}, overlay has size of ${widthOverlay}x${heightOverlay}!\n`) + process.exit(3) + } + + for (const color of colors) { + const name = color[0] + const rgb = color[1] + const magick = child_process.spawn('magick', [ + 'convert', + + `${root_main}${textureOverlay}.png`, + + '(', + `${root_main}${textureColor}.png`, + '-size', `${width}x${height}`, + `xc:rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`, + '-channel', 'rgb', + '-compose', 'Multiply', + '-composite', + ')', + + '-compose', 'Over', + '-composite', + + `${root_main}${textureOverlay}/${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 4092fb1ef..20e84e1d1 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt @@ -36,6 +36,7 @@ import ru.dbotthepony.mc.otm.core.registryName import ru.dbotthepony.mc.otm.datagen.advancements.addAdvancements import ru.dbotthepony.mc.otm.datagen.advancements.addAndroidAdvancements import ru.dbotthepony.mc.otm.datagen.advancements.addMachineAdvancements +import ru.dbotthepony.mc.otm.datagen.blocks.addBlockModels import ru.dbotthepony.mc.otm.datagen.blocks.addBlockStates import ru.dbotthepony.mc.otm.datagen.blocks.addComplexBlockStates import ru.dbotthepony.mc.otm.datagen.items.addItemModels @@ -43,7 +44,6 @@ import ru.dbotthepony.mc.otm.datagen.lang.AddRussianLanguage import ru.dbotthepony.mc.otm.datagen.lang.MatteryLanguageProvider import ru.dbotthepony.mc.otm.datagen.loot.* import ru.dbotthepony.mc.otm.datagen.loot.LootModifiers -import ru.dbotthepony.mc.otm.datagen.models.addBlockModels import ru.dbotthepony.mc.otm.datagen.recipes.* import ru.dbotthepony.mc.otm.datagen.tags.TagsProvider import ru.dbotthepony.mc.otm.datagen.tags.addTags @@ -516,8 +516,10 @@ object DataGen { event.generator.addProvider(event.includeServer(), blockStateProvider) event.generator.addProvider(event.includeClient(), itemModelProvider) event.generator.addProvider(event.includeServer(), recipeProvider) - event.generator.addProvider(event.includeClient(), MatterBankProvider(event)) - event.generator.addProvider(event.includeClient(), BatteryBankProvider(event)) + DyeColor.entries.forEach { event.generator.addProvider(event.includeClient(), MatterBankProvider(event, it)) } + event.generator.addProvider(event.includeClient(), MatterBankProvider(event, null)) + DyeColor.entries.forEach { event.generator.addProvider(event.includeClient(), BatteryBankProvider(event, it)) } + event.generator.addProvider(event.includeClient(), BatteryBankProvider(event, null)) event.generator.addProvider(event.includeServer(), lootTableProvider) event.generator.addProvider(event.includeServer(), lootModifier) event.generator.addProvider(event.includeServer(), SoundDataProvider(event)) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt index a9380202f..fd50bef53 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt @@ -140,6 +140,14 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr blockModelProvider.decorativeGlassAll(MRegistry.INDUSTRIAL_GLASS.allBlocks.values) blockStateProvider.simpleBlockM(MRegistry.INDUSTRIAL_GLASS.allBlocks.values) + blockModelProvider.colored("computer_terminal", mapOf( + "0" to "decorative/computer_base", + "1" to "decorative/computer_screen", + "particle" to "decorative/computer_base", + )) + + blockStateProvider.block(MRegistry.COMPUTER_TERMINAL.allBlocks.values) + blockStateProvider.simpleBlockM(MBlocks.FLUID_TANK) for ((block, colors) in MRegistry.TRITANIUM_STRIPED_BLOCK.blocksWithColor) { diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/MatterData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/MatterData.kt index a46c6be0c..65c2e3396 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/MatterData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/MatterData.kt @@ -89,6 +89,23 @@ fun addMatterData(provider: MatterDataProvider) { provider.inherit(Items.RED_CONCRETE, Items.RED_CONCRETE_POWDER) provider.inherit(Items.BLACK_CONCRETE, Items.BLACK_CONCRETE_POWDER) + provider.inherit(Items.WHITE_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.ORANGE_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.MAGENTA_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.LIGHT_BLUE_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.YELLOW_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.LIME_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.PINK_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.GRAY_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.LIGHT_GRAY_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.CYAN_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.PURPLE_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.BLUE_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.BROWN_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.GREEN_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.RED_WOOL, Items.STRING, Decimal(4)) + provider.inherit(Items.BLACK_WOOL, Items.STRING, Decimal(4)) + with(provider) { blacklist(Tags.Items.RAW_MATERIALS) blacklist(Tags.Items.RAW_MATERIALS_COPPER) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AndroidAdvancementsData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AndroidAdvancementsData.kt index 591f3a24e..b0764b493 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AndroidAdvancementsData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AndroidAdvancementsData.kt @@ -146,7 +146,7 @@ fun addAndroidAdvancements(serializer: Consumer, lang: Matter val researchAnything = AdvancementBuilder() .parent(root) .display( - itemStack = ItemStack(MItems.ANDROID_STATION), + itemStack = ItemStack(MItems.ANDROID_STATION[null]!!), title = translation.add("research_anything", "New Trick") { russian("Новый фокус") }, @@ -298,7 +298,7 @@ fun addAndroidAdvancements(serializer: Consumer, lang: Matter AdvancementBuilder() .parent(researchAnything) .display( - itemStack = ItemStack(MItems.ANDROID_STATION), + itemStack = ItemStack(MItems.ANDROID_STATION[null]!!), title = translation.add("research_all", "Mecha-Agnomination") { russian("Меха-зумие") }, 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 0181180fd..d42055f7b 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 @@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.datagen.advancements import net.minecraft.advancements.Advancement import net.minecraft.advancements.FrameType +import net.minecraft.advancements.RequirementsStrategy import net.minecraft.advancements.critereon.ItemPredicate import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack @@ -18,15 +19,23 @@ import java.util.function.Consumer typealias AdvancementHolder = Advancement private data class CraftEntry( - val item: Item, + val item: Collection, val englishName: String, val englishSuffix: String? = null, val russianName: String? = null, val russianSuffix: String? = null, ) { + constructor( + item: Item, + englishName: String, + englishSuffix: String? = null, + russianName: String? = null, + russianSuffix: String? = null, + ) : this(listOf(item), englishName, englishSuffix, russianName, russianSuffix) + fun make(serializer: Consumer, parent: AdvancementHolder, translation: MatteryLanguageProvider.MultiBuilder): AdvancementHolder { - val path = item.registryName!!.path + val path = item.first().registryName!!.path val translated = translation.add("$path.desc", "Craft a %s%s") { russian("Создайте %s%s") @@ -39,15 +48,20 @@ private data class CraftEntry( return AdvancementBuilder() .parent(parent) .display( - itemStack = ItemStack(item), + itemStack = ItemStack(item.first()), title = translation.add(path, englishName) { if (russianName != null) { russian(russianName) } }, - description = TranslatableComponent(translated.contents.key, item.description, translatedSuffix), + description = TranslatableComponent(translated.contents.key, item.first().description, translatedSuffix), ) - .addCriterion("has_machine", criterion(item)) + .also { + for ((i, item) in item.withIndex()) { + it.addCriterion(i.toString(), criterion(item)) + } + } + .requirements(RequirementsStrategy.OR) .save(serializer, modLocation("machines/$path")) } } @@ -72,7 +86,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("Раскатка металла") }, @@ -80,36 +94,40 @@ 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(RequirementsStrategy.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", + val scanner = CraftEntry(MItems.MATTER_SCANNER.values, "Scanning Things that Matter", russianName = "Сканируем вещи которые материальны") - val decomposer = CraftEntry(MItems.MATTER_DECOMPOSER, "Decaying the Atoms", "Keep your limbs outside of the working chamber at all times", + val decomposer = CraftEntry(MItems.MATTER_DECOMPOSER.values, "Decaying the Atoms", "Keep your limbs outside of the working chamber at all times", russianName = "Разлагаем атомы", russianSuffix = "Во всех ситуациях держите свои конечности вне рабочей камеры") val panel = CraftEntry(MItems.MATTER_PANEL, "Indexing the Library", russianName = "Индексируем библиотеку") - val replicator = CraftEntry(MItems.MATTER_REPLICATOR, "Cook with (Im)Perfection", "Now let's bake some perfect bread", + val replicator = CraftEntry(MItems.MATTER_REPLICATOR.values, "Cook with (Im)Perfection", "Now let's bake some perfect bread", russianName = "Повар с (не) идеальностями", russianSuffix = "А теперь давайте выпечем немного идеального хлеба") - val bottler = CraftEntry(MItems.MATTER_BOTTLER, "Transfusing Pure Matter", "For those who loved to play with water in their childhood", + val bottler = CraftEntry(MItems.MATTER_BOTTLER.values, "Transfusing Pure Matter", "For those who loved to play with water in their childhood", russianName = "Переливаем чистую материю", russianSuffix = "Для тех, кто любил играться в воде в детстве") - val recycler = CraftEntry(MItems.MATTER_RECYCLER, "Refine and Redefine", "This is what waste recycling should look like", + val recycler = CraftEntry(MItems.MATTER_RECYCLER.values, "Refine and Redefine", "This is what waste recycling should look like", russianName = "Переработка и перегонка", russianSuffix = "Вот он, пик переработки отходов") - val capacitor = CraftEntry(MItems.MATTER_CAPACITOR_BANK, "Modular Matter Tank", + val capacitor = CraftEntry(MItems.MATTER_CAPACITOR_BANK.values, "Modular Matter Tank", russianName = "Модульный бак материи") val counter = CraftEntry(MItems.ENERGY_COUNTER, "Visualize Power Burn", russianName = "Визуализация сжигания энергии") - val battery = CraftEntry(MItems.BATTERY_BANK, "Batteries Not Included", "By all means avoid the urge to hammer incompatible batteries into the power bus.", + val battery = CraftEntry(MItems.BATTERY_BANK.values, "Batteries Not Included", "By all means avoid the urge to hammer incompatible batteries into the power bus.", russianName = "Батарейки в комплект не входят", russianSuffix = "Пожалуйста, воздержитесь от вбивания кувалдой несовместимых батарей в энергетическую шину.") val pattern = CraftEntry(MItems.PATTERN_STORAGE, "Digital Knowledge Library", russianName = "Цифровая библиотека знаний") - val reconstructor = CraftEntry(MItems.MATTER_RECONSTRUCTOR, "Flipping Hourglass", + val reconstructor = CraftEntry(MItems.MATTER_RECONSTRUCTOR.values, "Flipping Hourglass", russianName = "Переворачиваем песочные часы") decomposer.make(serializer, press, translation).also { @@ -161,7 +179,7 @@ fun addMachineAdvancements(serializer: Consumer, lang: Matter battery.make(serializer, it, translation) } - val station = CraftEntry(MItems.ANDROID_STATION, "Android Home Page", + val station = CraftEntry(MItems.ANDROID_STATION.values, "Android Home Page", russianName = "Домашняя страница андроидов", russianSuffix = "Только пользоваться этим устройством могут вёдра с болтами", englishSuffix = "Except only buckets of bolts can use this thing") @@ -173,21 +191,21 @@ fun addMachineAdvancements(serializer: Consumer, lang: Matter charger.make(serializer, it, translation) } - CraftEntry(MItems.COBBLESTONE_GENERATOR, "Cobblestone: Infinity + 1", + CraftEntry(MItems.COBBLESTONE_GENERATOR.values, "Cobblestone: Infinity + 1", russianName = "Булыжник: бесконечность + 1", russianSuffix = "Смотрите, чтоб он не просыпался во все сундуки", englishSuffix = "Watch for not to spill it over all your chests").make(serializer, press, translation) - CraftEntry(MItems.POWERED_FURNACE, "One Big Resistor", + CraftEntry(MItems.POWERED_FURNACE.values, "One Big Resistor", russianName = "Один большой резистор", russianSuffix = "Каждый элемент электрической цепи способен испускать свет и тепло, единожды.", englishSuffix = "Any electrical element can emit light and heat, once.") .make(serializer, press, translation) .also { - CraftEntry(MItems.POWERED_BLAST_FURNACE, "Big Microwave Oven", + CraftEntry(MItems.POWERED_BLAST_FURNACE.values, "Big Microwave Oven", russianName = "Большая микроволновая печь").make(serializer, it, translation) - CraftEntry(MItems.POWERED_SMOKER, "Small Microwave Oven", + CraftEntry(MItems.POWERED_SMOKER.values, "Small Microwave Oven", russianName = "Маленькая микроволновая печь").make(serializer, it, translation) } } diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/Banks.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/Banks.kt index 7302eeb0c..acc27d924 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/Banks.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/Banks.kt @@ -1,5 +1,6 @@ package ru.dbotthepony.mc.otm.datagen.blocks +import net.minecraft.world.item.DyeColor import net.minecraft.world.level.block.Block import net.minecraftforge.client.model.generators.BlockStateProvider import net.minecraftforge.client.model.generators.ConfiguredModel @@ -18,16 +19,16 @@ private fun nothingOrNumber(input: Int): String { return (input - 1).toString() } -open class BatteryBankProvider(event: GatherDataEvent) : BlockStateProvider(event.generator.packOutput, DataGen.MOD_ID, event.existingFileHelper) { +open class BatteryBankProvider(event: GatherDataEvent, val color: DyeColor?) : BlockStateProvider(event.generator.packOutput, DataGen.MOD_ID, event.existingFileHelper) { protected var block = "battery_bank" protected var batteryPath = "block/battery/battery" - protected var registry: Block = MBlocks.BATTERY_BANK + protected var registry: Block = MBlocks.BATTERY_BANK[color]!! override fun registerStatesAndModels() { with(getVariantBuilder(registry)) { forAllStates { ConfiguredModel.builder() - .modelFile(models().getExistingFile(modLocation("block/$block"))) + .modelFile(models().getExistingFile(modLocation("block/$block${if (color != null) "_${color.name.lowercase()}" else ""}"))) .rotationY(it[BlockRotationFreedom.HORIZONTAL.property].front.yRotationBlockstateNorth()) .build() } @@ -35,18 +36,18 @@ open class BatteryBankProvider(event: GatherDataEvent) : BlockStateProvider(even } override fun getName(): String { - return "Battery Bank Model Provider" + return "Battery Bank Model Provider for color $color" } } -class MatterBankProvider(event: GatherDataEvent) : BatteryBankProvider(event) { +class MatterBankProvider(event: GatherDataEvent, color: DyeColor?) : BatteryBankProvider(event, color) { init { block = "matter_capacitor_bank" batteryPath = "block/battery/matter_capacitor" - registry = MBlocks.MATTER_CAPACITOR_BANK + registry = MBlocks.MATTER_CAPACITOR_BANK[color]!! } override fun getName(): String { - return "Matter Bank Model Provider" + return "Matter Bank Model Provider for color $color" } } 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 new file mode 100644 index 000000000..56051f317 --- /dev/null +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/BlockModels.kt @@ -0,0 +1,49 @@ +package ru.dbotthepony.mc.otm.datagen.blocks + +import ru.dbotthepony.mc.otm.datagen.models.MatteryBlockModelProvider +import ru.dbotthepony.mc.otm.registry.MBlocks + +fun addBlockModels(provider: MatteryBlockModelProvider) { + with(provider) { + resourceCubeAll(MBlocks.TRITANIUM_ORE) + resourceCubeAll(MBlocks.TRITANIUM_RAW_BLOCK) + resourceCubeAll(MBlocks.DEEPSLATE_TRITANIUM_ORE) + resourceCubeAll(MBlocks.TRITANIUM_INGOT_BLOCK) + + colored(MBlocks.COBBLESTONE_GENERATOR, listOf("0", "particle")) + colored(MBlocks.ESSENCE_STORAGE, listOf("0", "particle")) + colored(MBlocks.ITEM_MONITOR, listOf("0", "particle")) + colored(MBlocks.MATTER_RECONSTRUCTOR, listOf("0", "particle")) + + colored("matter_capacitor_bank", listOf("1", "particle"), "mattercapacitorbank_frame") + colored("battery_bank", listOf("1", "particle"), "batterybank_frame") + + coloredMachineCombined("plate_press", "plate_press2", listOf("0", "particle")) + coloredMachineCombined("twin_plate_press", "plate_press2", listOf("0", "particle")) + + coloredMachineCombined("matter_recycler", listOf("0", "particle")) + coloredMachineCombined("matter_scanner", listOf("texture", "particle")) + coloredMachineCombined("matter_bottler", listOf("texture", "particle")) + coloredMachineCombined("matter_decomposer", listOf("texture", "particle")) + coloredMachineCombined("matter_recycler", listOf("0", "particle")) + + colored("matter_replicator", "_idle", mapOf("1" to "matter_replicator_base", "particle" to "matter_replicator_base", "texture" to "matter_replicator_offline")) + colored("matter_replicator", "_error", mapOf("1" to "matter_replicator_base", "particle" to "matter_replicator_base", "texture" to "matter_replicator_halted")) + colored("matter_replicator", "_working", mapOf("1" to "matter_replicator_base", "particle" to "matter_replicator_base", "texture" to "matter_replicator")) + + colored("powered_smoker", "_idle", mapOf("0" to "powered_smoker_base", "1" to "powered_smoker_interior_0", "particle" to "powered_smoker_base")) + colored("powered_smoker", "_error", mapOf("0" to "powered_smoker_base", "1" to "powered_smoker_interior_2", "particle" to "powered_smoker_base")) + colored("powered_smoker", "_working", mapOf("0" to "powered_smoker_base", "1" to "powered_smoker_interior_1", "particle" to "powered_smoker_base")) + + colored("powered_furnace", "_idle", mapOf("0" to "electric_furnace_offline", "particle" to "electric_furnace_offline")) + colored("powered_furnace", "_error", mapOf("0" to "electric_furnace_offline", "particle" to "electric_furnace_offline")) + colored("powered_furnace", "_working", mapOf("0" to "electric_furnace", "particle" to "electric_furnace")) + + colored("powered_blast_furnace", "_idle", mapOf("texture" to "induction_furnace_offline", "particle" to "induction_furnace_offline")) + colored("powered_blast_furnace", "_error", mapOf("texture" to "induction_furnace_offline", "particle" to "induction_furnace_offline")) + colored("powered_blast_furnace", "_working", mapOf("texture" to "induction_furnace", "particle" to "induction_furnace")) + + colored("android_station", "_idle", mapOf("1" to "android_station_base", "particle" to "android_station_base")) + colored("android_station", "_working", mapOf("2" to "android_station_base", "particle" to "android_station_base")) + } +} 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 6412255fd..5d1e53aca 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 @@ -21,7 +21,7 @@ import ru.dbotthepony.mc.otm.registry.MRegistry fun addBlockStates(provider: MatteryBlockStateProvider) { provider.block(MBlocks.BLACK_HOLE) - provider.block(MBlocks.ANDROID_STATION) + provider.block(MBlocks.ANDROID_STATION.values) provider.ore(MBlocks.DEEPSLATE_TRITANIUM_ORE) provider.ore(MBlocks.TRITANIUM_ORE) @@ -30,8 +30,8 @@ fun addBlockStates(provider: MatteryBlockStateProvider) { provider.block(MBlocks.METAL_MESH) provider.block(MBlocks.CHEMICAL_GENERATOR) - provider.block(MBlocks.MATTER_SCANNER) - provider.block(MBlocks.ITEM_MONITOR) + provider.block(MBlocks.MATTER_SCANNER.values) + provider.block(MBlocks.ITEM_MONITOR.values) provider.block(MBlocks.HOLO_SIGN) provider.exec { @@ -59,55 +59,57 @@ fun addBlockStates(provider: MatteryBlockStateProvider) { } } - with(provider.getMultipartBuilder(MBlocks.MATTER_BOTTLER)) { - for (dir in BlockRotationFreedom.HORIZONTAL.possibleValues) { - for (enum in WorkerState.SEMI_WORKER_STATE.possibleValues) { - part().modelFile(provider.models().getExistingFile(modLocation("matter_bottler_${enum.name.lowercase()}"))) - .rotationY(dir.front.yRotationBlockstateNorth()) - .addModel() - .condition(BlockRotationFreedom.HORIZONTAL.property, dir) - .condition(WorkerState.WORKER_STATE, enum) - .end() + for (block in MBlocks.MATTER_BOTTLER.values) { + with(provider.getMultipartBuilder(block)) { + for (dir in BlockRotationFreedom.HORIZONTAL.possibleValues) { + for (enum in WorkerState.SEMI_WORKER_STATE.possibleValues) { + part().modelFile(provider.models().getExistingFile(modLocation("matter_bottler_${enum.name.lowercase()}"))) + .rotationY(dir.front.yRotationBlockstateNorth()) + .addModel() + .condition(BlockRotationFreedom.HORIZONTAL.property, dir) + .condition(WorkerState.WORKER_STATE, enum) + .end() + } } - } - for (dir in BlockRotationFreedom.HORIZONTAL.possibleValues) { - for (enum in MatterBottlerBlock.SLOT_PROPERTIES) { - part().modelFile(provider.models().getExistingFile(modLocation("matter_bottler_${enum.name}_open"))) - .rotationY(dir.front.yRotationBlockstateNorth()) - .addModel() - .condition(BlockRotationFreedom.HORIZONTAL.property, dir) - .condition(enum, false) - .end() + for (dir in BlockRotationFreedom.HORIZONTAL.possibleValues) { + for (enum in MatterBottlerBlock.SLOT_PROPERTIES) { + part().modelFile(provider.models().getExistingFile(modLocation("matter_bottler_${enum.name}_open"))) + .rotationY(dir.front.yRotationBlockstateNorth()) + .addModel() + .condition(BlockRotationFreedom.HORIZONTAL.property, dir) + .condition(enum, false) + .end() - part().modelFile(provider.models().getExistingFile(modLocation("matter_bottler_${enum.name}_closed"))) - .rotationY(dir.front.yRotationBlockstateNorth()) - .addModel() - .condition(BlockRotationFreedom.HORIZONTAL.property, dir) - .condition(enum, true) - .end() + part().modelFile(provider.models().getExistingFile(modLocation("matter_bottler_${enum.name}_closed"))) + .rotationY(dir.front.yRotationBlockstateNorth()) + .addModel() + .condition(BlockRotationFreedom.HORIZONTAL.property, dir) + .condition(enum, true) + .end() + } } } } } - provider.block(MBlocks.MATTER_DECOMPOSER) - provider.block(MBlocks.MATTER_REPLICATOR) - provider.block(MBlocks.PLATE_PRESS) - provider.block(MBlocks.TWIN_PLATE_PRESS) + provider.block(MBlocks.MATTER_DECOMPOSER.values) + provider.block(MBlocks.MATTER_REPLICATOR.values) + provider.block(MBlocks.PLATE_PRESS.values) + provider.block(MBlocks.TWIN_PLATE_PRESS.values) provider.block(MBlocks.GRAVITATION_STABILIZER) provider.block(MBlocks.GRAVITATION_STABILIZER_LENS) - provider.block(MBlocks.POWERED_BLAST_FURNACE) - provider.block(MBlocks.POWERED_FURNACE) - provider.block(MBlocks.POWERED_SMOKER) + provider.block(MBlocks.POWERED_BLAST_FURNACE.values) + provider.block(MBlocks.POWERED_FURNACE.values) + provider.block(MBlocks.POWERED_SMOKER.values) provider.block(MBlocks.STORAGE_POWER_SUPPLIER) - provider.block(MBlocks.MATTER_RECYCLER) - provider.block(MBlocks.MATTER_RECONSTRUCTOR) + provider.block(MBlocks.MATTER_RECYCLER.values) + provider.block(MBlocks.MATTER_RECONSTRUCTOR.values) provider.block(MBlocks.ENERGY_SERVO) - provider.block(MBlocks.COBBLESTONE_GENERATOR) - provider.block(MBlocks.ESSENCE_STORAGE) + provider.block(MBlocks.COBBLESTONE_GENERATOR.values) + provider.block(MBlocks.ESSENCE_STORAGE.values) provider.exec { for (crate in MRegistry.CARGO_CRATES.allBlocks.values) { diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/MatteryBlockStateProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/MatteryBlockStateProvider.kt index 509171aa9..fa5038372 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/MatteryBlockStateProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/MatteryBlockStateProvider.kt @@ -1,6 +1,7 @@ package ru.dbotthepony.mc.otm.datagen.blocks import net.minecraft.core.Direction +import net.minecraft.resources.ResourceLocation import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.RotatedPillarBlock import net.minecraft.world.level.block.state.BlockState @@ -56,10 +57,10 @@ class MatteryBlockStateProvider(event: GatherDataEvent) : BlockStateProvider(eve return this } - fun block(block: Block, func: BlockStateTransform) = exec { + fun block(block: Block, model: String = "block/${block.registryName!!.path}", func: BlockStateTransform = EMPTY) = exec { getVariantBuilder(block).forAllStates { val builder = ConfiguredModel.builder() - var modelPath = initialTransform(it, "block/${block.registryName!!.path}", builder) + var modelPath = initialTransform(it, model, builder) modelPath = func(it, builder, modelPath) ?: modelPath builder.modelFile(models().getExistingFile(modLocation(modelPath))) @@ -70,7 +71,7 @@ class MatteryBlockStateProvider(event: GatherDataEvent) : BlockStateProvider(eve fun block(blocks: Collection): MatteryBlockStateProvider { for (block in blocks) { - this.block(block, EMPTY) + this.block(block) } return this @@ -78,7 +79,7 @@ class MatteryBlockStateProvider(event: GatherDataEvent) : BlockStateProvider(eve fun block(vararg blocks: Block): MatteryBlockStateProvider { for (block in blocks) { - this.block(block, EMPTY) + block(block) } return this @@ -86,11 +87,16 @@ class MatteryBlockStateProvider(event: GatherDataEvent) : BlockStateProvider(eve fun simpleBlockM(vararg blocks: Block): MatteryBlockStateProvider { for (block in blocks) { - exec { - getVariantBuilder(block).forAllStates { - check(block.registryName != null) {"$block registry name is null!"} - return@forAllStates arrayOf(ConfiguredModel(models().getExistingFile(block.registryName))) - } + simpleBlockM(block) + } + + return this + } + + fun simpleBlockM(block: Block, model: ResourceLocation = checkNotNull(block.registryName) {"$block registry name is null!"}): MatteryBlockStateProvider { + exec { + getVariantBuilder(block).forAllStates { + return@forAllStates arrayOf(ConfiguredModel(models().getExistingFile(model))) } } 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 4598b73c2..24c4e1784 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 @@ -7,9 +7,9 @@ import ru.dbotthepony.mc.otm.registry.MItems import ru.dbotthepony.mc.otm.registry.MRegistry fun addItemModels(provider: MatteryItemModelProvider) { - provider.block(MItems.ANDROID_STATION, "android_station_working") - provider.block(MItems.BATTERY_BANK) - provider.block(MItems.MATTER_CAPACITOR_BANK) + provider.coloredWithBaseBlock(MItems.ANDROID_STATION, "android_station", "_working") + provider.coloredWithBaseBlock(MItems.BATTERY_BANK, "matter_capacitor_bank") + provider.coloredWithBaseBlock(MItems.MATTER_CAPACITOR_BANK, "matter_capacitor_bank") provider.block(MItems.PATTERN_STORAGE) provider.exec { @@ -28,13 +28,14 @@ fun addItemModels(provider: MatteryItemModelProvider) { provider.block(MItems.TRITANIUM_STRIPED_BLOCK) provider.block(MItems.TRITANIUM_RAW_BLOCK) provider.block(MItems.TRITANIUM_INGOT_BLOCK) - provider.block(MItems.ITEM_MONITOR) + provider.coloredWithBaseBlock(MItems.ITEM_MONITOR, "item_monitor") provider.block(MItems.PHANTOM_ATTRACTOR) provider.block(MItems.HOLO_SIGN) MRegistry.VENT.allItems.values.forEach(provider::block) MRegistry.VENT_ALTERNATIVE.allItems.values.forEach(provider::block) MRegistry.TRITANIUM_BLOCK.allItems.values.forEach(provider::block) + MRegistry.COMPUTER_TERMINAL.allItems.values.forEach(provider::block) MRegistry.INDUSTRIAL_GLASS.allItems.values.forEach(provider::block) for (block in MRegistry.TRITANIUM_STRIPED_BLOCK.flatItems) { @@ -159,31 +160,32 @@ fun addItemModels(provider: MatteryItemModelProvider) { provider.block(MItems.TRITANIUM_TRAPDOOR[null]!!, "tritanium_trapdoor_bottom") - for (color in DyeColor.values()) + for (color in DyeColor.entries) provider.block(MItems.TRITANIUM_TRAPDOOR[color]!!, "tritanium_trapdoor_${color.name.lowercase()}_bottom") - for (item in MRegistry.CARGO_CRATES.allItems.values) { + for (item in MRegistry.CARGO_CRATES.allItems.values) provider.block(item, "${item.registryName!!.path}_closed") - } provider.block(MItems.CHEMICAL_GENERATOR, "chemical_generator_working") provider.block(MItems.ENERGY_COUNTER, "energy_counter_down") - provider.block(MItems.MATTER_BOTTLER, "matter_bottler_working") + provider.coloredWithBaseBlock(MItems.MATTER_BOTTLER, "matter_bottler", "_idle") + provider.coloredWithBaseBlock(MItems.MATTER_SCANNER, "matter_scanner", "_idle") + provider.coloredWithBaseBlock(MItems.MATTER_REPLICATOR, "matter_replicator", "_idle") provider.block(MItems.MATTER_CABLE, "matter_cable_core") - provider.block(MItems.MATTER_DECOMPOSER, "matter_decomposer_working") + provider.coloredWithBaseBlock(MItems.MATTER_DECOMPOSER, "matter_decomposer", "_idle") provider.block(MItems.ENERGY_SERVO, "energy_servo") - provider.block(MItems.ESSENCE_STORAGE, "essence_storage") - provider.block(MItems.MATTER_RECONSTRUCTOR, "matter_reconstructor") + provider.coloredWithBaseBlock(MItems.ESSENCE_STORAGE, "essence_storage") + provider.coloredWithBaseBlock(MItems.MATTER_RECONSTRUCTOR, "matter_reconstructor") - provider.block(MItems.POWERED_BLAST_FURNACE, "powered_blast_furnace_working") - provider.block(MItems.POWERED_FURNACE, "powered_furnace_working") - provider.block(MItems.POWERED_SMOKER, "powered_smoker_working") + provider.coloredWithBaseBlock(MItems.POWERED_BLAST_FURNACE, "powered_blast_furnace", "_idle") + provider.coloredWithBaseBlock(MItems.POWERED_FURNACE, "powered_furnace", "_idle") + provider.coloredWithBaseBlock(MItems.POWERED_SMOKER, "powered_smoker", "_idle") - 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.block(MItems.COBBLESTONE_GENERATOR, "cobblestone_generator") + provider.coloredWithBaseBlock(MItems.MATTER_RECYCLER, "matter_recycler", "_idle") + provider.coloredWithBaseBlock(MItems.COBBLESTONE_GENERATOR, "cobblestone_generator") provider.block(MItems.STORAGE_BUS) provider.block(MItems.STORAGE_IMPORTER) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/MatteryItemModelProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/MatteryItemModelProvider.kt index ceeb59adf..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 @@ -4,9 +4,9 @@ import net.minecraft.data.models.ItemModelGenerators import net.minecraft.resources.ResourceLocation import net.minecraft.server.packs.PackType import net.minecraft.world.item.ArmorItem +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.Item import net.minecraftforge.client.model.generators.ItemModelProvider -import net.minecraftforge.client.model.generators.ModelBuilder import net.minecraftforge.data.event.GatherDataEvent import org.apache.logging.log4j.LogManager import ru.dbotthepony.mc.otm.core.registryName @@ -30,6 +30,23 @@ class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event fun block(item: Item) = exec { withExistingParent(item.registryName!!.path, modLocation("block/${item.registryName!!.path}")) } fun block(item: Item, path: String) = exec { withExistingParent(item.registryName!!.path, modLocation("block/$path")) } + + fun coloredWithBaseBlock(items: Map, path: String) { + 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 ab1f5619f..912698d02 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 @@ -7,6 +7,7 @@ private fun decoratives(provider: MatteryLanguageProvider) { add(MRegistry.VENT, "%s Vent") add(MRegistry.VENT_ALTERNATIVE, "%s Alternative Vent") + add(MRegistry.COMPUTER_TERMINAL, "%s Computer Terminal") add(MRegistry.TRITANIUM_BLOCK, "%s Tritanium Block") add(MRegistry.TRITANIUM_STAIRS, "%s Tritanium Stairs") add(MRegistry.TRITANIUM_SLAB, "%s Tritanium Slab") @@ -53,6 +54,7 @@ private fun decoratives(provider: MatteryLanguageProvider) { add(MEntityTypes.CARGO_CRATE_MINECARTS[null]!!, "Minecart with Cargo Crate") add(MRegistry.CARGO_CRATES.block, "Cargo Crate") + add(MRegistry.COMPUTER_TERMINAL.block, "Computer Terminal") add(MRegistry.TRITANIUM_BLOCK.block, "Tritanium Block") add(MRegistry.TRITANIUM_STAIRS.block, "Tritanium Stairs") add(MRegistry.TRITANIUM_SLAB.block, "Tritanium Slab") @@ -117,6 +119,8 @@ private fun sounds(provider: MatteryLanguageProvider) { private fun misc(provider: MatteryLanguageProvider) { with(provider.english) { + gui("shift_for_more_info", "") + gui("help.slot_filters", "Hold CTRL to setup slot filters") gui("help.slot_charging", "Hold ALT to switch slot charging") @@ -151,6 +155,8 @@ private fun misc(provider: MatteryLanguageProvider) { gui("exopack.change_color2", "Remove color") gui("exopack.go_curios", "Open Curios inventory") + gui("change_color", "Customize color") + gui("exopack.probe1", "This little device feels unnatural to touch, it is almost certainly resilient to any possible attempt to break it open.") gui("exopack.probe2", "There is fingerprint reader built into one of sides which gently glow when touched.") gui("exopack.probe3", "It seems this box will unlock once you strongly press fingerprint reader, and you feel what's inside will affect you without any way back!") @@ -410,31 +416,34 @@ private fun death(provider: MatteryLanguageProvider) { private fun blocks(provider: MatteryLanguageProvider) { with(provider.english) { - add(MBlocks.ANDROID_STATION, "Android Station") + addBlock(MBlocks.ANDROID_STATION.values, "Android Station") add(MBlocks.ANDROID_CHARGER, "Wireless Charger") add(MBlocks.ANDROID_CHARGER, "desc", "Charges nearby androids and exopacks") - add(MBlocks.BATTERY_BANK, "Battery Bank") - add(MBlocks.MATTER_DECOMPOSER, "Matter Decomposer") - add(MBlocks.MATTER_CAPACITOR_BANK, "Matter Capacitor Bank") + addBlock(MBlocks.BATTERY_BANK.values, "Battery Bank") + addBlock(MBlocks.MATTER_DECOMPOSER.values, "Matter Decomposer") + addBlock(MBlocks.MATTER_CAPACITOR_BANK.values, "Matter Capacitor Bank") add(MBlocks.MATTER_CABLE, "Matter Network Cable") add(MBlocks.PATTERN_STORAGE, "Pattern Storage") - add(MBlocks.MATTER_SCANNER, "Matter Scanner") + addBlock(MBlocks.MATTER_SCANNER.values, "Matter Scanner") add(MBlocks.MATTER_PANEL, "Pattern Monitor") - add(MBlocks.MATTER_REPLICATOR, "Matter Replicator") - add(MBlocks.MATTER_BOTTLER, "Matter Bottler") + addBlock(MBlocks.MATTER_REPLICATOR.values, "Matter Replicator") + addBlock(MBlocks.MATTER_BOTTLER.values, "Matter Bottler") add(MBlocks.DRIVE_VIEWER, "Drive Viewer") add(MBlocks.BLACK_HOLE, "Local Anomalous Spacetime Dilation Singular Point") - add(MBlocks.COBBLESTONE_GENERATOR, "Cobblestone Generator") + addBlock(MBlocks.COBBLESTONE_GENERATOR.values, "Cobblestone Generator") add(MBlocks.INFINITE_WATER_SOURCE, "Infinite Water Source") - add(MBlocks.ESSENCE_STORAGE, "Essence Storage") - add(MBlocks.ESSENCE_STORAGE, "desc", "Allows to store and retrieve experience levels") - add(MBlocks.MATTER_RECONSTRUCTOR, "Matter Reconstructor") - add(MBlocks.MATTER_RECONSTRUCTOR, "desc", "Repairs tools using matter") + addBlock(MBlocks.ESSENCE_STORAGE.values, "Essence Storage") + addBlock(MBlocks.ESSENCE_STORAGE.values, "desc", "Allows to store and retrieve experience levels") + addBlock(MBlocks.MATTER_RECONSTRUCTOR.values, "Matter Reconstructor") + addBlock(MBlocks.MATTER_RECONSTRUCTOR.values, "desc", "Repairs tools using matter") add(MBlocks.DEV_CHEST, "Dev Chest") add(MBlocks.DEV_CHEST, "desc", "Contains all items present in game") add(MBlocks.PAINTER, "Painting Table") add(MBlocks.MATTER_ENTANGLER, "Matter Entangler") + add(MBlocks.LIQUID_XP, "Liquid XP") + add(MItems.LIQUID_XP_BUCKET, "Liquid XP Bucket") + add(MBlocks.FLUID_TANK, "Fluid Tank") add(MBlocks.FLUID_TANK, "named", "Fluid Tank (%s)") @@ -451,15 +460,15 @@ 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.ITEM_MONITOR.values, "Item Monitor") + 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") - add(MBlocks.POWERED_BLAST_FURNACE, "Induction Furnace") + addBlock(MBlocks.POWERED_FURNACE.values, "Electric Furnace") + addBlock(MBlocks.POWERED_SMOKER.values, "Microwave Oven") + addBlock(MBlocks.POWERED_BLAST_FURNACE.values, "Induction Furnace") - add(MBlocks.MATTER_RECYCLER, "Matter Recycler") + addBlock(MBlocks.MATTER_RECYCLER.values, "Matter Recycler") add(MBlocks.ENERGY_SERVO, "Energy Servo") add(MBlocks.ENERGY_SERVO, "desc", "Charges, Discharges or Exchanges energy of items") @@ -609,19 +618,19 @@ private fun items(provider: MatteryLanguageProvider) { add(MItems.ELECTROMOTOR, "Electromotor") add(MItems.MIRROR_COMPOUND, "Mirror Compound") add(MItems.MIRROR, "Mirror") - add(MItems.MIRROR, "description", "I can clearly see my own reflection in this mirror") + add(MItems.MIRROR, "desc", "I can clearly see my own reflection in this mirror") add(MItems.REINFORCED_TRITANIUM_PLATE, "Reinforced Tritanium Plate") - add(MItems.REINFORCED_TRITANIUM_PLATE, "description", "An armor plate, reinforced to withstand great kinetic forces") + add(MItems.REINFORCED_TRITANIUM_PLATE, "desc", "An armor plate, reinforced to withstand great kinetic forces") add(MItems.CARBON_MESH, "Carbon Mesh") add(MItems.GRAVITATIONAL_DISRUPTOR, "Spacetime Equalizer") - add(MItems.GRAVITATIONAL_DISRUPTOR, "description", "Once within close proximity of massive spacetime dilation anomaly, equalizes spacetime in it's radius") - add(MItems.GRAVITATIONAL_DISRUPTOR, "description2", "Allows collapse of singularities") - add(MItems.GRAVITATIONAL_DISRUPTOR, "description3", "Doesn't destroy any of mass singularity had acquired, which result in violent explosion of matter!") - add(MItems.GRAVITATIONAL_DISRUPTOR, "description4", "The explosion %s be contained by %s. Do not even attempt to contain it.") - add(MItems.GRAVITATIONAL_DISRUPTOR, "description4_clarification", "can not") - add(MItems.GRAVITATIONAL_DISRUPTOR, "description4_clarification2", "anything") + add(MItems.GRAVITATIONAL_DISRUPTOR, "desc", "Once within close proximity of massive spacetime dilation anomaly, equalizes spacetime in it's radius") + add(MItems.GRAVITATIONAL_DISRUPTOR, "desc2", "Allows collapse of singularities") + add(MItems.GRAVITATIONAL_DISRUPTOR, "desc3", "Doesn't destroy any of mass singularity had acquired, which result in violent explosion of matter!") + add(MItems.GRAVITATIONAL_DISRUPTOR, "desc4", "The explosion %s be contained by %s. Do not even attempt to contain it.") + add(MItems.GRAVITATIONAL_DISRUPTOR, "desc4_clarification", "can not") + add(MItems.GRAVITATIONAL_DISRUPTOR, "desc4_clarification2", "anything") add(MItems.MATTER_DUST, "Matter Dust") add(MItems.MATTER_DUST, "desc", "This item is product of failed decomposition or replication attempt") @@ -791,9 +800,9 @@ private fun gui(provider: MatteryLanguageProvider) { gui("stored_amount", "Exact amount stored: %s") - gui("sides.item_config", "Item Configuration") - gui("sides.energy_config", "Energy Configuration") - gui("sides.fluid_config", "Fluid Configuration") + gui("sides.item_config", "Item") + gui("sides.energy_config", "Energy") + gui("sides.fluid_config", "Fluid") gui("sides.pull_help", "Hold Shift to cycle pull mode") gui("sides.push_help", "Hold Ctrl to cycle push mode") 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 9da3b9f2a..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 @@ -81,8 +81,11 @@ class MatteryLanguageProvider(private val gen: DataGenerator) { fun add(key: String, value: String) = slave.add(key, value) fun add(key: Block, value: String) = slave.add(key, value) + fun addBlock(key: Collection, value: String) = key.forEach { add(it, value) } fun add(key: Block, suffix: String, value: String) = slave.add("${key.descriptionId}.${suffix}", value) + fun addBlock(key: Collection, suffix: String, value: String) = key.forEach { add(it, suffix, value) } fun add(key: Item, value: String) = slave.add(key, value) + fun addItem(key: Collection, value: String) = key.forEach { add(it, value) } fun add(key: Item, suffix: String, value: String) = slave.add("${key.descriptionId}.${suffix}", value) fun add(key: ItemStack, value: String) = slave.add(key, value) fun add(key: Enchantment, value: String) = slave.add(key, value) @@ -346,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 9fbc08869..33373595b 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 @@ -13,12 +13,13 @@ private const val FEELING_SAFE_NOW = "...ощущаете ли вы себя т private fun decoratives(provider: MatteryLanguageProvider) { with(provider.russianColors) { - add(MRegistry.VENT, "%s Вентиляция") - add(MRegistry.VENT_ALTERNATIVE, "%s Альтернативная Вентиляция") + add(MRegistry.VENT, "%s вентиляция") + add(MRegistry.VENT_ALTERNATIVE, "%s альтернативная вентиляция") add(MRegistry.TRITANIUM_BLOCK, "%s тритановый блок") - add(MRegistry.TRITANIUM_STAIRS, "%s Тритановые ступеньки") - add(MRegistry.TRITANIUM_SLAB, "%s Тритановая плита") + add(MRegistry.COMPUTER_TERMINAL, "%s компьютерный терминал") + add(MRegistry.TRITANIUM_STAIRS, "%s тритановые ступеньки") + add(MRegistry.TRITANIUM_SLAB, "%s тритановая плита") add(MRegistry.TRITANIUM_WALL, "%s тритановая ограда") add(MRegistry.FLOOR_TILES, "%s керамическая плитка") add(MRegistry.FLOOR_TILES_STAIRS, "%s ступеньки из керамической плитки") @@ -62,6 +63,7 @@ private fun decoratives(provider: MatteryLanguageProvider) { add(MEntityTypes.CARGO_CRATE_MINECARTS[null]!!, "Вагонетка с грузовым ящиком") add(MRegistry.CARGO_CRATES.block, "Грузовой ящик") + add(MRegistry.COMPUTER_TERMINAL.block, "Компьютерный терминал") add(MRegistry.TRITANIUM_BLOCK.block, "Тритановый блок") add(MRegistry.TRITANIUM_STAIRS.block, "Тритановые ступеньки") add(MRegistry.TRITANIUM_SLAB.block, "Тритановая плита") @@ -125,6 +127,8 @@ private fun sounds(provider: MatteryLanguageProvider) { private fun misc(provider: MatteryLanguageProvider) { with(provider.russian) { + gui("shift_for_more_info", "<Удерживайте SHIFT для подробностей>") + gui("help.slot_filters", "Удерживайте CTRL для настройки фильтрации слотов") gui("help.slot_charging", "Удерживайте ALT для переключения зарядки слотов") @@ -159,6 +163,8 @@ private fun misc(provider: MatteryLanguageProvider) { gui("exopack.change_color2", "Убрать окраску") gui("exopack.go_curios", "Открыть инвентарь Curios") + gui("change_color", "Изменить цвет") + gui("exopack.probe1", "Данное маленькое устройство необычно на ощупь, а так же неприступно для любых попыток вскрыть.") gui("exopack.probe2", "На одной из сторон данного устройства находится сканер отпечатка, который тускло загорается при касании.") gui("exopack.probe3", "Вероятно, устройство откроется если достаточно сильно нажать на сканер отпечатка, и вы чувствуете, что последствия будут необратимы!") @@ -412,31 +418,34 @@ private fun death(provider: MatteryLanguageProvider) { private fun blocks(provider: MatteryLanguageProvider) { with(provider.russian) { - add(MBlocks.ANDROID_STATION, "Станция андроидов") + addBlock(MBlocks.ANDROID_STATION.values, "Станция андроидов") add(MBlocks.ANDROID_CHARGER, "Беспроводной зарядник") add(MBlocks.ANDROID_CHARGER, "desc", "Заряжает ближайших андроидов и экзопаки") - add(MBlocks.BATTERY_BANK, "Банк аккумуляторов") - add(MBlocks.MATTER_DECOMPOSER, "Декомпозитор материи") - add(MBlocks.MATTER_CAPACITOR_BANK, "Банк накопителей материи") + addBlock(MBlocks.BATTERY_BANK.values, "Банк аккумуляторов") + addBlock(MBlocks.MATTER_DECOMPOSER.values, "Декомпозитор материи") + addBlock(MBlocks.MATTER_CAPACITOR_BANK.values, "Банк накопителей материи") add(MBlocks.MATTER_CABLE, "Кабель сети материи") add(MBlocks.PATTERN_STORAGE, "Хранилище шаблонов") - add(MBlocks.MATTER_SCANNER, "Сканер материи") + addBlock(MBlocks.MATTER_SCANNER.values, "Сканер материи") add(MBlocks.MATTER_PANEL, "Монитор шаблонов") - add(MBlocks.MATTER_REPLICATOR, "Репликатор материи") - add(MBlocks.MATTER_BOTTLER, "Бутилировщик материи") + addBlock(MBlocks.MATTER_REPLICATOR.values, "Репликатор материи") + addBlock(MBlocks.MATTER_BOTTLER.values, "Бутилировщик материи") add(MBlocks.DRIVE_VIEWER, "Просмотрщик дисков конденсации") add(MBlocks.BLACK_HOLE, "Локализированная сингулярная точка аномального искажения пространства-времени") - add(MBlocks.COBBLESTONE_GENERATOR, "Генератор булыжника") + addBlock(MBlocks.COBBLESTONE_GENERATOR.values, "Генератор булыжника") add(MBlocks.INFINITE_WATER_SOURCE, "Неиссякаемый источник воды") - add(MBlocks.ESSENCE_STORAGE, "Хранилище эссенции") - add(MBlocks.ESSENCE_STORAGE, "desc", "Позволяет хранить очки опыта") - add(MBlocks.MATTER_RECONSTRUCTOR, "Материальный реконструктор") - add(MBlocks.MATTER_RECONSTRUCTOR, "desc", "Чинит инструменты используя материю") + addBlock(MBlocks.ESSENCE_STORAGE.values, "Хранилище эссенции") + addBlock(MBlocks.ESSENCE_STORAGE.values, "desc", "Позволяет хранить очки опыта") + addBlock(MBlocks.MATTER_RECONSTRUCTOR.values, "Материальный реконструктор") + addBlock(MBlocks.MATTER_RECONSTRUCTOR.values, "desc", "Чинит инструменты используя материю") add(MBlocks.DEV_CHEST, "Сундук разработчика") add(MBlocks.DEV_CHEST, "desc", "Хранит все предметы, которые есть в игре") add(MBlocks.PAINTER, "Стол маляра") add(MBlocks.MATTER_ENTANGLER, "Квантовый запутыватель материи") + add(MBlocks.LIQUID_XP, "Жидкий опыт") + add(MItems.LIQUID_XP_BUCKET, "Ведро жидкого опыта") + add(MBlocks.FLUID_TANK, "Жидкостный бак") add(MBlocks.FLUID_TANK, "named", "Жидкостный бак (%s)") @@ -453,15 +462,15 @@ 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.ITEM_MONITOR.values, "Монитор предметов") + addBlock(MBlocks.PLATE_PRESS.values, "Пресс пластин") + addBlock(MBlocks.TWIN_PLATE_PRESS.values, "Двойной пресс пластин") - add(MBlocks.POWERED_FURNACE, "Электрическая печь") - add(MBlocks.POWERED_BLAST_FURNACE, "Индукционная печь") - add(MBlocks.POWERED_SMOKER, "Микроволновая печь") + addBlock(MBlocks.POWERED_FURNACE.values, "Электрическая печь") + addBlock(MBlocks.POWERED_BLAST_FURNACE.values, "Индукционная печь") + addBlock(MBlocks.POWERED_SMOKER.values, "Микроволновая печь") - add(MBlocks.MATTER_RECYCLER, "Перерабатыватель материи") + addBlock(MBlocks.MATTER_RECYCLER.values, "Перерабатыватель материи") add(MBlocks.ENERGY_SERVO, "Энергетическая помпа") add(MBlocks.ENERGY_SERVO, "Desc", "заряжает, разряжает и передаёт энергию между предметами") @@ -793,9 +802,9 @@ private fun gui(provider: MatteryLanguageProvider) { gui("stored_amount", "Точное количество в хранилище: %s шт.") - gui("sides.item_config", "Настройка предметов") - gui("sides.energy_config", "Настройка энергии") - gui("sides.fluid_config", "Настройка жидкости") + gui("sides.item_config", "Предметы") + gui("sides.energy_config", "Энергия") + gui("sides.fluid_config", "Жидкости") gui("sides.pull_help", "Удерживайте Shift для настройки режима забора") gui("sides.push_help", "Удерживайте Ctrl для настройки режима выталкивания") diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt index e7c9a96e5..8b9c8dea4 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootTables.kt @@ -141,4 +141,14 @@ class LootTables(generator: DataGenerator) : LootTableProvider(generator.packOut }) } } + + fun tile(blocks: Collection, vararg filterTags: String) { + for (block in blocks) { + singleLootPool(LootContextParamSets.BLOCK, block.lootTable) { + add(LootItem.lootTableItem(block).also { + it.apply(CopyTileNbtFunction(filterTags.stream())) + }) + } + } + } } 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 afea9c71a..ae5ead785 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 @@ -14,6 +14,7 @@ import ru.dbotthepony.mc.otm.registry.MRegistry fun addLootTables(lootTables: LootTables) { lootTables.dropsSelf(MRegistry.DECORATIVE_CRATE.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) } + lootTables.dropsSelf(MRegistry.COMPUTER_TERMINAL.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) } lootTables.dropsSelf(MRegistry.CARGO_CRATES.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) } lootTables.dropsSelf(MRegistry.INDUSTRIAL_GLASS.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) } lootTables.dropsSelf(MRegistry.INDUSTRIAL_GLASS_PANE.allBlocks.values) { condition(ExplosionCondition.survivesExplosion()) } @@ -130,9 +131,9 @@ fun addLootTables(lootTables: LootTables) { lootPool { item(Items.BLACK_DYE) { setCount(64) } } } - lootTables.tile(MBlocks.COBBLESTONE_GENERATOR) - lootTables.tile(MBlocks.ESSENCE_STORAGE) - lootTables.tile(MBlocks.MATTER_RECONSTRUCTOR) + lootTables.tile(MBlocks.COBBLESTONE_GENERATOR.values) + lootTables.tile(MBlocks.ESSENCE_STORAGE.values) + lootTables.tile(MBlocks.MATTER_RECONSTRUCTOR.values) lootTables.tile(MBlocks.FLUID_TANK) lootTables.tile(MBlocks.PAINTER) lootTables.tile(MBlocks.MATTER_ENTANGLER) @@ -142,9 +143,9 @@ fun addLootTables(lootTables: LootTables) { lootTables.tile(MBlocks.CHEMICAL_GENERATOR) lootTables.tile(MBlocks.HOLO_SIGN, "isLocked") lootTables.tile(MBlocks.STORAGE_CABLE) - lootTables.tile(MBlocks.ANDROID_STATION) + lootTables.tile(MBlocks.ANDROID_STATION.values) lootTables.tile(MBlocks.ANDROID_CHARGER) - lootTables.tile(MBlocks.BATTERY_BANK) + lootTables.tile(MBlocks.BATTERY_BANK.values) lootTables.tile(MBlocks.DRIVE_VIEWER) lootTables.tile(MBlocks.STORAGE_BUS) @@ -153,19 +154,19 @@ fun addLootTables(lootTables: LootTables) { lootTables.tile(MBlocks.STORAGE_POWER_SUPPLIER) lootTables.tile(MBlocks.DRIVE_RACK) - lootTables.tile(MBlocks.MATTER_DECOMPOSER) - 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.MATTER_DECOMPOSER.values) + lootTables.tile(MBlocks.MATTER_REPLICATOR.values) + lootTables.tile(MBlocks.MATTER_RECYCLER.values) + lootTables.tile(MBlocks.MATTER_SCANNER.values) + lootTables.tile(MBlocks.PLATE_PRESS.values) + lootTables.tile(MBlocks.TWIN_PLATE_PRESS.values) - lootTables.tile(MBlocks.POWERED_FURNACE) - lootTables.tile(MBlocks.POWERED_SMOKER) - lootTables.tile(MBlocks.POWERED_BLAST_FURNACE) + lootTables.tile(MBlocks.POWERED_FURNACE.values) + lootTables.tile(MBlocks.POWERED_SMOKER.values) + lootTables.tile(MBlocks.POWERED_BLAST_FURNACE.values) lootTables.tile(MBlocks.MATTER_PANEL) lootTables.tile(MBlocks.PATTERN_STORAGE) - lootTables.tile(MBlocks.MATTER_CAPACITOR_BANK) - lootTables.tile(MBlocks.MATTER_BOTTLER) + lootTables.tile(MBlocks.MATTER_CAPACITOR_BANK.values) + lootTables.tile(MBlocks.MATTER_BOTTLER.values) } diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/BlockModels.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/BlockModels.kt deleted file mode 100644 index 52418774b..000000000 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/BlockModels.kt +++ /dev/null @@ -1,13 +0,0 @@ -package ru.dbotthepony.mc.otm.datagen.models - -import net.minecraft.resources.ResourceLocation -import ru.dbotthepony.mc.otm.registry.MBlocks - -fun addBlockModels(provider: MatteryBlockModelProvider) { - with(provider) { - resourceCubeAll(MBlocks.TRITANIUM_ORE) - resourceCubeAll(MBlocks.TRITANIUM_RAW_BLOCK) - resourceCubeAll(MBlocks.DEEPSLATE_TRITANIUM_ORE) - resourceCubeAll(MBlocks.TRITANIUM_INGOT_BLOCK) - } -} 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 f2cdb8a5e..0075aa79c 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 @@ -1,5 +1,6 @@ package ru.dbotthepony.mc.otm.datagen.models +import net.minecraft.world.item.DyeColor import net.minecraft.world.level.block.Block import net.minecraftforge.client.model.generators.BlockModelProvider import net.minecraftforge.data.event.GatherDataEvent @@ -96,4 +97,45 @@ class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(eve } } } + + fun colored(modelName: String, suffix: String, textureKeys: Map) { + for (color in DyeColor.entries) { + exec { + val model = withExistingParent(modelName + "_${color.name.lowercase()}$suffix", modLocation(modelName + suffix)) + + for ((key, value) in textureKeys) { + model.texture(key, modLocation("block/$value/${color.name.lowercase()}")) + } + } + } + } + + fun colored(blocks: Map, textureKeys: Collection) { + val base = blocks[null]!!.registryName!!.path + colored(base, textureKeys.associateWith { base }) + } + + fun colored(modelName: String, textureKeys: Map) { + return colored(modelName, "", textureKeys) + } + + fun colored(modelName: String, textureKeys: Collection, textureName: String) { + return colored(modelName, "", textureKeys.associateWith { textureName }) + } + + fun colored(modelName: String, textureKeys: Collection) { + return colored(modelName, "", textureKeys.associateWith { modelName }) + } + + fun coloredMachineCombined(modelName: String, textureName: String, textureKeys: Collection) { + for (state in listOf("_idle", "_error", "_working")) { + colored(modelName, state, textureKeys.associateWith { textureName }) + } + } + + fun coloredMachineCombined(modelName: String, textureKeys: Collection) { + for (state in listOf("_idle", "_error", "_working")) { + colored(modelName, state, textureKeys.associateWith { modelName }) + } + } } 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 db790ea62..2fc484253 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 @@ -54,7 +54,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) @@ -62,21 +62,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) @@ -86,7 +88,7 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) { .build(consumer) // Машины - MatteryRecipe(MItems.MATTER_RECYCLER, category = machinesCategory) + MatteryRecipe(MItems.MATTER_RECYCLER[null]!!, category = machinesCategory) .row(MItems.MATTER_CAPACITOR_PARTS, Items.HOPPER, MItemTags.BASIC_CIRCUIT) .row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES) .row(MItems.MATTER_CABLE, MItems.MATTER_IO_PORT, MItems.MATTER_CABLE) @@ -94,14 +96,14 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) { .build(consumer) // Блоки - MatteryRecipe(MItems.MATTER_CAPACITOR_BANK, category = machinesCategory) + MatteryRecipe(MItems.MATTER_CAPACITOR_BANK[null]!!, category = machinesCategory) .row(Tags.Items.GLASS, MItemTags.IRON_PLATES, Tags.Items.GLASS) .row(MItemTags.IRON_PLATES, MItems.MACHINE_FRAME, MItemTags.IRON_PLATES) .row(MItems.MATTER_CABLE, MItems.MATTER_IO_PORT, MItems.MATTER_CABLE) .unlockedBy(MItems.MATTER_CABLE) .build(consumer) - MatteryRecipe(MItems.BATTERY_BANK, category = machinesCategory) + MatteryRecipe(MItems.BATTERY_BANK[null]!!, category = machinesCategory) .row(Tags.Items.GLASS, MItemTags.IRON_PLATES, Tags.Items.GLASS) .row(MItemTags.IRON_PLATES, MItems.MACHINE_FRAME, MItemTags.IRON_PLATES) .row(MItems.ELECTRIC_PARTS, MItems.ENERGY_BUS, MItems.ELECTRIC_PARTS) @@ -316,7 +318,7 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) { .build(consumer) // станция андроида - MatteryRecipe(MItems.ANDROID_STATION, category = machinesCategory) + MatteryRecipe(MItems.ANDROID_STATION[null]!!, category = machinesCategory) .row(MItems.ELECTRIC_PARTS, MItemTags.ADVANCED_CIRCUIT, MItems.ELECTRIC_PARTS) .row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES) .row(MItemTags.TRITANIUM_PLATES, MItems.ELECTRIC_PARTS, MItemTags.TRITANIUM_PLATES) @@ -359,7 +361,7 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) { .build(consumer) // генератор коблы - MatteryRecipe(MItems.COBBLESTONE_GENERATOR, category = machinesCategory) + MatteryRecipe(MItems.COBBLESTONE_GENERATOR[null]!!, category = machinesCategory) .row(MItemTags.HARDENED_GLASS_COLORLESS, MItems.TRITANIUM_PICKAXE, MItemTags.HARDENED_GLASS_COLORLESS) .row(Items.LAVA_BUCKET, Items.HOPPER, Items.WATER_BUCKET) .rowB(Tags.Items.CHESTS) @@ -388,7 +390,7 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) { .unlockedBy(MItemTags.TRITANIUM_NUGGETS) .save(consumer, modLocation("ingot_from_nuggets")) - MatteryRecipe(MItems.ESSENCE_STORAGE, category = machinesCategory) + MatteryRecipe(MItems.ESSENCE_STORAGE[null]!!, category = machinesCategory) .row(MItems.MATTER_CAPACITOR_PARTS, Items.ENDER_EYE, MItemTags.ADVANCED_CIRCUIT) .row(MItemTags.TRITANIUM_PLATES, MItems.MACHINE_FRAME, MItemTags.TRITANIUM_PLATES) .row(MItemTags.GOLD_WIRES, MItemTags.HARDENED_GLASS, MItemTags.HARDENED_GLASS) @@ -400,16 +402,18 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) { .rowB(Tags.Items.RODS_WOODEN) .build(consumer) - MatteryRecipe(MItems.MATTER_RECONSTRUCTOR, category = machinesCategory) - .setUpgradeSource(MItems.MATTER_REPLICATOR) - .addUpgradeOps( - UpgradeRecipe.Indirect("BlockEntityTag.${MatteryBlockEntity.ENERGY_KEY}", "BlockEntityTag.energy"), - UpgradeRecipe.Indirect("BlockEntityTag.${MatteryBlockEntity.MATTER_STORAGE_KEY}", "BlockEntityTag.matter"), - ) - .row(MItemTags.ADVANCED_CIRCUIT, Tags.Items.GEMS_EMERALD, MItemTags.ADVANCED_CIRCUIT) - .row(MItems.ELECTRIC_PARTS, MItems.MATTER_REPLICATOR, MItems.ELECTRIC_PARTS) - .row(MItems.ELECTROMAGNET, MItems.ELECTROMAGNET, MItems.ELECTROMAGNET) - .build(consumer) + for ((dye, item) in MItems.MATTER_REPLICATOR) { + MatteryRecipe(MItems.MATTER_RECONSTRUCTOR[dye]!!, category = machinesCategory) + .setUpgradeSource(item) + .addUpgradeOps( + UpgradeRecipe.Indirect("BlockEntityTag.${MatteryBlockEntity.ENERGY_KEY}", "BlockEntityTag.energy"), + UpgradeRecipe.Indirect("BlockEntityTag.${MatteryBlockEntity.MATTER_STORAGE_KEY}", "BlockEntityTag.matter"), + ) + .row(MItemTags.ADVANCED_CIRCUIT, Tags.Items.GEMS_EMERALD, MItemTags.ADVANCED_CIRCUIT) + .row(MItems.ELECTRIC_PARTS, item, MItems.ELECTRIC_PARTS) + .row(MItems.ELECTROMAGNET, MItems.ELECTROMAGNET, MItems.ELECTROMAGNET) + .build(consumer) + } MatteryRecipe(MItems.FLUID_CAPSULE, category = RecipeCategory.TOOLS, count = 8) .row(MItemTags.TRITANIUM_NUGGETS, MItemTags.TRITANIUM_NUGGETS, MItemTags.TRITANIUM_NUGGETS) @@ -436,18 +440,18 @@ fun addCraftingTableRecipes(consumer: RecipeOutput) { .unlockedBy(Items.FLINT_AND_STEEL) .build(consumer) - MatteryRecipe(MItems.POWERED_FURNACE, category = machinesCategory) + MatteryRecipe(MItems.POWERED_FURNACE[null]!!, category = machinesCategory) .row(Items.FURNACE, MItems.MACHINE_FRAME, Items.FURNACE) .unlockedBy(MItems.MACHINE_FRAME) .build(consumer) - MatteryRecipe(MItems.POWERED_SMOKER, category = machinesCategory) + MatteryRecipe(MItems.POWERED_SMOKER[null]!!, category = machinesCategory) .rowAC(Items.FURNACE, Items.FURNACE) .row(MItems.ELECTROMAGNET, MItems.MACHINE_FRAME, MItems.ELECTROMAGNET) .unlockedBy(MItems.MACHINE_FRAME) .build(consumer) - MatteryRecipe(MItems.POWERED_BLAST_FURNACE, category = machinesCategory) + MatteryRecipe(MItems.POWERED_BLAST_FURNACE[null]!!, category = machinesCategory) .row(MItems.ELECTROMAGNET, Items.FURNACE, MItems.ELECTROMAGNET) .row(MItems.ELECTROMAGNET, MItems.MACHINE_FRAME, MItems.ELECTROMAGNET) .row(MItems.ELECTROMAGNET, Items.FURNACE, MItems.ELECTROMAGNET) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/DecorativesRecipes.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/DecorativesRecipes.kt index ef69bdd76..522c48dbc 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/DecorativesRecipes.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/DecorativesRecipes.kt @@ -233,7 +233,7 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu DyeColor.BLACK to Items.BLACK_STAINED_GLASS, ) - for (color in DyeColor.values()) { + for (color in DyeColor.entries) { val item = MRegistry.INDUSTRIAL_GLASS.items[color]!! val paneItem = MRegistry.INDUSTRIAL_GLASS_PANE.items[color]!! val mappedVanilla = mappingUpgradeVanilla[color]!! 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 2d02a538e..0169bbdb3 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 @@ -86,6 +86,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 ca1dbba7d..b6e7b3865 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 @@ -271,6 +271,32 @@ fun addPainterRecipes(consumer: RecipeOutput) { generate(consumer, MItems.TRITANIUM_DOOR[null]!!, MItems.TRITANIUM_DOOR) generate(consumer, MItems.TRITANIUM_TRAPDOOR[null]!!, MItems.TRITANIUM_TRAPDOOR) + val blocks = listOf( + MItems.COBBLESTONE_GENERATOR, + MItems.ESSENCE_STORAGE, + MItems.PLATE_PRESS, + MItems.TWIN_PLATE_PRESS, + MItems.ITEM_MONITOR, + MItems.MATTER_BOTTLER, + MItems.MATTER_RECONSTRUCTOR, + MItems.MATTER_REPLICATOR, + MItems.MATTER_SCANNER, + MItems.MATTER_CAPACITOR_BANK, + MItems.BATTERY_BANK, + MItems.MATTER_DECOMPOSER, + MItems.POWERED_SMOKER, + MItems.POWERED_FURNACE, + MItems.POWERED_BLAST_FURNACE, + MItems.MATTER_RECYCLER, + MItems.ANDROID_STATION, + ) + + for (list in blocks) { + generate(consumer, list[null]!!,list) + } + + generate(consumer, MRegistry.COMPUTER_TERMINAL.item, MRegistry.COMPUTER_TERMINAL.items) + generate(consumer, MRegistry.VENT.item, MRegistry.VENT.items) generate(consumer, MRegistry.VENT_ALTERNATIVE.item, MRegistry.VENT_ALTERNATIVE.items) generate(consumer, MItems.CARGO_CRATE_MINECARTS[null]!!, MItems.CARGO_CRATE_MINECARTS) @@ -288,5 +314,6 @@ fun addPainterRecipes(consumer: RecipeOutput) { for (color in DyeColor.entries) { consumer.accept(PainterArmorDyeRecipe(modLocation("painter/armor_dye_" + color.getName().lowercase()), mapOf(color to 1)).toFinished()) } + consumer.accept(PainterArmorDyeRecipe(modLocation("painter/armor_clear_dye"), mapOf(null to 15)).toFinished()) } 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 e70e7c839..5042d8d1c 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 @@ -6,6 +6,7 @@ import net.minecraft.tags.ItemTags import net.minecraft.world.effect.MobEffects import net.minecraft.world.item.Items import net.minecraft.world.item.Tiers +import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.Blocks import net.minecraftforge.common.Tags import ru.dbotthepony.mc.otm.registry.MBlockTags @@ -178,26 +179,26 @@ fun addTags(tagsProvider: TagsProvider) { tagsProvider.requiresPickaxe(MBlocks.PAINTER, Tiers.STONE) tagsProvider.requiresPickaxe(MBlocks.ENERGY_CABLES.values, Tiers.STONE) - tagsProvider.requiresPickaxe(listOf( - MBlocks.ANDROID_STATION, - MBlocks.BATTERY_BANK, - MBlocks.MATTER_DECOMPOSER, - MBlocks.MATTER_CAPACITOR_BANK, + tagsProvider.requiresPickaxe(listOf( + *MBlocks.ANDROID_STATION.values.toTypedArray(), + *MBlocks.BATTERY_BANK.values.toTypedArray(), + *MBlocks.MATTER_DECOMPOSER.values.toTypedArray(), + *MBlocks.MATTER_CAPACITOR_BANK.values.toTypedArray(), MBlocks.PATTERN_STORAGE, - MBlocks.MATTER_SCANNER, + *MBlocks.MATTER_SCANNER.values.toTypedArray(), MBlocks.MATTER_PANEL, - MBlocks.MATTER_REPLICATOR, - MBlocks.MATTER_BOTTLER, + *MBlocks.MATTER_REPLICATOR.values.toTypedArray(), + *MBlocks.MATTER_BOTTLER.values.toTypedArray(), MBlocks.ENERGY_COUNTER, MBlocks.CHEMICAL_GENERATOR, - MBlocks.PLATE_PRESS, - MBlocks.TWIN_PLATE_PRESS, - MBlocks.MATTER_RECYCLER, + *MBlocks.PLATE_PRESS.values.toTypedArray(), + *MBlocks.TWIN_PLATE_PRESS.values.toTypedArray(), + *MBlocks.MATTER_RECYCLER.values.toTypedArray(), MBlocks.MATTER_ENTANGLER, - MBlocks.POWERED_FURNACE, - MBlocks.POWERED_SMOKER, - MBlocks.POWERED_BLAST_FURNACE, + *MBlocks.POWERED_FURNACE.values.toTypedArray(), + *MBlocks.POWERED_SMOKER.values.toTypedArray(), + *MBlocks.POWERED_BLAST_FURNACE.values.toTypedArray(), MBlocks.STORAGE_BUS, MBlocks.STORAGE_IMPORTER, @@ -205,7 +206,7 @@ fun addTags(tagsProvider: TagsProvider) { MBlocks.DRIVE_VIEWER, MBlocks.DRIVE_RACK, - MBlocks.ITEM_MONITOR, + *MBlocks.ITEM_MONITOR.values.toTypedArray(), MBlocks.STORAGE_POWER_SUPPLIER, MBlocks.PHANTOM_ATTRACTOR, @@ -218,9 +219,9 @@ fun addTags(tagsProvider: TagsProvider) { MBlocks.ENGINE, MBlocks.HOLO_SIGN, - MBlocks.COBBLESTONE_GENERATOR, - MBlocks.ESSENCE_STORAGE, - MBlocks.MATTER_RECONSTRUCTOR, + *MBlocks.COBBLESTONE_GENERATOR.values.toTypedArray(), + *MBlocks.ESSENCE_STORAGE.values.toTypedArray(), + *MBlocks.MATTER_RECONSTRUCTOR.values.toTypedArray(), MBlocks.FLUID_TANK, MBlocks.ANDROID_CHARGER, ), Tiers.IRON) @@ -244,6 +245,7 @@ fun addTags(tagsProvider: TagsProvider) { tagsProvider.requiresPickaxe(MRegistry.VENT.allBlocks.values, Tiers.IRON) tagsProvider.requiresPickaxe(MRegistry.VENT_ALTERNATIVE.allBlocks.values, Tiers.IRON) tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_BLOCK.allBlocks.values, Tiers.IRON) + tagsProvider.requiresPickaxe(MRegistry.COMPUTER_TERMINAL.allBlocks.values, Tiers.STONE) tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_SLAB.allBlocks.values, Tiers.IRON) tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_WALL.allBlocks.values, Tiers.IRON) tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_PRESSURE_PLATE.allBlocks.values, Tiers.IRON) diff --git a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java index 424e15699..8f0b0c57b 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java +++ b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java @@ -241,6 +241,7 @@ public final class OverdriveThatMatters { EVENT_BUS.addListener(EventPriority.LOWEST, ClientTickHandlerKt::onClientTick); EVENT_BUS.addListener(EventPriority.HIGHEST, ClientTickHandlerKt::onClientConnected); EVENT_BUS.addListener(EventPriority.HIGHEST, ClientTickHandlerKt::onClientDisconnected); + EVENT_BUS.addListener(EventPriority.NORMAL, ClientTickHandlerKt::onClientPostRender); EVENT_BUS.addListener(EventPriority.NORMAL, ClientEventHandlerKt::tooltipEvent); EVENT_BUS.addListener(EventPriority.NORMAL, QuantumBatteryItem.Companion::clientDisconnect); @@ -254,5 +255,6 @@ public final class OverdriveThatMatters { EVENT_BUS.addListener(EventPriority.NORMAL, ExosuitModel::onPlayerRendered); event.enqueueWork(GlobalEventHandlerKt::recordClientThread); + event.enqueueWork(ClientTickHandlerKt::createCursors); } } diff --git a/src/main/java/ru/dbotthepony/mc/otm/shapes/BlockShapes.java b/src/main/java/ru/dbotthepony/mc/otm/shapes/BlockShapes.java index 6a1851dab..1bc232038 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/shapes/BlockShapes.java +++ b/src/main/java/ru/dbotthepony/mc/otm/shapes/BlockShapes.java @@ -785,7 +785,7 @@ public class BlockShapes { new SimpleCuboid(0.3125d, 1.000625d, 0.125d, 0.6875d, 1.000625d, 0.1875d) ); - public static final BlockShape POWERED_SMOKER_IDLE = new BlockShape( + public static final BlockShape POWERED_SMOKER = new BlockShape( new SimpleCuboid(0.0625d, 0d, 0.5d, 0.9375d, 0.25d, 0.9375d), new SimpleCuboid(0d, 0d, 0d, 1d, 0.25d, 0.5d), new SimpleCuboid(0d, 0.25d, 0d, 0.3125d, 1d, 1d), @@ -797,4 +797,11 @@ public class BlockShapes { new SimpleCuboid(0.3125d, 0.3125d, 0.0625d, 0.9375d, 0.875d, 0.0625d), new SimpleCuboid(0.3125d, 0.6875d, 0.5d, 0.375d, 0.875d, 0.8125d) ); + + public static final BlockShape COMPUTER_TERMINAL = new BlockShape( + new SimpleCuboid(0.0625d, 0d, 0.0625d, 0.9375d, 0.125d, 0.9375d), + new SimpleCuboid(0.0625d, 0.125d, 0.3125d, 0.9375d, 0.3125d, 0.9375d), + new SimpleCuboid(0.125d, 0.3125d, 0.25d, 0.875d, 0.9375d, 0.875d), + new SimpleCuboid(0.1875d, 0.5d, 0.875d, 0.8125d, 0.875d, 0.9375d) + ); } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt index ac7a3628d..f8eedfaa2 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/MatteryBlock.kt @@ -3,6 +3,8 @@ package ru.dbotthepony.mc.otm.block import com.google.common.collect.ImmutableMap import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap import it.unimi.dsi.fastutil.objects.Object2ObjectFunction +import it.unimi.dsi.fastutil.objects.ObjectIterators +import net.minecraft.ChatFormatting import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.core.particles.DustParticleOptions @@ -15,6 +17,8 @@ import net.minecraft.world.MenuProvider import net.minecraft.world.entity.LivingEntity import net.minecraft.world.entity.player.Player import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.TooltipFlag +import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.Level import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.EntityBlock @@ -27,13 +31,22 @@ import ru.dbotthepony.mc.otm.block.entity.IRedstoneControlled import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity import ru.dbotthepony.mc.otm.block.entity.MatteryDeviceBlockEntity import ru.dbotthepony.mc.otm.block.entity.WorkerState +import ru.dbotthepony.mc.otm.client.isShiftDown +import ru.dbotthepony.mc.otm.client.minecraft +import ru.dbotthepony.mc.otm.core.ITooltippable +import ru.dbotthepony.mc.otm.core.TranslatableComponent +import ru.dbotthepony.mc.otm.core.addAll +import ru.dbotthepony.mc.otm.core.addDescriptionFunctions +import ru.dbotthepony.mc.otm.core.addDescriptionLines import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom import ru.dbotthepony.mc.otm.core.math.component1 import ru.dbotthepony.mc.otm.core.math.component2 import ru.dbotthepony.mc.otm.core.math.component3 +import ru.dbotthepony.mc.otm.core.stream import ru.dbotthepony.mc.otm.core.tagNotNull import ru.dbotthepony.mc.otm.once +import java.util.stream.Stream fun Block.getShapeForEachState(properties: List>, fn: (BlockState) -> VoxelShape): Map { val builder = ImmutableMap.Builder() @@ -70,7 +83,7 @@ fun interface INeighbourChangeListener { ) } -abstract class MatteryBlock(properties: Properties = DEFAULT_PROPERTIES) : Block(properties), INeighbourChangeListener { +open class MatteryBlock(properties: Properties = DEFAULT_PROPERTIES) : Block(properties), INeighbourChangeListener, ITooltippable by ITooltippable.Impl() { override fun setPlacedBy( level: Level, blockPos: BlockPos, @@ -237,9 +250,17 @@ abstract class MatteryBlock(properties: Properties = DEFAULT_PROPERTIES) : Block } } + override fun appendHoverText(itemStack: ItemStack, blockAccessor: BlockGetter?, components: MutableList, tooltipType: TooltipFlag) { + super.appendHoverText(itemStack, blockAccessor, components, tooltipType) + assembleDescription(itemStack, components) + } + companion object { val DEFAULT_PROPERTIES: Properties = Properties.of(Material.METAL).requiresCorrectToolForDrops().destroyTime(1.5f).explosionResistance(25.0f) val DEFAULT_MACHINE_PROPERTIES: Properties = Properties.of(Material.HEAVY_METAL).requiresCorrectToolForDrops().destroyTime(1.5f).explosionResistance(25.0f) } } +fun T.addSimpleDescription(suffix: String = "", formatting: ChatFormatting = ChatFormatting.GRAY): T { + return addDescriptionFunctions { ObjectIterators.singleton(TranslatableComponent("$descriptionId.desc$suffix").withStyle(formatting)) } +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/RotatableMatteryBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/RotatableMatteryBlock.kt index 602ec1b99..b2ecb1775 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/RotatableMatteryBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/RotatableMatteryBlock.kt @@ -10,7 +10,7 @@ import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.BlockRotation import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom -abstract class RotatableMatteryBlock(properties: Properties = DEFAULT_PROPERTIES) : MatteryBlock(properties) { +open class RotatableMatteryBlock(properties: Properties = DEFAULT_PROPERTIES) : MatteryBlock(properties) { init { @Suppress("LeakingThis") registerDefaultState(getStateDefinition().any().setValue(rotationProperty, BlockRotation.SOUTH)) @@ -47,6 +47,7 @@ abstract class RotatableMatteryBlock(properties: Properties = DEFAULT_PROPERTIES } BlockRotationFreedom.FULL -> TODO("Can't rotate with four rotation freedom yet") + BlockRotationFreedom.NONE -> defaultBlockState() } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/DevChestBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/DevChestBlock.kt index af30a777e..d14e1710d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/DevChestBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/DevChestBlock.kt @@ -7,6 +7,7 @@ import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.material.Material import net.minecraft.world.level.material.PushReaction import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock +import ru.dbotthepony.mc.otm.block.addSimpleDescription import ru.dbotthepony.mc.otm.block.entity.decorative.DevChestBlockEntity class DevChestBlock : RotatableMatteryBlock(Properties.of(Material.METAL).destroyTime(-1f).explosionResistance(360000f)), EntityBlock { @@ -14,6 +15,10 @@ class DevChestBlock : RotatableMatteryBlock(Properties.of(Material.METAL).destro return DevChestBlockEntity(p_153215_, p_153216_) } + init { + addSimpleDescription() + } + override fun getPistonPushReaction(p_60584_: BlockState): PushReaction { return PushReaction.NORMAL } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/EngineBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/EngineBlock.kt index 3c26d807c..b62f3d1bf 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/EngineBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/EngineBlock.kt @@ -21,13 +21,13 @@ import ru.dbotthepony.mc.otm.shapes.BlockShapes class EngineBlock : RotatableMatteryBlock(Properties.of(Material.METAL, DyeColor.ORANGE).sound(SoundType.METAL).explosionResistance(14f).destroyTime(2.5f).requiresCorrectToolForDrops()) { override fun appendHoverText( - p_49816_: ItemStack, - p_49817_: BlockGetter?, - p_49818_: MutableList, - p_49819_: TooltipFlag + itemStack: ItemStack, + blockAccessor: BlockGetter?, + components: MutableList, + tooltipType: TooltipFlag ) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - p_49818_.add(TranslatableComponent("$descriptionId.desc").withStyle(ChatFormatting.DARK_GRAY)) + super.appendHoverText(itemStack, blockAccessor, components, tooltipType) + components.add(TranslatableComponent("$descriptionId.desc").withStyle(ChatFormatting.DARK_GRAY)) } override fun getPistonPushReaction(p_60584_: BlockState): PushReaction { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumDoorBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumDoorBlock.kt new file mode 100644 index 000000000..943606243 --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumDoorBlock.kt @@ -0,0 +1,51 @@ +package ru.dbotthepony.mc.otm.block.decorative + +import net.minecraft.ChatFormatting +import net.minecraft.core.BlockPos +import net.minecraft.network.chat.Component +import net.minecraft.world.entity.Entity +import net.minecraft.world.entity.monster.Zombie +import net.minecraft.world.item.DyeColor +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.TooltipFlag +import net.minecraft.world.level.BlockGetter +import net.minecraft.world.level.block.DoorBlock +import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.block.state.properties.BlockSetType +import net.minecraft.world.level.material.PushReaction +import ru.dbotthepony.mc.otm.core.TranslatableComponent + +class TritaniumDoorBlock(val color: DyeColor?) : DoorBlock( + Properties.of() + .mapColor(color ?: DyeColor.LIGHT_BLUE) + .explosionResistance(80f) + .noOcclusion() + .destroyTime(3f) + .pushReaction(PushReaction.DESTROY) + .requiresCorrectToolForDrops(), + BlockSetType.IRON +) { + override fun appendHoverText( + p_49816_: ItemStack, + p_49817_: BlockGetter?, + p_49818_: MutableList, + p_49819_: TooltipFlag + ) { + super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) + p_49818_.add(TranslatableComponent("$descriptionId.description0").withStyle(ChatFormatting.DARK_GRAY)) + p_49818_.add(TranslatableComponent("$descriptionId.description1").withStyle(ChatFormatting.DARK_GRAY)) + + if (color != null) { + p_49818_.add(TranslatableComponent("$descriptionId.description2").withStyle(ChatFormatting.DARK_GRAY)) + } + } + + override fun canEntityDestroy( + state: BlockState, + level: BlockGetter, + pos: BlockPos, + entity: Entity + ): Boolean { + return entity !is Zombie && super.canEntityDestroy(state, level, pos, entity) + } +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumTrapdoorBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumTrapdoorBlock.kt new file mode 100644 index 000000000..3a1c0de0e --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumTrapdoorBlock.kt @@ -0,0 +1,50 @@ +package ru.dbotthepony.mc.otm.block.decorative + +import net.minecraft.ChatFormatting +import net.minecraft.core.BlockPos +import net.minecraft.network.chat.Component +import net.minecraft.world.entity.Entity +import net.minecraft.world.entity.EntityType +import net.minecraft.world.entity.monster.Zombie +import net.minecraft.world.item.DyeColor +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.TooltipFlag +import net.minecraft.world.level.BlockGetter +import net.minecraft.world.level.block.TrapDoorBlock +import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.block.state.properties.BlockSetType +import ru.dbotthepony.mc.otm.core.TranslatableComponent + +class TritaniumTrapdoorBlock(val color: DyeColor?) : TrapDoorBlock( + Properties.of() + .mapColor(color ?: DyeColor.LIGHT_BLUE) + .explosionResistance(80f) + .noOcclusion().destroyTime(3f) + .requiresCorrectToolForDrops() + .isValidSpawn { _: BlockState, _: BlockGetter, _: BlockPos, _: EntityType<*>? -> false }, + BlockSetType.IRON +) { + override fun appendHoverText( + p_49816_: ItemStack, + p_49817_: BlockGetter?, + p_49818_: MutableList, + p_49819_: TooltipFlag + ) { + super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) + p_49818_.add(TranslatableComponent("$descriptionId.description0").withStyle(ChatFormatting.DARK_GRAY)) + p_49818_.add(TranslatableComponent("$descriptionId.description1").withStyle(ChatFormatting.DARK_GRAY)) + + if (color != null) { + p_49818_.add(TranslatableComponent("$descriptionId.description2").withStyle(ChatFormatting.DARK_GRAY)) + } + } + + override fun canEntityDestroy( + state: BlockState, + level: BlockGetter, + pos: BlockPos, + entity: Entity + ): Boolean { + return entity !is Zombie && super.canEntityDestroy(state, level, pos, entity) + } +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/HoloSignBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/HoloSignBlockEntity.kt index 3e2884aa4..c349afb9c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/HoloSignBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/decorative/HoloSignBlockEntity.kt @@ -25,12 +25,22 @@ class HoloSignBlockEntity(blockPos: BlockPos, blockState: BlockState) : MatteryB access.write(value) }) + var textRed by synchronizer.float(1f).property + var textGreen by synchronizer.float(1f).property + var textBlue by synchronizer.float(85f / 255f).property + var textAlpha by synchronizer.float(1f).property + var isLocked = false init { savetables.string(::signText) savetablesLevel.bool(::isLocked) savetables.stateful(::redstoneControl) + + savetables.float(::textRed) + savetables.float(::textGreen) + savetables.float(::textBlue) + savetables.float(::textAlpha) } override fun createMenu(p_39954_: Int, p_39955_: Inventory, p_39956_: Player): AbstractContainerMenu { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/PoweredFurnaceBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/AbstractPoweredFurnaceBlockEntity.kt similarity index 69% rename from src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/PoweredFurnaceBlockEntity.kt rename to src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/AbstractPoweredFurnaceBlockEntity.kt index f9975f87d..1135599f6 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/PoweredFurnaceBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/AbstractPoweredFurnaceBlockEntity.kt @@ -1,15 +1,15 @@ package ru.dbotthepony.mc.otm.block.entity.tech import net.minecraft.core.BlockPos -import net.minecraft.core.Direction import net.minecraft.server.level.ServerLevel -import net.minecraft.server.level.ServerPlayer -import net.minecraft.world.entity.ExperienceOrb import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Player import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.item.crafting.AbstractCookingRecipe +import net.minecraft.world.item.crafting.BlastingRecipe import net.minecraft.world.item.crafting.RecipeType +import net.minecraft.world.item.crafting.SmeltingRecipe +import net.minecraft.world.item.crafting.SmokingRecipe import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState import net.minecraftforge.common.capabilities.ForgeCapabilities @@ -35,18 +35,20 @@ import ru.dbotthepony.mc.otm.core.immutableList import ru.dbotthepony.mc.otm.core.value import ru.dbotthepony.mc.otm.menu.tech.PoweredFurnaceMenu import ru.dbotthepony.mc.otm.recipe.MatteryCookingRecipe +import ru.dbotthepony.mc.otm.recipe.MicrowaveRecipe import ru.dbotthepony.mc.otm.registry.MBlockEntities +import ru.dbotthepony.mc.otm.registry.MRecipes -class PoweredFurnaceBlockEntity( - type: BlockEntityType, +sealed class AbstractPoweredFurnaceBlockEntity

( + type: BlockEntityType<*>, blockPos: BlockPos, blockState: BlockState, - val recipeType: RecipeType, - val secondaryRecipeType: (() -> RecipeType)?, + val recipeType: RecipeType

, + val secondaryRecipeType: RecipeType?, val config: WorkerBalanceValues ) : MatteryWorkerBlockEntity(type, blockPos, blockState, ItemJob.CODEC, 2) { - override val upgrades = UpgradeContainer(this::markDirtyFast, 2, UpgradeType.BASIC_PROCESSING) - override val energy = ProfiledEnergyStorage(WorkerEnergyStorage(this::energyLevelUpdated, upgrades.transform(config))) + final override val upgrades = UpgradeContainer(this::markDirtyFast, 2, UpgradeType.BASIC_PROCESSING) + final override val energy = ProfiledEnergyStorage(WorkerEnergyStorage(this::energyLevelUpdated, upgrades.transform(config))) val inputs = immutableList(2) { MatteryContainer(this::itemContainerUpdated, 1) } val outputs = immutableList(2) { MatteryContainer(this::itemContainerUpdated, 1) } @@ -86,15 +88,6 @@ class PoweredFurnaceBlockEntity( super.tick() } - override fun createMenu(containerID: Int, inventory: Inventory, ply: Player): AbstractContainerMenu? { - return when (type) { - MBlockEntities.POWERED_FURNACE -> PoweredFurnaceMenu.furnace(containerID, inventory, this) - MBlockEntities.POWERED_BLAST_FURNACE -> PoweredFurnaceMenu.blasting(containerID, inventory, this) - MBlockEntities.POWERED_SMOKER -> PoweredFurnaceMenu.smoking(containerID, inventory, this) - else -> null - } - } - override fun onJobFinish(status: JobStatus, id: Int) { if (outputs[id].fullyAddItem(status.job.itemStack)) { experience.storeExperience(status.experience, this) @@ -114,7 +107,7 @@ class PoweredFurnaceBlockEntity( if (secondaryRecipeType != null) { val recipe = level.recipeManager - .byType(secondaryRecipeType.invoke() as RecipeType) + .byType(secondaryRecipeType) .values .iterator() .filter { it.value.matches(inputs[id], 0) } @@ -135,7 +128,7 @@ class PoweredFurnaceBlockEntity( } } - return level.recipeManager.getRecipeFor(recipeType as RecipeType, inputs[id], level).map { + return level.recipeManager.getRecipeFor(recipeType, inputs[id], level).map { val output = it.value.assemble(inputs[id], level.registryAccess()) val toProcess = inputs[id][0].count.coerceAtMost(upgrades.processingItems + 1) inputs[id][0].shrink(toProcess) @@ -146,3 +139,21 @@ class PoweredFurnaceBlockEntity( }.orElse(JobContainer.noItem()) } } + +class PoweredFurnaceBlockEntity(blockPos: BlockPos, blockState: BlockState) : AbstractPoweredFurnaceBlockEntity(MBlockEntities.POWERED_FURNACE, blockPos, blockState, RecipeType.SMELTING, null, MachinesConfig.POWERED_FURNACE) { + override fun createMenu(containerID: Int, inventory: Inventory, ply: Player): AbstractContainerMenu { + return PoweredFurnaceMenu.furnace(containerID, inventory, this) + } +} + +class PoweredBlastFurnaceBlockEntity(blockPos: BlockPos, blockState: BlockState) : AbstractPoweredFurnaceBlockEntity(MBlockEntities.POWERED_BLAST_FURNACE, blockPos, blockState, RecipeType.BLASTING, null, MachinesConfig.POWERED_FURNACE) { + override fun createMenu(containerID: Int, inventory: Inventory, ply: Player): AbstractContainerMenu { + return PoweredFurnaceMenu.blasting(containerID, inventory, this) + } +} + +class PoweredSmokerBlockEntity(blockPos: BlockPos, blockState: BlockState) : AbstractPoweredFurnaceBlockEntity(MBlockEntities.POWERED_SMOKER, blockPos, blockState, RecipeType.SMOKING, MRecipes.MICROWAVE, MachinesConfig.POWERED_FURNACE) { + override fun createMenu(containerID: Int, inventory: Inventory, ply: Player): AbstractContainerMenu { + return PoweredFurnaceMenu.smoking(containerID, inventory, this) + } +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/EssenceStorageBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/EssenceStorageBlockEntity.kt index 5acf1f262..58a1d287c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/EssenceStorageBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/EssenceStorageBlockEntity.kt @@ -61,6 +61,8 @@ class EssenceStorageBlockEntity(blockPos: BlockPos, blockState: BlockState) : Ma ) ) + val fluidConfig = ConfigurableFluidHandler(this) + override fun getTanks(): Int { return 1 } @@ -69,10 +71,10 @@ class EssenceStorageBlockEntity(blockPos: BlockPos, blockState: BlockState) : Ma if (tank != 0) return FluidStack.EMPTY - if (experienceStored >= 2_000_000_000L) + if ((experienceStored * XP_TO_LIQUID_RATIO) >= 2_000_000_000L) return FluidStack(MFluids.LIQUID_XP, 2_000_000_000) - return FluidStack(MFluids.LIQUID_XP, experienceStored.toInt()) + return FluidStack(MFluids.LIQUID_XP, (experienceStored * XP_TO_LIQUID_RATIO).toInt()) } override fun getTankCapacity(tank: Int): Int { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterBottlerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterBottlerBlock.kt index 7dd4a1876..ab6cf9e08 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterBottlerBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterBottlerBlock.kt @@ -1,6 +1,7 @@ package ru.dbotthepony.mc.otm.block.matter import net.minecraft.core.BlockPos +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.context.BlockPlaceContext import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.Level @@ -22,7 +23,7 @@ import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.shapes.BlockShapes -class MatterBottlerBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class MatterBottlerBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity { return MatterBottlerBlockEntity(blockPos, blockState) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterCapacitorBankBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterCapacitorBankBlock.kt index 8dd5f1d73..ff66222dd 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterCapacitorBankBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterCapacitorBankBlock.kt @@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.block.matter import net.minecraft.core.BlockPos import net.minecraft.core.Direction +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.context.BlockPlaceContext import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.block.Block @@ -18,7 +19,7 @@ import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.shapes.BlockShapes -class MatterCapacitorBankBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class MatterCapacitorBankBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity { return MatterCapacitorBankBlockEntity(blockPos, blockState) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterDecomposerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterDecomposerBlock.kt index 8a3034140..dbaa8d39b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterDecomposerBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterDecomposerBlock.kt @@ -4,6 +4,7 @@ import net.minecraft.MethodsReturnNonnullByDefault import javax.annotation.ParametersAreNonnullByDefault import net.minecraft.world.level.block.EntityBlock import net.minecraft.core.BlockPos +import net.minecraft.world.item.DyeColor import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.entity.BlockEntity import ru.dbotthepony.mc.otm.block.entity.matter.MatterDecomposerBlockEntity @@ -22,7 +23,7 @@ import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.shapes.BlockShapes -class MatterDecomposerBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class MatterDecomposerBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity { return MatterDecomposerBlockEntity(blockPos, blockState) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterReconstructorBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterReconstructorBlock.kt index 3452c1ff2..268b31ddc 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterReconstructorBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterReconstructorBlock.kt @@ -1,6 +1,7 @@ package ru.dbotthepony.mc.otm.block.matter import net.minecraft.core.BlockPos +import net.minecraft.world.item.DyeColor import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.Level import net.minecraft.world.level.block.EntityBlock @@ -11,12 +12,13 @@ import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock +import ru.dbotthepony.mc.otm.block.addSimpleDescription import ru.dbotthepony.mc.otm.block.entity.matter.MatterReconstructorBlockEntity import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.shapes.BlockShapes -class MatterReconstructorBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class MatterReconstructorBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { override fun newBlockEntity(pPos: BlockPos, pState: BlockState): BlockEntity { return MatterReconstructorBlockEntity(pPos, pState) } @@ -28,6 +30,10 @@ class MatterReconstructorBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIE return BlockEntityTicker { _, _, _, pBlockEntity -> if (pBlockEntity is MatterReconstructorBlockEntity) pBlockEntity.tick() } } + init { + addSimpleDescription() + } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.MATTER_RECONSTRUCTOR.rotateFromNorth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterRecyclerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterRecyclerBlock.kt index 13d2bcd0f..c09532a21 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterRecyclerBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterRecyclerBlock.kt @@ -1,6 +1,7 @@ package ru.dbotthepony.mc.otm.block.matter import net.minecraft.core.BlockPos +import net.minecraft.world.item.DyeColor import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.Level import net.minecraft.world.level.block.Block @@ -20,7 +21,7 @@ import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.shapes.BlockShapes -class MatterRecyclerBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class MatterRecyclerBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { override fun newBlockEntity(p_153215_: BlockPos, p_153216_: BlockState): BlockEntity { return MatterRecyclerBlockEntity(p_153215_, p_153216_) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterReplicatorBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterReplicatorBlock.kt index a51b83ae5..b20b79b6d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterReplicatorBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterReplicatorBlock.kt @@ -1,6 +1,7 @@ package ru.dbotthepony.mc.otm.block.matter import net.minecraft.core.BlockPos +import net.minecraft.world.item.DyeColor import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.Level import net.minecraft.world.level.block.Block @@ -20,7 +21,7 @@ import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.shapes.BlockShapes -class MatterReplicatorBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class MatterReplicatorBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity { return MatterReplicatorBlockEntity(blockPos, blockState) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterScannerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterScannerBlock.kt index 53cc306ca..b7ae511aa 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterScannerBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/matter/MatterScannerBlock.kt @@ -1,6 +1,7 @@ package ru.dbotthepony.mc.otm.block.matter import net.minecraft.core.BlockPos +import net.minecraft.world.item.DyeColor import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.Level import net.minecraft.world.level.block.Block @@ -20,7 +21,7 @@ import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.shapes.BlockShapes -class MatterScannerBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class MatterScannerBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity { return MatterScannerBlockEntity(blockPos, blockState) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveRackBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveRackBlock.kt index 8f4ecc071..0d648cd60 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveRackBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveRackBlock.kt @@ -39,14 +39,14 @@ class DriveRackBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), Entity } override fun appendHoverText( - p_49816_: ItemStack, - p_49817_: BlockGetter?, - p_49818_: MutableList, - p_49819_: TooltipFlag + itemStack: ItemStack, + blockAccessor: BlockGetter?, + components: MutableList, + tooltipType: TooltipFlag ) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - WorkerEnergyStorage.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - MatteryPoweredBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) + super.appendHoverText(itemStack, blockAccessor, components, tooltipType) + WorkerEnergyStorage.appendHoverText(itemStack, blockAccessor, components, tooltipType) + MatteryPoweredBlockEntity.appendHoverText(itemStack, blockAccessor, components, tooltipType) } private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.DRIVE_RACK.rotateFromNorth(it[rotationProperty]).computeShape() } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveViewerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveViewerBlock.kt index 03a0bb47c..f0c35ec79 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveViewerBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/DriveViewerBlock.kt @@ -50,14 +50,14 @@ class DriveViewerBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), Enti } override fun appendHoverText( - p_49816_: ItemStack, - p_49817_: BlockGetter?, - p_49818_: MutableList, - p_49819_: TooltipFlag + itemStack: ItemStack, + blockAccessor: BlockGetter?, + components: MutableList, + tooltipType: TooltipFlag ) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - WorkerEnergyStorage.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - MatteryPoweredBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) + super.appendHoverText(itemStack, blockAccessor, components, tooltipType) + WorkerEnergyStorage.appendHoverText(itemStack, blockAccessor, components, tooltipType) + MatteryPoweredBlockEntity.appendHoverText(itemStack, blockAccessor, components, tooltipType) } override fun getStateForPlacement(context: BlockPlaceContext): BlockState { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/ItemMonitorBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/ItemMonitorBlock.kt index 32dd33264..957dbc9e8 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/ItemMonitorBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/ItemMonitorBlock.kt @@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.block.storage import net.minecraft.core.BlockPos import net.minecraft.network.chat.Component +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.ItemStack import net.minecraft.world.item.TooltipFlag import net.minecraft.world.level.BlockGetter @@ -22,7 +23,7 @@ import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.shapes.BlockShapes -class ItemMonitorBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class ItemMonitorBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity { return ItemMonitorBlockEntity(blockPos, blockState) } @@ -39,14 +40,14 @@ class ItemMonitorBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), Enti } override fun appendHoverText( - p_49816_: ItemStack, - p_49817_: BlockGetter?, - p_49818_: MutableList, - p_49819_: TooltipFlag + itemStack: ItemStack, + blockAccessor: BlockGetter?, + components: MutableList, + tooltipType: TooltipFlag ) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - WorkerEnergyStorage.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - MatteryPoweredBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) + super.appendHoverText(itemStack, blockAccessor, components, tooltipType) + WorkerEnergyStorage.appendHoverText(itemStack, blockAccessor, components, tooltipType) + MatteryPoweredBlockEntity.appendHoverText(itemStack, blockAccessor, components, tooltipType) } private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.ITEM_MONITOR.rotateFromNorth(it[rotationProperty]).computeShape() } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StorageBusBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StorageBusBlock.kt index 568ec92e9..1f5f3f58e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StorageBusBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StorageBusBlock.kt @@ -20,7 +20,6 @@ import net.minecraft.world.phys.shapes.Shapes import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.CableBlock import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock -import ru.dbotthepony.mc.otm.block.StorageCableBlock import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.block.entity.storage.StorageBusBlockEntity import ru.dbotthepony.mc.otm.capability.energy.WorkerEnergyStorage @@ -55,14 +54,14 @@ class StorageBusBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), Entit } override fun appendHoverText( - p_49816_: ItemStack, - p_49817_: BlockGetter?, - p_49818_: MutableList, - p_49819_: TooltipFlag + itemStack: ItemStack, + blockAccessor: BlockGetter?, + components: MutableList, + tooltipType: TooltipFlag ) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - WorkerEnergyStorage.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - MatteryPoweredBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) + super.appendHoverText(itemStack, blockAccessor, components, tooltipType) + WorkerEnergyStorage.appendHoverText(itemStack, blockAccessor, components, tooltipType) + MatteryPoweredBlockEntity.appendHoverText(itemStack, blockAccessor, components, tooltipType) } override fun createBlockStateDefinition(builder: StateDefinition.Builder) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StorageInterfaces.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StorageInterfaces.kt index aaef6b7f4..243af2941 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StorageInterfaces.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StorageInterfaces.kt @@ -20,7 +20,6 @@ import net.minecraft.world.phys.shapes.Shapes import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.CableBlock import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock -import ru.dbotthepony.mc.otm.block.StorageCableBlock import ru.dbotthepony.mc.otm.block.entity.MatteryPoweredBlockEntity import ru.dbotthepony.mc.otm.block.entity.storage.StorageExporterBlockEntity import ru.dbotthepony.mc.otm.block.entity.storage.StorageImporterBlockEntity @@ -80,14 +79,14 @@ class StorageImporterBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), } override fun appendHoverText( - p_49816_: ItemStack, - p_49817_: BlockGetter?, - p_49818_: MutableList, - p_49819_: TooltipFlag + itemStack: ItemStack, + blockAccessor: BlockGetter?, + components: MutableList, + tooltipType: TooltipFlag ) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - WorkerEnergyStorage.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - MatteryPoweredBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) + super.appendHoverText(itemStack, blockAccessor, components, tooltipType) + WorkerEnergyStorage.appendHoverText(itemStack, blockAccessor, components, tooltipType) + MatteryPoweredBlockEntity.appendHoverText(itemStack, blockAccessor, components, tooltipType) } private val shapes = getShapeForEachState { @@ -138,14 +137,14 @@ class StorageExporterBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), } override fun appendHoverText( - p_49816_: ItemStack, - p_49817_: BlockGetter?, - p_49818_: MutableList, - p_49819_: TooltipFlag + itemStack: ItemStack, + blockAccessor: BlockGetter?, + components: MutableList, + tooltipType: TooltipFlag ) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - WorkerEnergyStorage.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - MatteryPoweredBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) + super.appendHoverText(itemStack, blockAccessor, components, tooltipType) + WorkerEnergyStorage.appendHoverText(itemStack, blockAccessor, components, tooltipType) + MatteryPoweredBlockEntity.appendHoverText(itemStack, blockAccessor, components, tooltipType) } override fun getTicker( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StoragePowerSupplierBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StoragePowerSupplierBlock.kt index 0f756e32e..18562a541 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StoragePowerSupplierBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/storage/StoragePowerSupplierBlock.kt @@ -39,14 +39,14 @@ class StoragePowerSupplierBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTI } override fun appendHoverText( - p_49816_: ItemStack, - p_49817_: BlockGetter?, - p_49818_: MutableList, - p_49819_: TooltipFlag + itemStack: ItemStack, + blockAccessor: BlockGetter?, + components: MutableList, + tooltipType: TooltipFlag ) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - WorkerEnergyStorage.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - MatteryPoweredBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) + super.appendHoverText(itemStack, blockAccessor, components, tooltipType) + WorkerEnergyStorage.appendHoverText(itemStack, blockAccessor, components, tooltipType) + MatteryPoweredBlockEntity.appendHoverText(itemStack, blockAccessor, components, tooltipType) } private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.STORAGE_POWER_SUPPLIER.rotateFromNorth(it[rotationProperty]).computeShape() } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PoweredFurnaceBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AbstractPoweredFurnaceBlock.kt similarity index 62% rename from src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PoweredFurnaceBlock.kt rename to src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AbstractPoweredFurnaceBlock.kt index 54eda35b1..d6ed29b73 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PoweredFurnaceBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AbstractPoweredFurnaceBlock.kt @@ -1,8 +1,7 @@ package ru.dbotthepony.mc.otm.block.tech import net.minecraft.core.BlockPos -import net.minecraft.world.item.crafting.AbstractCookingRecipe -import net.minecraft.world.item.crafting.RecipeType +import net.minecraft.world.item.DyeColor import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.Level import net.minecraft.world.level.block.Block @@ -17,23 +16,22 @@ import net.minecraft.world.phys.shapes.Shapes import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.entity.WorkerState -import ru.dbotthepony.mc.otm.block.entity.tech.EssenceStorageBlockEntity +import ru.dbotthepony.mc.otm.block.entity.tech.AbstractPoweredFurnaceBlockEntity +import ru.dbotthepony.mc.otm.block.entity.tech.PoweredBlastFurnaceBlockEntity import ru.dbotthepony.mc.otm.block.entity.tech.PoweredFurnaceBlockEntity +import ru.dbotthepony.mc.otm.block.entity.tech.PoweredSmokerBlockEntity import ru.dbotthepony.mc.otm.block.getShapeForEachState -import ru.dbotthepony.mc.otm.config.WorkerBalanceValues import ru.dbotthepony.mc.otm.core.get -import ru.dbotthepony.mc.otm.recipe.MatteryCookingRecipe import ru.dbotthepony.mc.otm.shapes.BlockShape +import ru.dbotthepony.mc.otm.shapes.BlockShapes -class PoweredFurnaceBlock( - val type: () -> BlockEntityType, - val recipeType: RecipeType, - val secondaryRecipeType: (() -> RecipeType)?, - val config: WorkerBalanceValues, +sealed class AbstractPoweredFurnaceBlock>( + val color: DyeColor?, + val factory: (BlockPos, BlockState) -> T, shape: BlockShape? ) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { - override fun newBlockEntity(p_153215_: BlockPos, p_153216_: BlockState): PoweredFurnaceBlockEntity { - return PoweredFurnaceBlockEntity(type.invoke(), p_153215_, p_153216_, recipeType, secondaryRecipeType, config) + override fun newBlockEntity(p_153215_: BlockPos, p_153216_: BlockState): T { + return factory(p_153215_, p_153216_) } override fun createBlockStateDefinition(builder: StateDefinition.Builder) { @@ -59,6 +57,10 @@ class PoweredFurnaceBlock( if (p_153212_.isClientSide) return null - return BlockEntityTicker { _, _, _, tile -> if (tile is PoweredFurnaceBlockEntity) tile.tick() } + return BlockEntityTicker { _, _, _, tile -> if (tile is AbstractPoweredFurnaceBlockEntity<*, *>) tile.tick() } } } + +class PoweredFurnaceBlock(color: DyeColor?) : AbstractPoweredFurnaceBlock(color, ::PoweredFurnaceBlockEntity, BlockShapes.POWERED_FURNACE) +class PoweredBlastFurnaceBlock(color: DyeColor?) : AbstractPoweredFurnaceBlock(color, ::PoweredBlastFurnaceBlockEntity, BlockShapes.POWERED_BLAST_FURNACE) +class PoweredSmokerBlock(color: DyeColor?) : AbstractPoweredFurnaceBlock(color, ::PoweredSmokerBlockEntity, BlockShapes.POWERED_SMOKER) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AndroidChargerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AndroidChargerBlock.kt index 94845f127..f38a4e54f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AndroidChargerBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AndroidChargerBlock.kt @@ -144,12 +144,12 @@ class AndroidChargerBlock : RotatableMatteryBlock(Properties.of(Material.METAL). } } - override fun appendHoverText(p_49816_: ItemStack, p_49817_: BlockGetter?, p_49818_: MutableList, p_49819_: TooltipFlag) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) + override fun appendHoverText(itemStack: ItemStack, blockAccessor: BlockGetter?, components: MutableList, tooltipType: TooltipFlag) { + super.appendHoverText(itemStack, blockAccessor, components, tooltipType) - p_49818_.add(TranslatableComponent("$descriptionId.desc").withStyle(ChatFormatting.GRAY)) - WorkerEnergyStorage.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - MatteryPoweredBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) + components.add(TranslatableComponent("$descriptionId.desc").withStyle(ChatFormatting.GRAY)) + WorkerEnergyStorage.appendHoverText(itemStack, blockAccessor, components, tooltipType) + MatteryPoweredBlockEntity.appendHoverText(itemStack, blockAccessor, components, tooltipType) } private val shapes = getShapeForEachState(listOf(rotationProperty, PART)) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AndroidStationBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AndroidStationBlock.kt index 962af67b5..49ac0670d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AndroidStationBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/AndroidStationBlock.kt @@ -5,6 +5,7 @@ import net.minecraft.network.chat.Component import net.minecraft.world.InteractionHand import net.minecraft.world.InteractionResult import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.ItemStack import net.minecraft.world.item.TooltipFlag import net.minecraft.world.level.BlockGetter @@ -29,7 +30,7 @@ import ru.dbotthepony.mc.otm.core.orNull import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.shapes.BlockShapes -class AndroidStationBlock : MatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class AndroidStationBlock(val color: DyeColor?) : MatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { override fun use( blockState: BlockState, level: Level, @@ -52,14 +53,14 @@ class AndroidStationBlock : MatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBloc } override fun appendHoverText( - p_49816_: ItemStack, - p_49817_: BlockGetter?, - p_49818_: MutableList, - p_49819_: TooltipFlag + itemStack: ItemStack, + blockAccessor: BlockGetter?, + components: MutableList, + tooltipType: TooltipFlag ) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - WorkerEnergyStorage.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - MatteryPoweredBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) + super.appendHoverText(itemStack, blockAccessor, components, tooltipType) + WorkerEnergyStorage.appendHoverText(itemStack, blockAccessor, components, tooltipType) + MatteryPoweredBlockEntity.appendHoverText(itemStack, blockAccessor, components, tooltipType) } override fun getShape( diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/BatteryBankBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/BatteryBankBlock.kt index c5f7f9c87..9bee0b46c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/BatteryBankBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/BatteryBankBlock.kt @@ -12,6 +12,7 @@ import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.entity.BlockEntityTicker import net.minecraft.world.level.block.state.StateDefinition import net.minecraft.core.BlockPos +import net.minecraft.world.item.DyeColor import ru.dbotthepony.mc.otm.block.entity.tech.BatteryBankBlockEntity import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.Level @@ -25,9 +26,7 @@ import ru.dbotthepony.mc.otm.oncePre import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.shapes.BlockShapes -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -class BatteryBankBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class BatteryBankBlock(val color: DyeColor?) : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { override fun getTicker( level: Level, p_153213_: BlockState, diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/ChemicalGeneratorBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/ChemicalGeneratorBlock.kt index 3ba037ad4..48e4ca6ee 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/ChemicalGeneratorBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/ChemicalGeneratorBlock.kt @@ -1,10 +1,7 @@ package ru.dbotthepony.mc.otm.block.tech -import net.minecraft.ChatFormatting import net.minecraft.core.BlockPos -import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component -import net.minecraft.world.item.BlockItem import net.minecraft.world.item.ItemStack import net.minecraft.world.item.TooltipFlag import net.minecraft.world.level.BlockGetter @@ -19,18 +16,11 @@ import net.minecraft.world.level.block.state.StateDefinition import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock -import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity import ru.dbotthepony.mc.otm.block.entity.tech.ChemicalGeneratorBlockEntity -import ru.dbotthepony.mc.otm.block.entity.MatteryDeviceBlockEntity import ru.dbotthepony.mc.otm.block.entity.WorkerState import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.capability.energy.GeneratorEnergyStorage -import ru.dbotthepony.mc.otm.capability.energy.ItemEnergyStorageImpl -import ru.dbotthepony.mc.otm.container.MatteryContainer -import ru.dbotthepony.mc.otm.core.TranslatableComponent import ru.dbotthepony.mc.otm.core.get -import ru.dbotthepony.mc.otm.core.nbt.map -import ru.dbotthepony.mc.otm.oncePre import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.shapes.BlockShapes @@ -57,12 +47,12 @@ class ChemicalGeneratorBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES) override fun appendHoverText( itemStack: ItemStack, - p_49817_: BlockGetter?, + blockAccessor: BlockGetter?, tooltips: MutableList, - p_49819_: TooltipFlag + tooltipType: TooltipFlag ) { - super.appendHoverText(itemStack, p_49817_, tooltips, p_49819_) - GeneratorEnergyStorage.appendHoverText(itemStack, p_49817_, tooltips, p_49819_) + super.appendHoverText(itemStack, blockAccessor, tooltips, tooltipType) + GeneratorEnergyStorage.appendHoverText(itemStack, blockAccessor, tooltips, tooltipType) } private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.CHEMICAL_GENERATOR.rotateFromNorth(it[rotationProperty]).computeShape() } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/CobblerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/CobblerBlock.kt index 5da695907..112bf0bc0 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/CobblerBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/CobblerBlock.kt @@ -1,6 +1,7 @@ package ru.dbotthepony.mc.otm.block.tech import net.minecraft.core.BlockPos +import net.minecraft.world.item.DyeColor import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.Level import net.minecraft.world.level.block.EntityBlock @@ -8,15 +9,18 @@ import net.minecraft.world.level.block.entity.BlockEntity import net.minecraft.world.level.block.entity.BlockEntityTicker import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.material.MapColor +import net.minecraft.world.level.material.PushReaction import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.block.entity.tech.CobblerBlockEntity import ru.dbotthepony.mc.otm.core.get +import ru.dbotthepony.mc.otm.core.needsNoPowerDescription import ru.dbotthepony.mc.otm.shapes.BlockShapes -class CobblerBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class CobblerBlock(val color: DyeColor?) : RotatableMatteryBlock(Properties.of().mapColor(color?.mapColor ?: MapColor.METAL).pushReaction(PushReaction.BLOCK).requiresCorrectToolForDrops().destroyTime(1.5f).explosionResistance(25.0f)), EntityBlock { override fun newBlockEntity(pPos: BlockPos, pState: BlockState): BlockEntity { return CobblerBlockEntity(pPos, pState) } @@ -33,6 +37,10 @@ class CobblerBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBl return null } + init { + needsNoPowerDescription() + } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.COBBLESTONE_GENERATOR.rotateFromNorth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyServoBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyServoBlock.kt index 6a132d543..6aa490795 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyServoBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EnergyServoBlock.kt @@ -15,6 +15,7 @@ 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 +import ru.dbotthepony.mc.otm.block.addSimpleDescription import ru.dbotthepony.mc.otm.block.entity.tech.EnergyServoBlockEntity import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get @@ -42,6 +43,10 @@ class EnergyServoBlock : RotatableMatteryBlock(Properties.of(Material.METAL, Dye return null } + init { + addSimpleDescription() + } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.ENERGY_SERVO.rotateFromNorth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EssenceStorageBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EssenceStorageBlock.kt index 41eb4826a..e57d06360 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EssenceStorageBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EssenceStorageBlock.kt @@ -4,6 +4,7 @@ import net.minecraft.core.BlockPos import net.minecraft.world.InteractionHand import net.minecraft.world.InteractionResult import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.DyeColor import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.Level import net.minecraft.world.level.block.EntityBlock @@ -11,17 +12,20 @@ import net.minecraft.world.level.block.entity.BlockEntity import net.minecraft.world.level.block.entity.BlockEntityTicker import net.minecraft.world.level.block.entity.BlockEntityType import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.level.material.MapColor +import net.minecraft.world.level.material.PushReaction import net.minecraft.world.phys.BlockHitResult import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock +import ru.dbotthepony.mc.otm.block.addSimpleDescription import ru.dbotthepony.mc.otm.block.entity.tech.EssenceStorageBlockEntity import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.registry.MItems import ru.dbotthepony.mc.otm.shapes.BlockShapes -class EssenceStorageBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), EntityBlock { +class EssenceStorageBlock(val color: DyeColor?) : RotatableMatteryBlock(Properties.of().mapColor(color?.mapColor ?: MapColor.METAL).pushReaction(PushReaction.BLOCK).requiresCorrectToolForDrops().destroyTime(1.5f).explosionResistance(60.0f)), EntityBlock { override fun newBlockEntity(pPos: BlockPos, pState: BlockState): BlockEntity { return EssenceStorageBlockEntity(pPos, pState) } @@ -43,6 +47,10 @@ class EssenceStorageBlock : RotatableMatteryBlock(DEFAULT_MACHINE_PROPERTIES), E return super.use(blockState, level, blockPos, ply, hand, blockHitResult) } + init { + addSimpleDescription() + } + private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.ESSENCE_STORAGE.rotateFromNorth(it[rotationProperty]).computeShape() } @Suppress("override_deprecation") diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/GravitationStabilizerBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/GravitationStabilizerBlock.kt index 71ebb5841..c16e0a14e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/GravitationStabilizerBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/GravitationStabilizerBlock.kt @@ -1,5 +1,6 @@ package ru.dbotthepony.mc.otm.block.tech +import net.minecraft.ChatFormatting import net.minecraft.core.BlockPos import net.minecraft.core.Direction import net.minecraft.core.SectionPos @@ -24,6 +25,7 @@ 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 +import ru.dbotthepony.mc.otm.block.addSimpleDescription import ru.dbotthepony.mc.otm.block.entity.tech.GravitationStabilizerBlockEntity import ru.dbotthepony.mc.otm.block.entity.blackhole.BlackHoleBlockEntity import ru.dbotthepony.mc.otm.block.entity.WorkerState @@ -31,6 +33,7 @@ import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom import ru.dbotthepony.mc.otm.core.math.plus import ru.dbotthepony.mc.otm.core.math.times +import ru.dbotthepony.mc.otm.core.needsNoPowerDescription import ru.dbotthepony.mc.otm.oncePre import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.registry.MBlocks @@ -145,6 +148,13 @@ class BlockGravitationStabilizer : RotatableMatteryBlock(props), EntityBlock { return SHAPES[p_60555_[BlockRotationFreedom.DIRECTIONAL].ordinal] } + init { + addSimpleDescription() + needsNoPowerDescription(ChatFormatting.DARK_GRAY) + addSimpleDescription("2", ChatFormatting.DARK_GRAY) + addSimpleDescription("3", ChatFormatting.DARK_GRAY) + } + companion object { private val SHAPES = arrayOf( BlockShapes.GRAVITATION_STABILIZER.rotateAroundX(PI / 2).computeShape(), diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PhantomAttractorBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PhantomAttractorBlock.kt index b654f1e0a..a44f32ff4 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PhantomAttractorBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/PhantomAttractorBlock.kt @@ -28,10 +28,12 @@ import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape import net.minecraftforge.event.ForgeEventFactory import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock +import ru.dbotthepony.mc.otm.block.addSimpleDescription import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.math.minus import ru.dbotthepony.mc.otm.core.math.plus +import ru.dbotthepony.mc.otm.core.needsNoPowerDescription import ru.dbotthepony.mc.otm.once import ru.dbotthepony.mc.otm.registry.MBlocks import ru.dbotthepony.mc.otm.shapes.BlockShapes @@ -139,4 +141,9 @@ class PhantomAttractorBlock : RotatableMatteryBlock(Properties.of(Material.METAL } } } + + init { + addSimpleDescription() + needsNoPowerDescription() + } } 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..8bafde210 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,18 +14,19 @@ 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 import ru.dbotthepony.mc.otm.block.entity.MatteryWorkerBlockEntity import ru.dbotthepony.mc.otm.block.entity.tech.PlatePressBlockEntity import ru.dbotthepony.mc.otm.block.entity.WorkerState -import ru.dbotthepony.mc.otm.block.entity.tech.EssenceStorageBlockEntity 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) } @@ -46,13 +48,13 @@ class PlatePressBlock(properties: Properties = DEFAULT_MACHINE_PROPERTIES, val i } override fun appendHoverText( - p_49816_: ItemStack, - p_49817_: BlockGetter?, - p_49818_: MutableList, - p_49819_: TooltipFlag + itemStack: ItemStack, + blockAccessor: BlockGetter?, + components: MutableList, + tooltipType: TooltipFlag ) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - MatteryWorkerBlockEntity.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) + super.appendHoverText(itemStack, blockAccessor, components, tooltipType) + MatteryWorkerBlockEntity.appendHoverText(itemStack, blockAccessor, components, tooltipType) } private val shapes = getShapeForEachState(rotationProperty) { (if (isTwin) BlockShapes.TWIN_PLATE_PRESS_IDLE else BlockShapes.PLATE_PRESS_IDLE).rotateFromNorth(it[rotationProperty]).computeShape() } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt index 120b04377..c60a12ea6 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt @@ -459,7 +459,8 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial var ticksIExist = 0 private set - private var lastOutsideLiquid = Vec3(0.0, 0.0, 0.0) + private var lastLiquidPosition = Vec3(0.0, 0.0, 0.0) + private var liquidDistanceTravelled = 0.0 private var wasInLiquid = false private var lastDimension = ResourceLocation("overworld") @@ -591,8 +592,9 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial savetables.int(::nextDischargeHurt) savetables.int(::nextHealTick) - savetables.vector(::lastOutsideLiquid) + savetables.vector(::lastLiquidPosition) savetables.codec(::lastDimension, ResourceLocation.CODEC) + savetables.double(::liquidDistanceTravelled) savetables.stateful(::exopackSlotModifier, "exoSuitSlotCountModifiers") savetables.stateful(::exopackContainer, "exoSuitContainer") @@ -664,7 +666,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial androidEnergy.batteryLevel = AndroidConfig.ANDROID_MAX_ENERGY androidEnergy.maxBatteryLevel = AndroidConfig.ANDROID_MAX_ENERGY - lastOutsideLiquid = ply.position() + lastLiquidPosition = ply.position() wasInLiquid = false if (ply is ServerPlayer) { @@ -719,7 +721,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial androidEnergy.maxBatteryLevel = AndroidConfig.ANDROID_MAX_ENERGY dropBattery() - lastOutsideLiquid = ply.position() + lastLiquidPosition = ply.position() wasInLiquid = false if (ply is ServerPlayer) { @@ -1193,31 +1195,38 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial if (ply.airSupply < ply.maxAirSupply) ply.airSupply = ply.maxAirSupply - if (ply.isSwimming && !hasFeature(AndroidFeatures.AIR_BAGS)) + if (ply.isSwimming && !hasFeature(AndroidFeatures.AIR_BAGS) && !ply.isCreative) ply.isSwimming = false if (ply is ServerPlayer) { if (ply.level.dimension().location() != lastDimension) { lastDimension = ply.level.dimension().location() wasInLiquid = false - lastOutsideLiquid = ply.position + lastLiquidPosition = ply.position + liquidDistanceTravelled = 0.0 } - if (ply.isUnderWater && !ply.isCreative) { + if (ply.isUnderWater) { if (!wasInLiquid) { wasInLiquid = true - lastOutsideLiquid = ply.position + liquidDistanceTravelled = 0.0 + lastLiquidPosition = ply.position } + + liquidDistanceTravelled += (ply.position - lastLiquidPosition).length() } else { if (wasInLiquid) { wasInLiquid = false - if (!hasFeature(AndroidFeatures.AIR_BAGS)) - AndroidTravelUnderwater.trigger(ply, (lastOutsideLiquid - ply.position).length()) + if (!hasFeature(AndroidFeatures.AIR_BAGS)) { + AndroidTravelUnderwater.trigger(ply, liquidDistanceTravelled) + } } - lastOutsideLiquid = ply.position + liquidDistanceTravelled = 0.0 } + + lastLiquidPosition = ply.position } val stats = ply.foodData diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/ClientTickHandler.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/ClientTickHandler.kt index 0d812203e..4b456c734 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/ClientTickHandler.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/ClientTickHandler.kt @@ -2,14 +2,62 @@ package ru.dbotthepony.mc.otm.client import net.minecraftforge.client.event.ClientPlayerNetworkEvent import net.minecraftforge.event.TickEvent +import net.minecraftforge.event.TickEvent.RenderTickEvent +import org.lwjgl.glfw.GLFW import ru.dbotthepony.mc.otm.core.util.IConditionalTickable import ru.dbotthepony.mc.otm.core.util.ITickable import ru.dbotthepony.mc.otm.core.util.TickList +import ru.dbotthepony.mc.otm.core.util.WriteOnce import ru.dbotthepony.mc.otm.isClient +import java.util.function.LongSupplier private val preTickList = TickList() private val postTickList = TickList() +var MODIFIED_CURSOR = false + private set + +private var MODIFIED_CURSOR_FRAMES = 3 + +private var ARROW_CURSOR by WriteOnce() +private var BEAM_CURSOR by WriteOnce() +private var HAND_CURSOR by WriteOnce() +private var NOT_ALLOWED_CURSOR by WriteOnce() +private var CROSSHAIR_CURSOR by WriteOnce() + +fun createCursors() { + ARROW_CURSOR = GLFW.glfwCreateStandardCursor(GLFW.GLFW_ARROW_CURSOR) + BEAM_CURSOR = GLFW.glfwCreateStandardCursor(GLFW.GLFW_IBEAM_CURSOR) + HAND_CURSOR = GLFW.glfwCreateStandardCursor(GLFW.GLFW_POINTING_HAND_CURSOR) + NOT_ALLOWED_CURSOR = GLFW.glfwCreateStandardCursor(GLFW.GLFW_NOT_ALLOWED_CURSOR) + CROSSHAIR_CURSOR = GLFW.glfwCreateStandardCursor(GLFW.GLFW_CROSSHAIR_CURSOR) + + check(ARROW_CURSOR != 0L) { "Failed to create ARROW_CURSOR. Are we not on main game thread?" } + check(BEAM_CURSOR != 0L) { "Failed to create BEAM_CURSOR. Are we not on main game thread?" } + check(HAND_CURSOR != 0L) { "Failed to create HAND_CURSOR. Are we not on main game thread?" } + check(NOT_ALLOWED_CURSOR != 0L) { "Failed to create NOT_ALLOWED_CURSOR. Are we not on main game thread?" } + check(CROSSHAIR_CURSOR != 0L) { "Failed to create CROSSHAIR_CURSOR. Are we not on main game thread?" } +} + +enum class CursorType(val pointer: LongSupplier) { + ARROW(::ARROW_CURSOR), BEAM(::BEAM_CURSOR), HAND(::HAND_CURSOR), NOT_ALLOWED(::NOT_ALLOWED_CURSOR), CROSSHAIR(::CROSSHAIR_CURSOR); + + fun setTo() { + GLFW.glfwSetCursor(minecraft.window.window, pointer.asLong) + MODIFIED_CURSOR = true + MODIFIED_CURSOR_FRAMES = 2 + } +} + +fun onClientPostRender(event: RenderTickEvent) { + if (event.phase == TickEvent.Phase.END) { + if (MODIFIED_CURSOR_FRAMES-- <= 0 && MODIFIED_CURSOR) { + GLFW.glfwSetCursor(minecraft.window.window, ARROW_CURSOR) + MODIFIED_CURSOR = false + } + } +} + var LOGGED_IN = false private set diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/blockentity/HoloSignRenderer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/blockentity/HoloSignRenderer.kt index 4e1be4a88..92ed47869 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/blockentity/HoloSignRenderer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/blockentity/HoloSignRenderer.kt @@ -38,7 +38,7 @@ class HoloSignRenderer(private val context: BlockEntityRendererProvider.Context) var y = -totalHeight / 2f for (line in lines) { - font.draw(poseStack = poseStack, buffer = sorse, text = line, gravity = RenderGravity.TOP_CENTER, y = y, color = RGBAColor.YELLOW) + font.draw(poseStack = poseStack, buffer = sorse, text = line, gravity = RenderGravity.TOP_CENTER, y = y, color = RGBAColor(tile.textRed, tile.textGreen, tile.textBlue, tile.textAlpha)) y += font.lineHeight + 2f } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/MatteryScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/MatteryScreen.kt index d3fbe4daa..ad6e78eeb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/MatteryScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/MatteryScreen.kt @@ -666,6 +666,9 @@ abstract class MatteryScreen(menu: T, inventory: Inventory, tit panel.render(wrap, mouseXf, mouseYf, partialTick) } + if (!panels.asReversed().any { it.updateCursor0() }) + panels.asReversed().any { it.updateCursor1() } + RenderSystem.depthFunc(GL11.GL_LESS) MinecraftForge.EVENT_BUS.post(Background(this, poseStack, mouseX, mouseY)) RenderSystem.disableDepthTest() diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/decorative/HoloSignScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/decorative/HoloSignScreen.kt index 0e041f81e..219e89685 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/decorative/HoloSignScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/decorative/HoloSignScreen.kt @@ -2,15 +2,21 @@ package ru.dbotthepony.mc.otm.client.screen.decorative import net.minecraft.network.chat.Component import net.minecraft.world.entity.player.Inventory +import net.minecraft.world.item.ItemStack +import ru.dbotthepony.mc.otm.client.render.ItemStackIcon import ru.dbotthepony.mc.otm.client.screen.MatteryScreen +import ru.dbotthepony.mc.otm.client.screen.panels.ColorPickerPanel import ru.dbotthepony.mc.otm.client.screen.panels.Dock import ru.dbotthepony.mc.otm.client.screen.panels.DockProperty import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel import ru.dbotthepony.mc.otm.client.screen.panels.button.CheckBoxLabelInputPanel +import ru.dbotthepony.mc.otm.client.screen.panels.button.LargeRectangleButtonPanel import ru.dbotthepony.mc.otm.client.screen.panels.button.makeDeviceControls import ru.dbotthepony.mc.otm.client.screen.panels.input.NetworkedStringInputPanel import ru.dbotthepony.mc.otm.core.TranslatableComponent +import ru.dbotthepony.mc.otm.core.math.RGBAColor import ru.dbotthepony.mc.otm.menu.decorative.HoloSignMenu +import ru.dbotthepony.mc.otm.registry.MItems class HoloSignScreen(menu: HoloSignMenu, inventory: Inventory, title: Component) : MatteryScreen(menu, title) { override fun makeMainFrame(): FramePanel> { @@ -21,14 +27,33 @@ class HoloSignScreen(menu: HoloSignMenu, inventory: Inventory, title: Component) val input = NetworkedStringInputPanel(this, frame, backend = menu.text) input.dock = Dock.FILL - input.multiLine = true + input.isMultiLine = true val lock = CheckBoxLabelInputPanel(this, frame, menu.locked, TranslatableComponent("otm.gui.lock_holo_screen")) lock.dock = Dock.BOTTOM lock.dockMargin = DockProperty(2f, 2f, 2f, 2f) lock.tooltips.add(TranslatableComponent("otm.gui.lock_holo_screen.tip")) - makeDeviceControls(this, frame, redstoneConfig = menu.redstone) + val controls = makeDeviceControls(this, frame, redstoneConfig = menu.redstone) + + controls.addButton(object : LargeRectangleButtonPanel(this@HoloSignScreen, frame, onPress = { + frame.blockingWindow = ColorPickerPanel.frame( + this@HoloSignScreen, + callback = { + menu.textRed.accept(it.red) + menu.textGreen.accept(it.green) + menu.textBlue.accept(it.blue) + menu.textAlpha.accept(it.alpha) + }, + color = RGBAColor(menu.textRed.value, menu.textGreen.value, menu.textBlue.value, menu.textAlpha.value), + isDisabled = { !menu.textRed.and(menu.textGreen).and(menu.textBlue).and(menu.textAlpha).test(minecraft?.player) }, + title = TranslatableComponent("otm.gui.change_color")) + }) { + init { + tooltips.add(TranslatableComponent("otm.gui.change_color")) + icon = ItemStackIcon(ItemStack(MItems.PAINTER)).fixed() + } + }) return frame } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/ColorPicker.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/ColorPicker.kt index bd2fa0f0c..da7fec976 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/ColorPicker.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/ColorPicker.kt @@ -7,6 +7,7 @@ import net.minecraft.client.gui.screens.Screen import net.minecraft.network.chat.Component import net.minecraft.resources.ResourceLocation import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.client.CursorType import ru.dbotthepony.mc.otm.client.render.MGUIGraphics import ru.dbotthepony.mc.otm.client.playGuiClickSound import ru.dbotthepony.mc.otm.client.render.sprites.MatterySprite @@ -21,6 +22,7 @@ import ru.dbotthepony.mc.otm.core.TranslatableComponent import ru.dbotthepony.mc.otm.core.math.HSVColor import ru.dbotthepony.mc.otm.core.math.RGBAColor import java.util.function.Consumer +import java.util.function.Supplier import kotlin.math.roundToInt open class ColorBoxPanel( @@ -31,12 +33,16 @@ open class ColorBoxPanel( width: Float = 64f, height: Float = 64f, protected val callback: Consumer? = null, + val isDisabled: Supplier = Supplier { false }, ) : EditablePanel(screen, parent, x, y, width, height) { var backgroundColor = RGBAColor.RED private set var markerPos = backgroundColor.toHSV() protected set + override val cursorType: CursorType + get() = if (isDisabled.get()) CursorType.NOT_ALLOWED else CursorType.CROSSHAIR + fun setColor(color: Either) { color.map( { markerPos = it.toHSV(); if (it.canRepresentHue()) backgroundColor = HSVColor(it.toHSV().hue, 1f, 1f).toRGBA() }, @@ -66,7 +72,7 @@ open class ColorBoxPanel( override fun mouseClickedInner(x: Double, y: Double, button: Int): Boolean { if (button == InputConstants.MOUSE_BUTTON_LEFT) { - if (!isPressed) { + if (!isPressed && !isDisabled.get()) { isPressed = true grabMouseInput = true @@ -81,7 +87,7 @@ open class ColorBoxPanel( } override fun mouseDraggedInner(x: Double, y: Double, button: Int, xDelta: Double, yDelta: Double): Boolean { - if (isPressed && button == InputConstants.MOUSE_BUTTON_LEFT) { + if (isPressed && button == InputConstants.MOUSE_BUTTON_LEFT && !isDisabled.get()) { pickColor(x, y) return true } @@ -135,13 +141,18 @@ abstract class AbstractColorWangPanel( width: Float = 40f, height: Float = 10f, protected val callback: Consumer? = null, + val isDisabled: Supplier = Supplier { false }, ) : EditablePanel(screen, parent, x, y, width, height) { abstract val leftColor: RGBAColor abstract val rightColor: RGBAColor abstract val wangPosition: Float abstract fun setColor(color: Either) + protected abstract fun onWangInput(newPosition: Float) + override val cursorType: CursorType + get() = if (isDisabled.get()) CursorType.NOT_ALLOWED else CursorType.ARROW + init { scissor = true } @@ -155,7 +166,7 @@ abstract class AbstractColorWangPanel( override fun mouseClickedInner(x: Double, y: Double, button: Int): Boolean { if (button == InputConstants.MOUSE_BUTTON_LEFT) { - if (!isPressed) { + if (!isPressed && !isDisabled.get()) { isPressed = true grabMouseInput = true @@ -170,7 +181,7 @@ abstract class AbstractColorWangPanel( } override fun mouseDraggedInner(x: Double, y: Double, button: Int, xDelta: Double, yDelta: Double): Boolean { - if (isPressed && button == InputConstants.MOUSE_BUTTON_LEFT) { + if (isPressed && button == InputConstants.MOUSE_BUTTON_LEFT && !isDisabled.get()) { updateColor(x) return true } @@ -216,7 +227,8 @@ open class RedColorWangPanel( width: Float = 40f, height: Float = 10f, callback: Consumer? = null, -) : AbstractColorWangPanel(screen, parent, x, y, width, height, callback) { + isDisabled: Supplier = Supplier { false }, +) : AbstractColorWangPanel(screen, parent, x, y, width, height, callback, isDisabled) { override var leftColor: RGBAColor = RGBAColor.BLACK protected set override var rightColor: RGBAColor = RGBAColor.RED @@ -247,7 +259,8 @@ open class GreenColorWangPanel( width: Float = 40f, height: Float = 10f, callback: Consumer? = null, -) : AbstractColorWangPanel(screen, parent, x, y, width, height, callback) { + isDisabled: Supplier = Supplier { false }, +) : AbstractColorWangPanel(screen, parent, x, y, width, height, callback, isDisabled) { override var leftColor: RGBAColor = RGBAColor.BLACK protected set override var rightColor: RGBAColor = RGBAColor.GREEN @@ -278,7 +291,8 @@ open class BlueColorWangPanel( width: Float = 40f, height: Float = 10f, callback: Consumer? = null, -) : AbstractColorWangPanel(screen, parent, x, y, width, height, callback) { + isDisabled: Supplier = Supplier { false }, +) : AbstractColorWangPanel(screen, parent, x, y, width, height, callback, isDisabled) { override var leftColor: RGBAColor = RGBAColor.BLACK protected set override var rightColor: RGBAColor = RGBAColor.BLUE @@ -309,7 +323,8 @@ open class HueWangPanel( width: Float = 40f, height: Float = 10f, protected val hueCallback: FloatConsumer? = null, -) : AbstractColorWangPanel(screen, parent, x, y, width, height) { + isDisabled: Supplier = Supplier { false }, +) : AbstractColorWangPanel(screen, parent, x, y, width, height, null, isDisabled) { override val leftColor: RGBAColor get() = RGBAColor.WHITE override val rightColor: RGBAColor get() = RGBAColor.WHITE override var wangPosition: Float = 1f @@ -351,7 +366,8 @@ open class SaturationWangPanel( width: Float = 40f, height: Float = 10f, protected val saturationCallback: FloatConsumer? = null, -) : AbstractColorWangPanel(screen, parent, x, y, width, height) { + isDisabled: Supplier = Supplier { false }, +) : AbstractColorWangPanel(screen, parent, x, y, width, height, null, isDisabled) { override var leftColor: RGBAColor = RGBAColor.WHITE protected set override var rightColor: RGBAColor = RGBAColor.WHITE @@ -396,7 +412,8 @@ open class ValueWangPanel( width: Float = 40f, height: Float = 10f, protected val valueCallback: FloatConsumer? = null, -) : AbstractColorWangPanel(screen, parent, x, y, width, height) { + isDisabled: Supplier = Supplier { false } +) : AbstractColorWangPanel(screen, parent, x, y, width, height, null, isDisabled) { override var leftColor: RGBAColor = RGBAColor.BLACK protected set override var rightColor: RGBAColor = RGBAColor.WHITE @@ -440,7 +457,8 @@ open class ColorPalettePanel( y: Float = 0f, width: Float = 64f, height: Float = 64f, - protected val callback: Consumer? = null + protected val callback: Consumer? = null, + val isDisabled: Supplier = Supplier { false } ) : EditablePanel(screen, parent, x, y, width, height) { open fun onColorChoose(color: RGBAColor) { callback?.accept(color) @@ -452,6 +470,10 @@ open class ColorPalettePanel( tooltips.add(TextComponent(color.toHexStringRGB())) } + override var isDisabled: Boolean + get() = this@ColorPalettePanel.isDisabled.get() + set(value) {} + override fun onClick(mouseButton: Int) { onColorChoose(color) } @@ -499,7 +521,8 @@ open class ColorPickerPanel( y: Float = 0f, width: Float = 164f, height: Float = 118f, - var callback: Consumer? = null + var callback: Consumer? = null, + val isDisabled: Supplier = Supplier { false }, ) : EditablePanel(screen, parent, x, y, width, height) { open fun onColorChanged(color: RGBAColor) { callback?.accept(color) @@ -523,49 +546,56 @@ open class ColorPickerPanel( protected open fun onPaletteChoose(color: RGBAColor) { setColor(Either.left(color)) - onColorChanged(color) + if (!isDisabled.get()) onColorChanged(color) } protected open fun onColorBoxChoose(color: HSVColor) { setColor(Either.right(color)) - onColorChanged(color.toRGBA()) + if (!isDisabled.get()) onColorChanged(color.toRGBA()) } protected open fun onWangChoose(color: RGBAColor) { setColor(Either.left(color)) - onColorChanged(color) + if (!isDisabled.get()) onColorChanged(color) } protected open fun onHueChoose(hue: Float) { val current = currentColor.map({ it.toHSV() }, { it }) val new = current.copy(hue = hue) setColor(Either.right(new)) - onColorChanged(new.toRGBA()) + if (!isDisabled.get()) onColorChanged(new.toRGBA()) } protected open fun onSaturationChoose(saturation: Float) { val current = currentColor.map({ it.toHSV() }, { it }) val new = current.copy(saturation = saturation) setColor(Either.right(new)) - onColorChanged(new.toRGBA()) + if (!isDisabled.get()) onColorChanged(new.toRGBA()) } protected open fun onValueChoose(value: Float) { val current = currentColor.map({ it.toHSV() }, { it }) val new = current.copy(value = value) setColor(Either.right(new)) - onColorChanged(new.toRGBA()) + if (!isDisabled.get()) onColorChanged(new.toRGBA()) } val topStrip = EditablePanel(screen, this, 0f, 0f, width = width, height = 70f) val middleStrip = EditablePanel(screen, this) - val palette = ColorPalettePanel(screen, this, callback = { onPaletteChoose(it) }) + val palette = ColorPalettePanel(screen, this, callback = { onPaletteChoose(it) }, isDisabled = isDisabled) + + override val cursorType: CursorType + get() = if (isDisabled.get()) CursorType.NOT_ALLOWED else CursorType.ARROW val hexInput = object : TextInputPanel(screen, middleStrip, width = 50f) { init { dock = Dock.RIGHT } + override var isActive: Boolean + get() = !isDisabled.get() + set(value) {} + override fun onFocusChanged() { if (!isFocusedThis) { val newColor = RGBAColor.fromHexStringRGB(text) @@ -574,7 +604,7 @@ open class ColorPickerPanel( text = currentColor.map({ it }, { it.toRGBA() }).toHexStringRGB() } else { setColor(Either.left(newColor)) - onColorChanged(newColor) + if (!isDisabled.get()) onColorChanged(newColor) } } } @@ -596,7 +626,7 @@ open class ColorPickerPanel( } } - val box = ColorBoxPanel(screen, topStrip, 0f, 0f, width = 70f, height = 70f, callback = { onColorBoxChoose(it) }) + val box = ColorBoxPanel(screen, topStrip, 0f, 0f, width = 70f, height = 70f, callback = { onColorBoxChoose(it) }, isDisabled = isDisabled) val wangCanvas = EditablePanel(screen, topStrip, width = 80f) inner class WangLine(label: String, val wang: AbstractColorWangPanel, val text: (color: Either) -> Component?) { @@ -637,13 +667,13 @@ open class ColorPickerPanel( } } - val red = WangLine("red", RedColorWangPanel(screen, wangCanvas, callback = { onWangChoose(it) })) { TextComponent((it.map({ it }, { it.toRGBA() }).red * 255f).roundToInt().toString()) } - val green = WangLine("green", GreenColorWangPanel(screen, wangCanvas, callback = { onWangChoose(it) })) { TextComponent((it.map({ it }, { it.toRGBA() }).green * 255f).roundToInt().toString()) } - val blue = WangLine("blue", BlueColorWangPanel(screen, wangCanvas, callback = { onWangChoose(it) })) { TextComponent((it.map({ it }, { it.toRGBA() }).blue * 255f).roundToInt().toString()) } + val red = WangLine("red", RedColorWangPanel(screen, wangCanvas, callback = { onWangChoose(it) }, isDisabled = isDisabled)) { TextComponent((it.map({ it }, { it.toRGBA() }).red * 255f).roundToInt().toString()) } + val green = WangLine("green", GreenColorWangPanel(screen, wangCanvas, callback = { onWangChoose(it) }, isDisabled = isDisabled)) { TextComponent((it.map({ it }, { it.toRGBA() }).green * 255f).roundToInt().toString()) } + val blue = WangLine("blue", BlueColorWangPanel(screen, wangCanvas, callback = { onWangChoose(it) }, isDisabled = isDisabled)) { TextComponent((it.map({ it }, { it.toRGBA() }).blue * 255f).roundToInt().toString()) } - val hue = WangLine("hue", HueWangPanel(screen, wangCanvas, hueCallback = { onHueChoose(it) })) { it.map({ if (it.canRepresentHue()) it.toHSV() else null }, { it })?.let { TextComponent(it.hue.roundToInt().toString()) } } - val saturation = WangLine("saturation", SaturationWangPanel(screen, wangCanvas, saturationCallback = { onSaturationChoose(it) })) { it.map({ if (it.canRepresentHue()) it.toHSV() else null }, { it })?.let { TextComponent((it.saturation * 100f).roundToInt().toString() + "%") } } - val value = WangLine("value", ValueWangPanel(screen, wangCanvas, valueCallback = { onValueChoose(it) })) { it.map({ if (it.canRepresentHue()) it.toHSV() else null }, { it })?.let { TextComponent((it.value * 100f).roundToInt().toString() + "%") } } + val hue = WangLine("hue", HueWangPanel(screen, wangCanvas, hueCallback = { onHueChoose(it) }, isDisabled = isDisabled)) { it.map({ if (it.canRepresentHue()) it.toHSV() else null }, { it })?.let { TextComponent(it.hue.roundToInt().toString()) } } + val saturation = WangLine("saturation", SaturationWangPanel(screen, wangCanvas, saturationCallback = { onSaturationChoose(it) }, isDisabled = isDisabled)) { it.map({ if (it.canRepresentHue()) it.toHSV() else null }, { it })?.let { TextComponent((it.saturation * 100f).roundToInt().toString() + "%") } } + val value = WangLine("value", ValueWangPanel(screen, wangCanvas, valueCallback = { onValueChoose(it) }, isDisabled = isDisabled)) { it.map({ if (it.canRepresentHue()) it.toHSV() else null }, { it })?.let { TextComponent((it.value * 100f).roundToInt().toString() + "%") } } val wangs = listOf(red, green, blue, hue, saturation, value) @@ -728,9 +758,9 @@ open class ColorPickerPanel( RGBAColor.rgb(0xEE82EEL), // Violet ) - fun > frame(screen: S, callback: Consumer, color: RGBAColor = RGBAColor.RED, title: Component? = TranslatableComponent("otm.gui.color_picker")): FramePanel { + fun > frame(screen: S, callback: Consumer, color: RGBAColor = RGBAColor.RED, title: Component? = TranslatableComponent("otm.gui.color_picker"), isDisabled: Supplier = Supplier { false }): FramePanel { return FramePanel.padded(screen, 164f, 118f, title).also { - ColorPickerPanel(screen, it, 0f, 0f, callback = callback).also { + ColorPickerPanel(screen, it, 0f, 0f, callback = callback, isDisabled = isDisabled).also { it.dock = Dock.FILL it.setColor(Either.left(color)) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditablePanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditablePanel.kt index 0746b9b0e..628eddee0 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditablePanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/EditablePanel.kt @@ -17,6 +17,7 @@ import net.minecraft.world.inventory.Slot import net.minecraft.world.item.ItemStack import org.apache.logging.log4j.LogManager import ru.dbotthepony.mc.otm.SystemTime +import ru.dbotthepony.mc.otm.client.CursorType import ru.dbotthepony.mc.otm.client.render.MGUIGraphics import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.client.moveMousePosScaled @@ -421,6 +422,7 @@ open class EditablePanel @JvmOverloads constructor( var acceptMouseInput = true var acceptKeyboardInput = true var grabMouseInput = false + open val cursorType: CursorType get() = CursorType.ARROW fun tryToGrabMouseInput(): Boolean { if (grabMouseInput) { @@ -900,6 +902,24 @@ open class EditablePanel @JvmOverloads constructor( } } + fun updateCursor0(): Boolean { + if (grabMouseInput) { + cursorType.setTo() + return true + } + + return children.any { it.updateCursor0() } + } + + fun updateCursor1(): Boolean { + if (isHovered) { + cursorType.setTo() + return true + } + + return children.any { it.updateCursor1() } + } + fun updateAbsolutePosition() { val parent = parent diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/button/AbstractButtonPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/button/AbstractButtonPanel.kt index e1da380a4..188b134de 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/button/AbstractButtonPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/button/AbstractButtonPanel.kt @@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.client.screen.panels.button import com.mojang.blaze3d.platform.InputConstants import net.minecraft.client.gui.screens.Screen +import ru.dbotthepony.mc.otm.client.CursorType import ru.dbotthepony.mc.otm.client.render.MGUIGraphics import ru.dbotthepony.mc.otm.client.playGuiClickSound import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel @@ -30,6 +31,9 @@ abstract class AbstractButtonPanel( } } + override val cursorType: CursorType + get() = if (isDisabled) CursorType.NOT_ALLOWED else CursorType.ARROW + override fun test(value: Int): Boolean { return value == InputConstants.MOUSE_BUTTON_LEFT } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/NetworkNumberInputPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/NetworkNumberInputPanel.kt index f37fc4501..8b81f30f7 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/NetworkNumberInputPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/NetworkNumberInputPanel.kt @@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.client.screen.panels.input import net.minecraft.client.gui.screens.Screen import net.minecraft.network.chat.Component +import ru.dbotthepony.mc.otm.client.CursorType import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel import ru.dbotthepony.mc.otm.core.TextComponent @@ -14,7 +15,7 @@ open class NetworkNumberInputPanel @JvmOverloads constructor( parent: EditablePanel<*>?, val networkValue: () -> BigDecimal, val callback: (BigDecimal) -> Unit, - val isAvailable: BooleanSupplier = BooleanSupplier { true }, + val isEnabled: BooleanSupplier = BooleanSupplier { true }, x: Float = 0f, y: Float = 0f, width: Float = 0f, @@ -35,7 +36,7 @@ open class NetworkNumberInputPanel @JvmOverloads constructor( screen = screen, parent = parent, callback = widget::accept, - isAvailable = { widget.allowSpectators || minecraft.player?.isSpectator != true }, + isEnabled = { widget.allowSpectators || minecraft.player?.isSpectator != true }, networkValue = networkValue, x = x, y = y, @@ -48,7 +49,7 @@ open class NetworkNumberInputPanel @JvmOverloads constructor( protected var inputStr = "" override fun mouseClickedInner(x: Double, y: Double, button: Int): Boolean { - if (!isAvailable.asBoolean) { + if (!isEnabled.asBoolean) { return true } @@ -59,7 +60,7 @@ open class NetworkNumberInputPanel @JvmOverloads constructor( super.tickInner() if (isFocusedThis) { - if (!isAvailable.asBoolean) { + if (!isEnabled.asBoolean) { killFocus() return } @@ -70,7 +71,7 @@ open class NetworkNumberInputPanel @JvmOverloads constructor( if (nextUpdateFromServer < System.currentTimeMillis()) { getOrCreateWidget().value = networkValue.invoke().toPlainString() inputStr = getOrCreateWidget().value - } else if (isAvailable.asBoolean) { + } else if (isEnabled.asBoolean) { if (inputStr != getOrCreateWidget().value) { inputStr = getOrCreateWidget().value diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/TextInputPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/TextInputPanel.kt index a18bfcdf9..ae8dfaf87 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/TextInputPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/TextInputPanel.kt @@ -13,6 +13,7 @@ import net.minecraft.client.gui.screens.Screen import net.minecraft.client.renderer.GameRenderer import net.minecraft.network.chat.Component import org.joml.Vector2i +import ru.dbotthepony.mc.otm.client.CursorType import ru.dbotthepony.mc.otm.client.render.MGUIGraphics import ru.dbotthepony.mc.otm.client.isCtrlDown import ru.dbotthepony.mc.otm.client.isShiftDown @@ -85,19 +86,19 @@ open class TextInputPanel( private val cursorLine = this@TextInputPanel.cursorLine private val cursorCharacter = this@TextInputPanel.cursorRow private val selections = Int2ObjectAVLTreeMap(this@TextInputPanel.selections) - private val multiLine = this@TextInputPanel.multiLine + private val multiLine = this@TextInputPanel.isMultiLine fun apply() { this@TextInputPanel.lines.clear() - if (this@TextInputPanel.multiLine) + if (this@TextInputPanel.isMultiLine) this@TextInputPanel.lines.addAll(lines) else this@TextInputPanel.lines.add(lines.joinToString("")) this@TextInputPanel.selections.clear() - if (this@TextInputPanel.multiLine && multiLine) + if (this@TextInputPanel.isMultiLine && multiLine) this@TextInputPanel.selections.putAll(selections) this@TextInputPanel.cursorRow = cursorCharacter @@ -128,7 +129,7 @@ open class TextInputPanel( } var debugDraw = false - var multiLine = false + var isMultiLine = false set(value) { if (field == value) return @@ -151,6 +152,9 @@ open class TextInputPanel( open var backgroundColor = RGBAColor.BLACK open var isActive = true + override val cursorType: CursorType + get() = if (isActive) CursorType.BEAM else CursorType.NOT_ALLOWED + init { scissor = true dockPadding = DockProperty(2f, 2f, 2f, 2f) @@ -275,7 +279,7 @@ open class TextInputPanel( if (index < 0) throw IndexOutOfBoundsException("negative index $index") - if (!multiLine && index != 0) + if (!isMultiLine && index != 0) throw IllegalStateException("Not accepting newlines") lines.ensureCapacity(index) @@ -301,7 +305,7 @@ open class TextInputPanel( } fun insertLine(index: Int, value: String = "") { - if (!multiLine && lines.isNotEmpty()) + if (!isMultiLine && lines.isNotEmpty()) throw IllegalStateException("Not accepting newlines") lines.ensureCapacity(index) @@ -457,7 +461,7 @@ open class TextInputPanel( cursorRow = 0 textCache = null - if (multiLine) { + if (isMultiLine) { lines.addAll(value.split(NEWLINES)) } else { lines.add(value.replace(NEWLINES, "")) @@ -664,7 +668,7 @@ open class TextInputPanel( } if (key == InputConstants.KEY_RETURN) { - if (multiLine) { + if (isMultiLine) { if (!minecraft.window.isShiftDown && !minecraft.window.isCtrlDown) wipeSelection() @@ -901,7 +905,7 @@ open class TextInputPanel( wipeSelection() pushbackSnapshot() - if (multiLine) { + if (isMultiLine) { var index = cursorRow + (0 until cursorLine).iterator().map { this[it]?.length ?: 0 }.reduce(0, Int::plus) val insert = minecraft.keyboardHandler.clipboard.replace("\t", " ").filter { acceptsCharacter(it, 0, index++) }.split(NEWLINES).toMutableList() val actualLastSize = insert.lastOrNull()?.length ?: 0 @@ -1064,7 +1068,7 @@ open class TextInputPanel( wipeSelection() - if (!multiLine) + if (!isMultiLine) cursorLine = 0 var line = this[cursorLine] @@ -1121,7 +1125,7 @@ open class TextInputPanel( var topPadding = dockPadding.top - if (multiLine) { + if (isMultiLine) { val heightInLines = ((height - dockPadding.top - dockPadding.bottom) / (font.lineHeight + rowSpacing)).toInt() if (heightInLines > 0) { @@ -1297,6 +1301,8 @@ open class TextInputPanel( isSelecting = true tryToGrabMouseInput() + } else if (button == InputConstants.MOUSE_BUTTON_RIGHT && !isMultiLine) { + text = "" } return true diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/util/AnalogScrollBarPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/util/AnalogScrollBarPanel.kt index 83a7f8f7d..2e4f66893 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/util/AnalogScrollBarPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/util/AnalogScrollBarPanel.kt @@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.client.screen.panels.util import com.mojang.blaze3d.platform.InputConstants import net.minecraft.client.gui.screens.Screen +import ru.dbotthepony.mc.otm.client.CursorType import ru.dbotthepony.mc.otm.client.render.MGUIGraphics import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel import ru.dbotthepony.mc.otm.client.screen.panels.slot.AbstractSlotPanel @@ -26,6 +27,9 @@ open class AnalogScrollBarPanel( var isScrolling = false private set + override val cursorType: CursorType + get() = if (maxScroll.invoke(this@AnalogScrollBarPanel) <= 0) CursorType.NOT_ALLOWED else CursorType.ARROW + override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) { if (this@AnalogScrollBarPanel.width == ScrollBarConstants.SLIM_WIDTH) { if (isScrolling) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/util/DiscreteScrollBarPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/util/DiscreteScrollBarPanel.kt index e5f9a23f2..c402ff43e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/util/DiscreteScrollBarPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/util/DiscreteScrollBarPanel.kt @@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.client.screen.panels.util import com.mojang.blaze3d.platform.InputConstants import net.minecraft.client.gui.screens.Screen +import ru.dbotthepony.mc.otm.client.CursorType import ru.dbotthepony.mc.otm.client.render.MGUIGraphics import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel import kotlin.math.roundToInt @@ -20,6 +21,9 @@ open class DiscreteScrollBarPanel( var isScrolling = false private set + override val cursorType: CursorType + get() = if (maxScroll.invoke(this@DiscreteScrollBarPanel) <= 0) CursorType.NOT_ALLOWED else CursorType.ARROW + override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) { if (this@DiscreteScrollBarPanel.width == ScrollBarConstants.SLIM_WIDTH) { if (isScrolling) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/tech/AndroidStationScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/tech/AndroidStationScreen.kt index 989e501af..3bac104b9 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/tech/AndroidStationScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/tech/AndroidStationScreen.kt @@ -15,6 +15,7 @@ import ru.dbotthepony.mc.otm.android.AndroidResearchManager import ru.dbotthepony.mc.otm.android.AndroidResearchType import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability import ru.dbotthepony.mc.otm.capability.MatteryCapability +import ru.dbotthepony.mc.otm.client.CursorType import ru.dbotthepony.mc.otm.client.render.MGUIGraphics import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.client.playGuiClickSound @@ -284,6 +285,9 @@ private class AndroidResearchButton( } } + override val cursorType: CursorType + get() = if (node.isAnyBlockerResearchedIndirect && !(parent?.screen as AndroidStationScreen).menu.player.isCreative) CursorType.NOT_ALLOWED else if (node.canResearch && !node.isResearched) CursorType.HAND else CursorType.ARROW + override fun innerRender(graphics: MGUIGraphics, mouseX: Float, mouseY: Float, partialTick: Float) { val hovered = screen.hoveredResearch @@ -394,12 +398,13 @@ private class AndroidResearchButton( MatteryPlayerNetworkChannel.sendToServer(AndroidResearchRequestPacket(node.type)) } ) + + playGuiClickSound() } else { MatteryPlayerNetworkChannel.sendToServer(AndroidResearchRequestPacket(node.type)) + playGuiClickSound() } } - - playGuiClickSound() } return true diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/tech/EssenceStorageScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/tech/EssenceStorageScreen.kt index ae05cd7f8..011dc31de 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/tech/EssenceStorageScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/tech/EssenceStorageScreen.kt @@ -273,7 +273,7 @@ class EssenceStorageScreen(menu: EssenceStorageMenu, inventory: Inventory, title it.tooltips.add(Enchantments.MENDING.getFullname(1).copy().withStyle(ChatFormatting.GRAY)) } - makeDeviceControls(this, frame, redstoneConfig = menu.redstoneConfig, itemConfig = menu.itemConfig) + makeDeviceControls(this, frame, redstoneConfig = menu.redstoneConfig, itemConfig = menu.itemConfig, fluidConfig = menu.fluidConfig) return frame } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/MatterGaugePanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/MatterGaugePanel.kt index c31f5db8a..b4ce06a6e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/MatterGaugePanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/MatterGaugePanel.kt @@ -172,7 +172,7 @@ open class ProfiledMatterGaugePanel( profiledWidget.weightedTransfer, )) - if (minecraft.window.isShiftDown && minecraft.options.advancedItemTooltips) { + if (minecraft.window.isShiftDown) { it.add(TextComponent("---")) val values = IntArrayList() diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/PowerGaugePanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/PowerGaugePanel.kt index 51bc1a6c4..537b71f20 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/PowerGaugePanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/PowerGaugePanel.kt @@ -131,7 +131,7 @@ open class ProfiledPowerGaugePanel( profiledWidget.weightedTransfer, )) - if (minecraft.window.isShiftDown && minecraft.options.advancedItemTooltips) { + if (minecraft.window.isShiftDown) { it.add(TextComponent("---")) val values = IntArrayList() diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/ProgressGaugePanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/ProgressGaugePanel.kt index 97f7e4205..8a9267fe6 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/ProgressGaugePanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/widget/ProgressGaugePanel.kt @@ -6,6 +6,7 @@ import mezz.jei.api.recipe.RecipeType import net.minecraft.ChatFormatting import net.minecraft.client.gui.screens.Screen import net.minecraft.network.chat.Component +import ru.dbotthepony.mc.otm.client.CursorType import ru.dbotthepony.mc.otm.client.render.MGUIGraphics import ru.dbotthepony.mc.otm.client.render.UVWindingOrder import ru.dbotthepony.mc.otm.client.render.WidgetLocation @@ -94,6 +95,9 @@ open class ProgressGaugePanel( return recipeTypeSupplier != null && value == InputConstants.MOUSE_BUTTON_LEFT } + override val cursorType: CursorType + get() = if (recipeTypeSupplier != null) CursorType.HAND else CursorType.ARROW + override fun onClick(mouseButton: Int) { val recipeTypeSupplier = recipeTypeSupplier ?: return JEIPlugin.RUNTIME.recipesGui.showTypes(recipeTypeSupplier.get()) 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 1a654f7c7..27ff4606e 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 @@ -66,14 +66,15 @@ class JEIPlugin : IModPlugin { override fun registerRecipeCatalysts(registration: IRecipeCatalystRegistration) { registration.addRecipeCatalyst(ItemStack(MItems.CHEMICAL_GENERATOR), RecipeTypes.FUELING) - registration.addRecipeCatalyst(ItemStack(MItems.POWERED_FURNACE), RecipeTypes.SMELTING) + registration.addRecipeCatalyst(ItemStack(MItems.POWERED_FURNACE[null]!!), RecipeTypes.SMELTING) registration.addRecipeCatalyst(ItemStack(MItems.ExopackUpgrades.SMELTING_UPGRADE), RecipeTypes.SMELTING) - registration.addRecipeCatalyst(ItemStack(MItems.POWERED_BLAST_FURNACE), RecipeTypes.BLASTING) - registration.addRecipeCatalyst(ItemStack(MItems.POWERED_SMOKER), RecipeTypes.SMOKING) - registration.addRecipeCatalyst(ItemStack(MItems.POWERED_SMOKER), MicrowaveRecipeCategory.recipeType) + registration.addRecipeCatalyst(ItemStack(MItems.POWERED_BLAST_FURNACE[null]!!), RecipeTypes.BLASTING) + registration.addRecipeCatalyst(ItemStack(MItems.POWERED_SMOKER[null]!!), RecipeTypes.SMOKING) + MItems.POWERED_SMOKER.values.forEach { registration.addRecipeCatalyst(ItemStack(it), 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) + registration.addRecipeCatalyst(ItemStack(MItems.ITEM_MONITOR[null]!!), RecipeTypes.CRAFTING) + 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/MicrowaveRecipeCategory.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/MicrowaveRecipeCategory.kt index 4e94fa4b5..d9fbb02f7 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/MicrowaveRecipeCategory.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/jei/MicrowaveRecipeCategory.kt @@ -42,7 +42,7 @@ object MicrowaveRecipeCategory : IRecipeCategory, IDrawable { } override fun getTitle(): Component { - return MItems.POWERED_SMOKER.description + return MItems.POWERED_SMOKER[null]!!.description } override fun draw(stack: PoseStack, xOffset: Int, yOffset: Int) { @@ -95,7 +95,7 @@ object MicrowaveRecipeCategory : IRecipeCategory, IDrawable { } private val iconField by lazy { - JEIPlugin.helpers.guiHelper.createDrawableItemStack(ItemStack(MItems.POWERED_SMOKER)) + JEIPlugin.helpers.guiHelper.createDrawableItemStack(ItemStack(MItems.POWERED_SMOKER[null]!!)) } override fun getIcon(): IDrawable { 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 452f2c025..14dd9e9d9 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(stack: PoseStack, 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/config/MachinesConfig.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/config/MachinesConfig.kt index 3fc705cbd..5bb1b860b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/config/MachinesConfig.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/config/MachinesConfig.kt @@ -212,7 +212,7 @@ object MachinesConfig : AbstractConfig("machines") { val MAX_ENERGY by builder .comment("Maximal combined energy consumption percentage") - .defineDecimal("MAX_ENERGY", Decimal.LONG_MAX_VALUE, Decimal.ZERO) + .defineDecimal("MAX_ENERGY", Decimal.POSITIVE_INFINITY, Decimal.ZERO) init { builder.pop() diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/UpgradeContainer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/UpgradeContainer.kt index 35abc5839..9b178fa01 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/UpgradeContainer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/UpgradeContainer.kt @@ -16,32 +16,38 @@ open class UpgradeContainer(slotCount: Int, open val allowedUpgrades: Set get() = setOf() - protected fun decimals(fn: (IMatteryUpgrade) -> Decimal, reducer: (Decimal, Decimal) -> Decimal): Decimal { + protected fun positiveDecimals(fn: (IMatteryUpgrade) -> Decimal, reducer: (Decimal, Decimal) -> Decimal): Decimal { return iterator() .map { it.getCapability(MatteryCapability.UPGRADE).map(fn).orElse(Decimal.ZERO).moreThanZero() * it.count } .reduce(Decimal.ZERO, reducer) } + protected fun anyDecimals(fn: (IMatteryUpgrade) -> Decimal, reducer: (Decimal, Decimal) -> Decimal): Decimal { + return iterator() + .map { it.getCapability(MatteryCapability.UPGRADE).map(fn).orElse(Decimal.ZERO) * it.count } + .reduce(Decimal.ZERO, reducer) + } + override val speedBonus: Double get() = iterator().map { it.getCapability(MatteryCapability.UPGRADE).map { it.speedBonus }.orElse(0.0) * it.count }.reduce(0.0) { a, b -> a + b } override val processingItems: Int get() = iterator().map { it.getCapability(MatteryCapability.UPGRADE).map { it.processingItems }.orElse(0).coerceAtLeast(0) * it.count }.reduce(0) { a, b -> a + b } override val energyStorageFlat: Decimal - get() = decimals(IMatteryUpgrade::energyStorageFlat, Decimal::plus) + get() = positiveDecimals(IMatteryUpgrade::energyStorageFlat, Decimal::plus) override val energyStorage: Decimal - get() = decimals(IMatteryUpgrade::energyStorage, Decimal::plus) + get() = positiveDecimals(IMatteryUpgrade::energyStorage, Decimal::plus) override val matterStorageFlat: Decimal - get() = decimals(IMatteryUpgrade::matterStorageFlat, Decimal::plus) + get() = positiveDecimals(IMatteryUpgrade::matterStorageFlat, Decimal::plus) override val matterStorage: Decimal - get() = decimals(IMatteryUpgrade::matterStorage, Decimal::plus) + get() = positiveDecimals(IMatteryUpgrade::matterStorage, Decimal::plus) override val energyConsumed: Decimal - get() = decimals(IMatteryUpgrade::energyConsumed, Decimal::plus) + get() = anyDecimals(IMatteryUpgrade::energyConsumed, Decimal::plus) override val failureMultiplier: Double get() = iterator().map { it.getCapability(MatteryCapability.UPGRADE).map { it.failureMultiplier }.orElse(1.0).coerceAtLeast(0.0).pow(it.count.toDouble()) }.reduce(1.0) { a, b -> a * b } override val energyThroughputFlat: Decimal - get() = decimals(IMatteryUpgrade::energyThroughputFlat, Decimal::plus) + get() = positiveDecimals(IMatteryUpgrade::energyThroughputFlat, Decimal::plus) override val energyThroughput: Decimal - get() = decimals(IMatteryUpgrade::energyThroughput, Decimal::plus) + get() = positiveDecimals(IMatteryUpgrade::energyThroughput, Decimal::plus) fun transform(values: EnergyBalanceValues): EnergyBalanceValues { return object : EnergyBalanceValues { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/Ext.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/Ext.kt index 173689550..c27e0a01b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/Ext.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/Ext.kt @@ -69,6 +69,28 @@ fun FriendlyByteBuf.writeBigInteger(value: BigInteger) { fun FriendlyByteBuf.readBigInteger(byteLimit: Int = 128) = BigInteger(readByteArray(byteLimit)) +fun Map<*, V>.asLambdaSupplierArray(): Array<() -> V> { + val result = arrayOfNulls<() -> V>(size) + var i = 0 + + for (k in keys) { + result[i++] = { this[k] ?: throw ConcurrentModificationException("Key $k is no longer present in map $this") } + } + + return result as Array<() -> V> +} + +fun Map<*, V>.asSupplierArray(): Array> { + val result = arrayOfNulls>(size) + var i = 0 + + for (k in keys) { + result[i++] = { this[k] ?: throw ConcurrentModificationException("Key $k is no longer present in map $this") } + } + + return result as Array> +} + operator fun IItemHandler.get(index: Int): ItemStack = getStackInSlot(index) operator fun JsonObject.set(s: String, value: JsonElement) = add(s, value) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/ITooltippable.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/ITooltippable.kt new file mode 100644 index 000000000..94234f21a --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/ITooltippable.kt @@ -0,0 +1,100 @@ +package ru.dbotthepony.mc.otm.core + +import it.unimi.dsi.fastutil.objects.ObjectIterators +import net.minecraft.ChatFormatting +import net.minecraft.network.chat.Component +import net.minecraft.world.item.ItemStack +import ru.dbotthepony.mc.otm.client.isShiftDown +import ru.dbotthepony.mc.otm.client.minecraft +import java.util.stream.Stream + +interface ITooltippable { + fun addDescriptionLinesInternal(lines: Stream) { + addDescriptionFunctionsInternal(lines.map { c -> { ObjectIterators.singleton(c.copy()) } }) + } + + fun addDescriptionLinesInternal(vararg lines: Component) { + lines.forEach { c -> + addDescriptionFunctionsInternal({ ObjectIterators.singleton(c.copy()) }) + } + } + + fun addDescriptionLinesInternal(lines: Collection) { + lines.forEach { c -> + addDescriptionFunctionsInternal({ ObjectIterators.singleton(c.copy()) }) + } + } + + fun addDescriptionFunctionsInternal(lines: Stream Iterator>) + fun addDescriptionFunctionsInternal(vararg lines: (ItemStack) -> Iterator) + fun addDescriptionFunctionsInternal(lines: Collection<(ItemStack) -> Iterator>) + + fun assembleDescription(itemStack: ItemStack, into: MutableCollection) + + class Impl : ITooltippable { + private val descriptionLines = ArrayList<(ItemStack) -> Iterator>() + + override fun addDescriptionFunctionsInternal(lines: Stream Iterator>) { + lines.forEach { descriptionLines.add(it) } + } + + override fun addDescriptionFunctionsInternal(vararg lines: (ItemStack) -> Iterator) { + lines.forEach { descriptionLines.add(it) } + } + + override fun addDescriptionFunctionsInternal(lines: Collection<(ItemStack) -> Iterator>) { + lines.forEach { descriptionLines.add(it) } + } + + override fun assembleDescription(itemStack: ItemStack, into: MutableCollection) { + if (descriptionLines.isNotEmpty()) { + if (!minecraft.window.isShiftDown) { + into.add(TranslatableComponent("otm.gui.shift_for_more_info").withStyle(ChatFormatting.GRAY).withStyle(ChatFormatting.ITALIC)) + } else { + for (lines in descriptionLines) { + into.addAll(lines.invoke(itemStack)) + } + } + } + } + } +} + +fun T.addDescriptionLines(lines: Stream): T { + addDescriptionLinesInternal(lines) + return this +} + +fun T.addDescriptionLines(vararg lines: Component): T { + addDescriptionLinesInternal(lines.stream()) + return this +} + +fun T.addDescriptionLines(lines: Collection): T { + addDescriptionLinesInternal(lines) + return this +} + +fun T.addDescriptionFunctions(lines: Stream Iterator>): T { + addDescriptionFunctionsInternal(lines) + return this +} + +fun T.addDescriptionFunctions(vararg lines: (ItemStack) -> Iterator): T { + addDescriptionFunctionsInternal(lines.stream()) + return this +} + +fun T.addDescriptionFunctions(line: (ItemStack) -> Iterator): T { + addDescriptionFunctionsInternal(line) + return this +} + +fun T.addDescriptionFunctions(lines: Collection<(ItemStack) -> Iterator>): T { + addDescriptionFunctionsInternal(lines) + return this +} + +fun T.needsNoPowerDescription(formatting: ChatFormatting = ChatFormatting.GRAY): T { + return addDescriptionLines(TranslatableComponent("otm.needs_no_power").withStyle(formatting)) +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/collect/SupplierList.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/collect/SupplierList.kt index 82c637fcf..e45cb685b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/collect/SupplierList.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/collect/SupplierList.kt @@ -4,26 +4,22 @@ import java.util.function.Supplier import java.util.stream.Stream class SupplierList : AbstractList { - private val getters: Array<() -> T> + private val getters: Array> - constructor(vararg getters: () -> T) : super() { - this.getters = Array(getters.size) { getters[it] } - } - - constructor(getters: Collection<() -> T>) : super() { + constructor(getters: Collection>) : super() { val iterator = getters.iterator() this.getters = Array(getters.size) { iterator.next() } } - constructor(getters: Stream<() -> T>) : super() { + constructor(getters: Stream>) : super() { this.getters = getters.toArray(::arrayOfNulls) } constructor(vararg getters: Supplier) : super() { - this.getters = Array(getters.size) { getters[it]::get } + this.getters = Array(getters.size) { getters[it] } } - constructor(size: Int, provider: (Int) -> () -> T) { + constructor(size: Int, provider: (Int) -> Supplier) { this.getters = Array(size, provider) } @@ -31,6 +27,6 @@ class SupplierList : AbstractList { get() = getters.size override fun get(index: Int): T { - return getters[index].invoke() + return getters[index].get() } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/collect/SupplierMap.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/collect/SupplierMap.kt index da61f08b2..7211301a9 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/collect/SupplierMap.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/collect/SupplierMap.kt @@ -1,20 +1,21 @@ package ru.dbotthepony.mc.otm.core.collect import com.google.common.collect.ImmutableSet +import java.util.function.Supplier import java.util.stream.Stream class SupplierMap : AbstractMap { override val entries: Set> - constructor(vararg mValues: Pair T>) : super() { + constructor(vararg mValues: Pair>) : super() { entries = ImmutableSet.copyOf(mValues.map { Entry(it.first, it.second) }) } - constructor(mValues: Collection T>>) : super() { + constructor(mValues: Collection>>) : super() { entries = ImmutableSet.copyOf(mValues.map { Entry(it.first, it.second) }) } - constructor(mValues: Stream T>>) : super() { + constructor(mValues: Stream>>) : super() { entries = mValues.map { Entry(it.first, it.second) }.collect(ImmutableSet.toImmutableSet()) } @@ -24,9 +25,9 @@ class SupplierMap : AbstractMap { private inner class Entry( override val key: K, - private val getter: () -> T + private val getter: Supplier ) : Map.Entry { override val value: T - get() = getter.invoke() + get() = getter.get() } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/math/BlockRotationFreedom.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/math/BlockRotationFreedom.kt index 8a7328ca5..6cb7926f4 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/math/BlockRotationFreedom.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/math/BlockRotationFreedom.kt @@ -57,7 +57,9 @@ enum class BlockRotationFreedom(vararg values: BlockRotation) { BlockRotation.SOUTH_DOWN, BlockRotation.WEST_DOWN, BlockRotation.EAST_DOWN, - ); + ), + + NONE(BlockRotation.NORTH); val possibleValues: Collection get() = property.possibleValues val property: EnumProperty = EnumProperty.create("facing", BlockRotation::class.java, *values) @@ -66,14 +68,14 @@ enum class BlockRotationFreedom(vararg values: BlockRotation) { private val twoDirection = EnumMap>(Direction::class.java) init { - for (direction in Direction.values()) { + for (direction in Direction.entries) { oneDirection[direction] = possibleValues.firstOrNull { it.front == direction } ?: possibleValues.first() val second = EnumMap(Direction::class.java) twoDirection[direction] = second - for (direction2 in Direction.values()) { + for (direction2 in Direction.entries) { second[direction2] = possibleValues.firstOrNull { it.front == direction && it.top == direction2 } ?: possibleValues.firstOrNull { it.front == direction } ?: possibleValues.first() diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/ChestUpgraderItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/ChestUpgraderItem.kt index 9ecf82023..2ca124e9c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/ChestUpgraderItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/ChestUpgraderItem.kt @@ -31,7 +31,7 @@ import ru.dbotthepony.mc.otm.core.math.Vector import ru.dbotthepony.mc.otm.entity.MinecartCargoCrate import ru.dbotthepony.mc.otm.registry.MEntityTypes -class ChestUpgraderItem : Item(Properties().stacksTo(1)) { +class ChestUpgraderItem : MatteryItem(Properties().stacksTo(1)) { override fun onItemUseFirst(stack: ItemStack, context: UseOnContext): InteractionResult { val player = context.player ?: return super.onItemUseFirst(stack, context) @@ -105,17 +105,12 @@ class ChestUpgraderItem : Item(Properties().stacksTo(1)) { return super.onItemUseFirst(stack, context) } - override fun appendHoverText(pStack: ItemStack, pLevel: Level?, pTooltip: MutableList, pFlag: TooltipFlag) { - super.appendHoverText(pStack, pLevel, pTooltip, pFlag) - - pTooltip.add(DESCRIPTION) - pTooltip.add(DESCRIPTION2) + init { + addSimpleDescription() + addSimpleDescription("2") } companion object { - private val DESCRIPTION = TranslatableComponent("item.${MOD_ID}.chest_upgrader.desc").withStyle(ChatFormatting.DARK_GRAY) - private val DESCRIPTION2= TranslatableComponent("item.${MOD_ID}.chest_upgrader.desc2").withStyle(ChatFormatting.DARK_GRAY) - fun onEntityInteract(event: PlayerInteractEvent.EntityInteract) { if (event.target !is MinecartChest) return diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/EssenceCapsuleItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/EssenceCapsuleItem.kt index d7b6076db..377eca58f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/EssenceCapsuleItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/EssenceCapsuleItem.kt @@ -22,22 +22,22 @@ import ru.dbotthepony.mc.otm.core.tagNotNull import ru.dbotthepony.mc.otm.core.util.getLevelFromXp import ru.dbotthepony.mc.otm.runIfClient -class EssenceCapsuleItem(private val digital: Boolean) : Item(Properties().stacksTo(1).rarity(Rarity.UNCOMMON)) { - override fun appendHoverText(pStack: ItemStack, pLevel: Level?, pTooltipComponents: MutableList, pIsAdvanced: TooltipFlag) { - super.appendHoverText(pStack, pLevel, pTooltipComponents, pIsAdvanced) - pTooltipComponents.add(TranslatableComponent("otm.gui.essence_capsule").withStyle(ChatFormatting.DARK_GRAY)) - pTooltipComponents.add(TranslatableComponent("otm.gui.essence_capsule2").withStyle(ChatFormatting.DARK_GRAY)) +class EssenceCapsuleItem(private val digital: Boolean) : MatteryItem(Properties().stacksTo(1).rarity(Rarity.UNCOMMON)) { + override fun appendHoverText(itemStack: ItemStack, level: Level?, components: MutableList, tooltipType: TooltipFlag) { + super.appendHoverText(itemStack, level, components, tooltipType) + components.add(TranslatableComponent("otm.gui.essence_capsule").withStyle(ChatFormatting.DARK_GRAY)) + components.add(TranslatableComponent("otm.gui.essence_capsule2").withStyle(ChatFormatting.DARK_GRAY)) if (!digital) { - pTooltipComponents.add(TranslatableComponent("otm.gui.essence_capsule3").withStyle(ChatFormatting.DARK_GRAY)) - } else if (runIfClient(false) { minecraft.player?.matteryPlayer?.isAndroid ?: false }) { - pTooltipComponents.add(TranslatableComponent("otm.gui.essence_capsule.digital").withStyle(ChatFormatting.DARK_GRAY)) + components.add(TranslatableComponent("otm.gui.essence_capsule3").withStyle(ChatFormatting.DARK_GRAY)) + } else if (runIfClient(false) { minecraft.player?.matteryPlayer?.isAndroid == true }) { + components.add(TranslatableComponent("otm.gui.essence_capsule.digital").withStyle(ChatFormatting.DARK_GRAY)) } if (runIfClient(false) { minecraft.window.isShiftDown }) { - pTooltipComponents.add(TranslatableComponent("otm.gui.experience", experienceStored(pStack)).withStyle(ChatFormatting.GRAY)) + components.add(TranslatableComponent("otm.gui.experience", experienceStored(itemStack)).withStyle(ChatFormatting.GRAY)) } else { - pTooltipComponents.add(TranslatableComponent("otm.gui.experience_levels", getLevelFromXp(experienceStored(pStack))).withStyle(ChatFormatting.GRAY)) + components.add(TranslatableComponent("otm.gui.experience_levels", getLevelFromXp(experienceStored(itemStack))).withStyle(ChatFormatting.GRAY)) } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/EssenceServoItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/EssenceServoItem.kt index f6417fdc8..b35d5a3c6 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/EssenceServoItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/EssenceServoItem.kt @@ -14,11 +14,10 @@ import net.minecraft.world.level.Level import ru.dbotthepony.mc.otm.block.entity.tech.EssenceStorageBlockEntity import ru.dbotthepony.mc.otm.core.TranslatableComponent -class EssenceServoItem : Item(Properties().stacksTo(64)) { - override fun appendHoverText(pStack: ItemStack, pLevel: Level?, pTooltipComponents: MutableList, pIsAdvanced: TooltipFlag) { - super.appendHoverText(pStack, pLevel, pTooltipComponents, pIsAdvanced) - pTooltipComponents.add(TranslatableComponent("$descriptionId.desc2").withStyle(ChatFormatting.GRAY)) - pTooltipComponents.add(TranslatableComponent("$descriptionId.desc").withStyle(ChatFormatting.DARK_GRAY)) +class EssenceServoItem : MatteryItem(Properties().stacksTo(64)) { + init { + addSimpleDescription("2") + addSimpleDescription(formatting = ChatFormatting.DARK_GRAY) } fun useServo(player: Player, pos: BlockPos): InteractionResult { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/MatteryItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/MatteryItem.kt new file mode 100644 index 000000000..85f0ea45d --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/MatteryItem.kt @@ -0,0 +1,28 @@ +package ru.dbotthepony.mc.otm.item + +import it.unimi.dsi.fastutil.objects.ObjectIterators +import net.minecraft.ChatFormatting +import net.minecraft.network.chat.Component +import net.minecraft.world.item.Item +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.TooltipFlag +import net.minecraft.world.level.Level +import ru.dbotthepony.mc.otm.client.isShiftDown +import ru.dbotthepony.mc.otm.client.minecraft +import ru.dbotthepony.mc.otm.core.ITooltippable +import ru.dbotthepony.mc.otm.core.TranslatableComponent +import ru.dbotthepony.mc.otm.core.addAll +import ru.dbotthepony.mc.otm.core.addDescriptionFunctions +import ru.dbotthepony.mc.otm.core.addDescriptionLines +import java.util.stream.Stream + +open class MatteryItem(properties: Properties) : Item(properties), ITooltippable by ITooltippable.Impl() { + override fun appendHoverText(itemStack: ItemStack, level: Level?, components: MutableList, tooltipType: TooltipFlag) { + super.appendHoverText(itemStack, level, components, tooltipType) + assembleDescription(itemStack, components) + } +} + +fun T.addSimpleDescription(suffix: String = "", formatting: ChatFormatting = ChatFormatting.GRAY): T { + return addDescriptionFunctions { ObjectIterators.singleton(TranslatableComponent("$descriptionId.desc$suffix").withStyle(formatting)) } +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/MatteryMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/MatteryMenu.kt index 73709213c..59fc1ac12 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/MatteryMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/MatteryMenu.kt @@ -47,6 +47,7 @@ import ru.dbotthepony.mc.otm.core.util.BigDecimalValueCodec import ru.dbotthepony.mc.otm.core.util.BinaryStringCodec import ru.dbotthepony.mc.otm.core.util.BooleanValueCodec import ru.dbotthepony.mc.otm.core.util.CollectionStreamCodec +import ru.dbotthepony.mc.otm.core.util.FloatValueCodec import ru.dbotthepony.mc.otm.core.util.IStreamCodec import ru.dbotthepony.mc.otm.core.util.ItemStackValueCodec import ru.dbotthepony.mc.otm.core.util.ItemValueCodec @@ -189,6 +190,7 @@ abstract class MatteryMenu( fun itemStackInput(allowSpectators: Boolean = false, handler: (ItemStack) -> Unit) = PlayerInput(ItemStackValueCodec, allowSpectators, handler) fun nullableItemInput(allowSpectators: Boolean = false, handler: (Item?) -> Unit) = PlayerInput(ItemValueCodec.nullable, allowSpectators, handler) fun stringInput(allowSpectators: Boolean = false, handler: (String) -> Unit) = PlayerInput(BinaryStringCodec, allowSpectators, handler) + fun floatInput(allowSpectators: Boolean = false, handler: (Float) -> Unit) = PlayerInput(FloatValueCodec, allowSpectators, handler) fun intInput(allowSpectators: Boolean = false, handler: (Int) -> Unit) = PlayerInput(VarIntValueCodec, allowSpectators, handler) /** diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/HoloSignMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/HoloSignMenu.kt index bc3562c0e..87c55378e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/HoloSignMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/HoloSignMenu.kt @@ -7,10 +7,11 @@ import ru.dbotthepony.mc.otm.block.entity.decorative.HoloSignBlockEntity import ru.dbotthepony.mc.otm.menu.MatteryMenu import ru.dbotthepony.mc.otm.menu.input.BooleanInputWithFeedback import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback +import ru.dbotthepony.mc.otm.menu.input.FloatInputWithFeedback import ru.dbotthepony.mc.otm.menu.input.StringInputWithFeedback import ru.dbotthepony.mc.otm.registry.MMenus -class HoloSignMenu @JvmOverloads constructor( +class HoloSignMenu( containerId: Int, inventory: Inventory, tile: HoloSignBlockEntity? = null @@ -19,13 +20,27 @@ class HoloSignMenu @JvmOverloads constructor( val locked = BooleanInputWithFeedback(this) val redstone = EnumInputWithFeedback(this, RedstoneSetting::class.java) + val textRed = FloatInputWithFeedback(this) + val textGreen = FloatInputWithFeedback(this) + val textBlue = FloatInputWithFeedback(this) + val textAlpha = FloatInputWithFeedback(this) + init { text.filter { it.isCreative || !locked.value } redstone.filter { it.isCreative || !locked.value } locked.filter { it.isCreative } + textRed.filter { it.isCreative || !locked.value } + textGreen.filter { it.isCreative || !locked.value } + textBlue.filter { it.isCreative || !locked.value } + textAlpha.filter { it.isCreative || !locked.value } + if (tile != null) { text.withConsumer { if (tile.isLocked) tile.signText = it else tile.signText = HoloSignBlockEntity.truncate(it) }.withSupplier(tile::signText) + textRed.withConsumer { tile.textRed = it.coerceIn(0f, 1f) }.withSupplier(tile::textRed) + textGreen.withConsumer { tile.textGreen = it.coerceIn(0f, 1f) }.withSupplier(tile::textGreen) + textBlue.withConsumer { tile.textBlue = it.coerceIn(0f, 1f) }.withSupplier(tile::textBlue) + textAlpha.withConsumer { tile.textAlpha = it.coerceIn(0f, 1f) }.withSupplier(tile::textAlpha) locked.with(tile::isLocked) redstone.with(tile.redstoneControl::redstoneSetting) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/input/FloatInputWithFeedback.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/input/FloatInputWithFeedback.kt new file mode 100644 index 000000000..8ebb92db2 --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/input/FloatInputWithFeedback.kt @@ -0,0 +1,18 @@ +package ru.dbotthepony.mc.otm.menu.input + +import ru.dbotthepony.mc.otm.core.GetterSetter +import ru.dbotthepony.mc.otm.menu.MatteryMenu +import kotlin.reflect.KMutableProperty0 + +class FloatInputWithFeedback(menu: MatteryMenu) : AbstractPlayerInputWithFeedback() { + override val input = menu.floatInput { consumer?.invoke(it) } + override val field = menu.mSynchronizer.computedFloat { supplier?.invoke() ?: 0f } + + constructor(menu: MatteryMenu, state: KMutableProperty0) : this(menu) { + with(state) + } + + constructor(menu: MatteryMenu, state: GetterSetter) : this(menu) { + with(state) + } +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/tech/EssenceStorageMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/tech/EssenceStorageMenu.kt index e4acd946a..c5f0cc91b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/tech/EssenceStorageMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/tech/EssenceStorageMenu.kt @@ -14,6 +14,7 @@ import ru.dbotthepony.mc.otm.item.EssenceServoItem import ru.dbotthepony.mc.otm.menu.MatteryMenu import ru.dbotthepony.mc.otm.menu.MatterySlot import ru.dbotthepony.mc.otm.menu.input.EnumInputWithFeedback +import ru.dbotthepony.mc.otm.menu.input.FluidConfigPlayerInput import ru.dbotthepony.mc.otm.menu.input.ItemConfigPlayerInput import ru.dbotthepony.mc.otm.registry.MItems import ru.dbotthepony.mc.otm.registry.MMenus @@ -26,6 +27,7 @@ class EssenceStorageMenu @JvmOverloads constructor( val experienceStored by mSynchronizer.ComputedLongField(getter = { tile?.experienceStored ?: 0L }).property val redstoneConfig = EnumInputWithFeedback(this) val itemConfig = ItemConfigPlayerInput(this, tile?.itemConfig) + val fluidConfig = FluidConfigPlayerInput(this, tile?.fluidConfig) val capsuleSlot = object : MatterySlot(tile?.capsuleContainer ?: SimpleContainer(1), 0) { override fun mayPlace(itemStack: ItemStack): Boolean { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/tech/PoweredFurnaceMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/tech/PoweredFurnaceMenu.kt index e547464ab..8f4f57e8e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/tech/PoweredFurnaceMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/tech/PoweredFurnaceMenu.kt @@ -3,7 +3,10 @@ package ru.dbotthepony.mc.otm.menu.tech import net.minecraft.server.level.ServerPlayer import net.minecraft.world.entity.player.Inventory import net.minecraft.world.inventory.MenuType +import ru.dbotthepony.mc.otm.block.entity.tech.AbstractPoweredFurnaceBlockEntity +import ru.dbotthepony.mc.otm.block.entity.tech.PoweredBlastFurnaceBlockEntity import ru.dbotthepony.mc.otm.block.entity.tech.PoweredFurnaceBlockEntity +import ru.dbotthepony.mc.otm.block.entity.tech.PoweredSmokerBlockEntity import ru.dbotthepony.mc.otm.core.immutableList import ru.dbotthepony.mc.otm.menu.OutputSlot import ru.dbotthepony.mc.otm.menu.MatteryPoweredMenu @@ -20,7 +23,7 @@ class PoweredFurnaceMenu( type: MenuType, containerID: Int, inventory: Inventory, - tile: PoweredFurnaceBlockEntity? = null + tile: AbstractPoweredFurnaceBlockEntity<*, *>? = null ) : MatteryPoweredMenu(type, containerID, inventory, tile) { val inputSlots = makeSlots(tile?.inputs, 2, ::MatterySlot) val outputSlots = makeSlots(tile?.outputs, 2) { c, s -> OutputSlot(c, s) { tile?.experience?.popExperience(player as ServerPlayer) } } @@ -53,7 +56,7 @@ class PoweredFurnaceMenu( fun blasting( containerID: Int, inventory: Inventory, - tile: PoweredFurnaceBlockEntity? = null + tile: PoweredBlastFurnaceBlockEntity? = null ) : PoweredFurnaceMenu { return PoweredFurnaceMenu(MMenus.POWERED_BLAST_FURNACE, containerID, inventory, tile) } @@ -61,7 +64,7 @@ class PoweredFurnaceMenu( fun smoking( containerID: Int, inventory: Inventory, - tile: PoweredFurnaceBlockEntity? = null + tile: PoweredSmokerBlockEntity? = null ) : PoweredFurnaceMenu { return PoweredFurnaceMenu(MMenus.POWERED_SMOKER, containerID, inventory, tile) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatteryCookingRecipe.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatteryCookingRecipe.kt index 22aeea670..efb337677 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatteryCookingRecipe.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatteryCookingRecipe.kt @@ -86,7 +86,7 @@ class MicrowaveRecipe( experience: FloatProvider = ConstantFloat.ZERO ) : MatteryCookingRecipe(id, input, output, count, workTime, experience) { override fun getType(): RecipeType<*> = MRecipes.MICROWAVE - override fun getToastSymbol(): ItemStack = ItemStack(MItems.POWERED_SMOKER) + override fun getToastSymbol(): ItemStack = ItemStack(MItems.POWERED_SMOKER[null]!!) override fun getSerializer(): RecipeSerializer<*> = SERIALIZER override fun toFinished(): FinishedRecipe = SERIALIZER.toFinished(this) 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 143d7cd1d..412326e38 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/PlatePressRecipe.kt @@ -81,7 +81,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() = SERIALIZER.toFinished(this) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt index 38286bbda..9b3ff14b8 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt @@ -1,56 +1,25 @@ package ru.dbotthepony.mc.otm.registry -import com.mojang.serialization.Lifecycle -import net.minecraft.core.Holder -import net.minecraft.core.Registry -import net.minecraft.core.WritableRegistry -import net.minecraft.resources.ResourceKey -import net.minecraft.resources.ResourceLocation import net.minecraft.world.item.DyeColor import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.RegistryObject -import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.core.collect.SupplierMap +import java.util.function.Supplier import kotlin.reflect.KProperty operator fun RegistryObject.getValue(thisRef: Any, property: KProperty<*>): T { return get() } -private fun DeferredRegister.doColored(prefix: String, factory: (color: DyeColor, name: String) -> T): MutableCollection T>> { - return mutableListOf( - DyeColor.BLACK to register(prefix + "_black") { factory.invoke(DyeColor.BLACK, prefix + "_black") }::get, - DyeColor.BLUE to register(prefix + "_blue") { factory.invoke(DyeColor.BLUE, prefix + "_blue") }::get, - DyeColor.BROWN to register(prefix + "_brown") { factory.invoke(DyeColor.BROWN, prefix + "_brown") }::get, - DyeColor.CYAN to register(prefix + "_cyan") { factory.invoke(DyeColor.CYAN, prefix + "_cyan") }::get, - DyeColor.GRAY to register(prefix + "_gray") { factory.invoke(DyeColor.GRAY, prefix + "_gray") }::get, - DyeColor.GREEN to register(prefix + "_green") { factory.invoke(DyeColor.GREEN, prefix + "_green") }::get, - DyeColor.LIGHT_BLUE to register(prefix + "_light_blue") { factory.invoke(DyeColor.LIGHT_BLUE, prefix + "_light_blue") }::get, - DyeColor.LIGHT_GRAY to register(prefix + "_light_gray") { factory.invoke(DyeColor.LIGHT_GRAY, prefix + "_light_gray") }::get, - DyeColor.LIME to register(prefix + "_lime") { factory.invoke(DyeColor.LIME, prefix + "_lime") }::get, - DyeColor.MAGENTA to register(prefix + "_magenta") { factory.invoke(DyeColor.MAGENTA, prefix + "_magenta") }::get, - DyeColor.ORANGE to register(prefix + "_orange") { factory.invoke(DyeColor.ORANGE, prefix + "_orange") }::get, - DyeColor.PINK to register(prefix + "_pink") { factory.invoke(DyeColor.PINK, prefix + "_pink") }::get, - DyeColor.PURPLE to register(prefix + "_purple") { factory.invoke(DyeColor.PURPLE, prefix + "_purple") }::get, - DyeColor.RED to register(prefix + "_red") { factory.invoke(DyeColor.RED, prefix + "_red") }::get, - DyeColor.WHITE to register(prefix + "_white") { factory.invoke(DyeColor.WHITE, prefix + "_white") }::get, - DyeColor.YELLOW to register(prefix + "_yellow") { factory.invoke(DyeColor.YELLOW, prefix + "_yellow") }::get, - ) +internal fun DeferredRegister.colored(prefix: String, factory: (color: DyeColor, name: String) -> R): Map { + return SupplierMap(MRegistry.DYE_ORDER.map { it to register(prefix + "_" + it.name.lowercase()) { factory.invoke(it, prefix + "_" + it.name.lowercase()) } }) } -internal fun DeferredRegister.colored(prefix: String, factory: (color: DyeColor, name: String) -> T): Map { - return SupplierMap(doColored(prefix, factory)) -} +internal fun DeferredRegister.coloredWithBase(prefix: String, factory: (color: DyeColor?, name: String) -> R): Map { + val values = ArrayList>>() -@Suppress("unchecked_cast") -internal fun DeferredRegister.allColored(prefix: String, factory: (color: DyeColor?, name: String) -> T): Map { - return SupplierMap(doColored(prefix, factory).also { (it as MutableCollection T>>).add((null as DyeColor?) to register(prefix) { factory.invoke(null, prefix) }::get) }) -} + values.add(null to register(prefix) { factory.invoke(null, prefix) }) + MRegistry.DYE_ORDER.forEach { values.add(it to register(prefix + "_" + it.name.lowercase()) { factory.invoke(it, prefix + "_" + it.name.lowercase()) }) } -internal fun Registry.register(key: String, value: T): Holder { - return this.register(ResourceLocation(OverdriveThatMatters.MOD_ID, key), value) -} - -internal fun Registry.register(key: ResourceLocation, value: T): Holder { - return (this as WritableRegistry).register(ResourceKey.create(key(), key), value, Lifecycle.stable()) + return SupplierMap(values) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockColors.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockColors.kt index 85900d227..907ed0940 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockColors.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockColors.kt @@ -12,20 +12,24 @@ object MBlockColors { private const val DEFAULT_WATER_TINT: Int = 0x3F76E4 private fun registerBlockColors(event: RegisterColorHandlersEvent.Block) { - event.register({ state: BlockState, light: BlockAndTintGetter?, pos: BlockPos?, index: Int -> - if (index == 0) { - if (light == null || pos == null) - DEFAULT_WATER_TINT - else - BiomeColors.getAverageWaterColor(light, pos) - } else -1 - }, MBlocks.COBBLESTONE_GENERATOR) + for (it in MBlocks.COBBLESTONE_GENERATOR.values) { + event.register({ state: BlockState, light: BlockAndTintGetter?, pos: BlockPos?, index: Int -> + if (index == 0) { + if (light == null || pos == null) + DEFAULT_WATER_TINT + else + BiomeColors.getAverageWaterColor(light, pos) + } else -1 + }, it) + } } private fun registerItemColors(event: RegisterColorHandlersEvent.Item) { - event.register({ stack: ItemStack, index: Int -> - if (index == 0) DEFAULT_WATER_TINT else -1 - }, MBlocks.COBBLESTONE_GENERATOR) + for (it in MBlocks.COBBLESTONE_GENERATOR.values) { + event.register({ stack: ItemStack, index: Int -> + if (index == 0) DEFAULT_WATER_TINT else -1 + }, it) + } } internal fun register(bus: IEventBus) { 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 9036fc742..d79c1d9a9 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt @@ -31,6 +31,7 @@ import ru.dbotthepony.mc.otm.block.entity.tech.GravitationStabilizerBlockEntity import ru.dbotthepony.mc.otm.block.entity.tech.PlatePressBlockEntity import ru.dbotthepony.mc.otm.client.render.blockentity.* import ru.dbotthepony.mc.otm.config.CablesConfig +import ru.dbotthepony.mc.otm.core.asSupplierArray import ru.dbotthepony.mc.otm.core.collect.SupplierMap import ru.dbotthepony.mc.otm.core.getValue import java.util.function.Supplier @@ -43,32 +44,32 @@ object MBlockEntities { return registry.register(name) { BlockEntityType.Builder.of(factory, *blocks.map { it.get() }.toTypedArray()).build(null) } } - val ANDROID_STATION by register(MNames.ANDROID_STATION, ::AndroidStationBlockEntity, MBlocks::ANDROID_STATION) - val BATTERY_BANK by register(MNames.BATTERY_BANK, ::BatteryBankBlockEntity, MBlocks::BATTERY_BANK) - val MATTER_DECOMPOSER by register(MNames.MATTER_DECOMPOSER, ::MatterDecomposerBlockEntity, MBlocks::MATTER_DECOMPOSER) - val MATTER_CAPACITOR_BANK by register(MNames.MATTER_CAPACITOR_BANK, ::MatterCapacitorBankBlockEntity, MBlocks::MATTER_CAPACITOR_BANK) + val ANDROID_STATION by register(MNames.ANDROID_STATION, ::AndroidStationBlockEntity, *MBlocks.ANDROID_STATION.asSupplierArray()) + val BATTERY_BANK by register(MNames.BATTERY_BANK, ::BatteryBankBlockEntity, *MBlocks.BATTERY_BANK.asSupplierArray()) + val MATTER_DECOMPOSER by register(MNames.MATTER_DECOMPOSER, ::MatterDecomposerBlockEntity, *MBlocks.MATTER_DECOMPOSER.asSupplierArray()) + val MATTER_CAPACITOR_BANK by register(MNames.MATTER_CAPACITOR_BANK, ::MatterCapacitorBankBlockEntity, *MBlocks.MATTER_CAPACITOR_BANK.asSupplierArray()) val MATTER_CABLE by register(MNames.MATTER_CABLE, ::MatterCableBlockEntity, MBlocks::MATTER_CABLE) val STORAGE_CABLE by register(MNames.STORAGE_CABLE, ::StorageCableBlockEntity, MBlocks::STORAGE_CABLE) val PATTERN_STORAGE by register(MNames.PATTERN_STORAGE, ::PatternStorageBlockEntity, MBlocks::PATTERN_STORAGE) - val MATTER_SCANNER by register(MNames.MATTER_SCANNER, ::MatterScannerBlockEntity, MBlocks::MATTER_SCANNER) + val MATTER_SCANNER by register(MNames.MATTER_SCANNER, ::MatterScannerBlockEntity, *MBlocks.MATTER_SCANNER.asSupplierArray()) val MATTER_PANEL by register(MNames.MATTER_PANEL, ::MatterPanelBlockEntity, MBlocks::MATTER_PANEL) - val MATTER_REPLICATOR by register(MNames.MATTER_REPLICATOR, ::MatterReplicatorBlockEntity, MBlocks::MATTER_REPLICATOR) - val MATTER_BOTTLER by register(MNames.MATTER_BOTTLER, ::MatterBottlerBlockEntity, MBlocks::MATTER_BOTTLER) + val MATTER_REPLICATOR by register(MNames.MATTER_REPLICATOR, ::MatterReplicatorBlockEntity, *MBlocks.MATTER_REPLICATOR.asSupplierArray()) + val MATTER_BOTTLER by register(MNames.MATTER_BOTTLER, ::MatterBottlerBlockEntity, *MBlocks.MATTER_BOTTLER.asSupplierArray()) val DRIVE_VIEWER by register(MNames.DRIVE_VIEWER, ::DriveViewerBlockEntity, MBlocks::DRIVE_VIEWER) val BLACK_HOLE by register(MNames.BLACK_HOLE, ::BlackHoleBlockEntity, MBlocks::BLACK_HOLE) - val CARGO_CRATE by registry.register(MNames.CARGO_CRATE) { BlockEntityType.Builder.of(::CargoCrateBlockEntity, *MRegistry.CARGO_CRATES.blocks.values.toTypedArray()).build(null) } + val CARGO_CRATE by register(MNames.CARGO_CRATE, ::CargoCrateBlockEntity, *MRegistry.CARGO_CRATES.blocks.asSupplierArray()) val DRIVE_RACK by register(MNames.DRIVE_RACK, ::DriveRackBlockEntity, MBlocks::DRIVE_RACK) - val ITEM_MONITOR by register(MNames.ITEM_MONITOR, ::ItemMonitorBlockEntity, MBlocks::ITEM_MONITOR) + val ITEM_MONITOR by register(MNames.ITEM_MONITOR, ::ItemMonitorBlockEntity, *MBlocks.ITEM_MONITOR.asSupplierArray()) 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 MATTER_RECYCLER by register(MNames.MATTER_RECYCLER, ::MatterRecyclerBlockEntity, *MBlocks.MATTER_RECYCLER.asSupplierArray()) val ENERGY_SERVO by register(MNames.ENERGY_SERVO, ::EnergyServoBlockEntity, MBlocks::ENERGY_SERVO) - val COBBLESTONE_GENERATOR by register(MNames.COBBLESTONE_GENERATOR, ::CobblerBlockEntity, MBlocks::COBBLESTONE_GENERATOR) - val ESSENCE_STORAGE by register(MNames.ESSENCE_STORAGE, ::EssenceStorageBlockEntity, MBlocks::ESSENCE_STORAGE) - val MATTER_RECONSTRUCTOR by register(MNames.MATTER_RECONSTRUCTOR, ::MatterReconstructorBlockEntity, MBlocks::MATTER_RECONSTRUCTOR) + val COBBLESTONE_GENERATOR by register(MNames.COBBLESTONE_GENERATOR, ::CobblerBlockEntity, *MBlocks.COBBLESTONE_GENERATOR.asSupplierArray()) + val ESSENCE_STORAGE by register(MNames.ESSENCE_STORAGE, ::EssenceStorageBlockEntity, *MBlocks.ESSENCE_STORAGE.asSupplierArray()) + val MATTER_RECONSTRUCTOR by register(MNames.MATTER_RECONSTRUCTOR, ::MatterReconstructorBlockEntity, *MBlocks.MATTER_RECONSTRUCTOR.asSupplierArray()) val FLUID_TANK by register(MNames.FLUID_TANK, ::FluidTankBlockEntity, MBlocks::FLUID_TANK) val ANDROID_CHARGER by register(MNames.ANDROID_CHARGER, ::AndroidChargerBlockEntity, MBlocks::ANDROID_CHARGER) val ANDROID_CHARGER_MIDDLE by register(MNames.ANDROID_CHARGER + "_middle", ::AndroidChargerMiddleBlockEntity, MBlocks::ANDROID_CHARGER) @@ -78,16 +79,16 @@ object MBlockEntities { val PAINTER by register(MNames.PAINTER, ::PainterBlockEntity, MBlocks::PAINTER) val MATTER_ENTANGLER by register(MNames.MATTER_ENTANGLER, ::MatterEntanglerBlockEntity, MBlocks::MATTER_ENTANGLER) + val POWERED_FURNACE by register(MNames.POWERED_FURNACE, ::PoweredFurnaceBlockEntity, *MBlocks.POWERED_FURNACE.asSupplierArray()) + val POWERED_BLAST_FURNACE by register(MNames.POWERED_BLAST_FURNACE, ::PoweredBlastFurnaceBlockEntity, *MBlocks.POWERED_BLAST_FURNACE.asSupplierArray()) + val POWERED_SMOKER by register(MNames.POWERED_SMOKER, ::PoweredSmokerBlockEntity, *MBlocks.POWERED_SMOKER.asSupplierArray()) + val ENERGY_CABLES: Map> = SupplierMap(CablesConfig.E.entries.map { conf -> var selfFeed: Supplier> = Supplier { TODO() } selfFeed = register("${conf.name.lowercase()}_energy_cable", { a, b -> SimpleEnergyCableBlockEntity(selfFeed.get(), a, b, conf) }) as Supplier> - conf to selfFeed::get + conf to selfFeed }) - val POWERED_FURNACE: BlockEntityType by registry.register(MNames.POWERED_FURNACE) { BlockEntityType.Builder.of({ a, b -> MBlocks.POWERED_FURNACE.newBlockEntity(a, b) }, MBlocks.POWERED_FURNACE).build(null) } - val POWERED_BLAST_FURNACE: BlockEntityType by registry.register(MNames.POWERED_BLAST_FURNACE) { BlockEntityType.Builder.of({ a, b -> MBlocks.POWERED_BLAST_FURNACE.newBlockEntity(a, b) }, MBlocks.POWERED_BLAST_FURNACE).build(null) } - val POWERED_SMOKER: BlockEntityType by registry.register(MNames.POWERED_SMOKER) { BlockEntityType.Builder.of({ a, b -> MBlocks.POWERED_SMOKER.newBlockEntity(a, b) }, MBlocks.POWERED_SMOKER).build(null) } - val STORAGE_BUS: BlockEntityType by registry.register(MNames.STORAGE_BUS) { BlockEntityType.Builder.of(::StorageBusBlockEntity, MBlocks.STORAGE_BUS).build(null) } val STORAGE_IMPORTER: BlockEntityType by registry.register(MNames.STORAGE_IMPORTER) { BlockEntityType.Builder.of(::StorageImporterBlockEntity, MBlocks.STORAGE_IMPORTER).build(null) } val STORAGE_EXPORTER: BlockEntityType by registry.register(MNames.STORAGE_EXPORTER) { BlockEntityType.Builder.of(::StorageExporterBlockEntity, MBlocks.STORAGE_EXPORTER).build(null) } @@ -103,7 +104,6 @@ object MBlockEntities { bus.addListener(this::registerClient) } - @Suppress("unchecked_cast") private fun registerClient(event: FMLClientSetupEvent) { event.enqueueWork { BlockEntityRenderers.register(BLACK_HOLE, ::BlackHoleRenderer) 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 e031e8fb6..e2b04598e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt @@ -1,20 +1,10 @@ package ru.dbotthepony.mc.otm.registry -import net.minecraft.ChatFormatting -import net.minecraft.core.BlockPos -import net.minecraft.network.chat.Component import net.minecraft.util.valueproviders.UniformInt -import net.minecraft.world.entity.Entity -import net.minecraft.world.entity.EntityType -import net.minecraft.world.entity.monster.Zombie import net.minecraft.world.item.DyeColor -import net.minecraft.world.item.ItemStack -import net.minecraft.world.item.TooltipFlag import net.minecraft.world.item.crafting.RecipeType -import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.block.AnvilBlock import net.minecraft.world.level.block.Block -import net.minecraft.world.level.block.DoorBlock import net.minecraft.world.level.block.DropExperienceBlock import net.minecraft.world.level.block.IronBarsBlock import net.minecraft.world.level.block.LiquidBlock @@ -22,11 +12,8 @@ import net.minecraft.world.level.block.RotatedPillarBlock import net.minecraft.world.level.block.SlabBlock import net.minecraft.world.level.block.SoundType import net.minecraft.world.level.block.StairBlock -import net.minecraft.world.level.block.TrapDoorBlock import net.minecraft.world.level.block.WallBlock import net.minecraft.world.level.block.state.BlockBehaviour -import net.minecraft.world.level.block.state.BlockState -import net.minecraft.world.level.block.state.properties.BlockSetType import net.minecraft.world.level.block.state.properties.NoteBlockInstrument import net.minecraft.world.level.material.Material import net.minecraft.world.level.material.MaterialColor @@ -40,7 +27,9 @@ import ru.dbotthepony.mc.otm.block.BlockExplosionDebugger import ru.dbotthepony.mc.otm.block.BlockSphereDebugger import ru.dbotthepony.mc.otm.block.EnergyCableBlock import ru.dbotthepony.mc.otm.block.MatterCableBlock +import ru.dbotthepony.mc.otm.block.MatteryBlock import ru.dbotthepony.mc.otm.block.StorageCableBlock +import ru.dbotthepony.mc.otm.block.addSimpleDescription import ru.dbotthepony.mc.otm.block.decorative.DevChestBlock import ru.dbotthepony.mc.otm.block.decorative.EngineBlock import ru.dbotthepony.mc.otm.block.decorative.FluidTankBlock @@ -49,6 +38,8 @@ import ru.dbotthepony.mc.otm.block.decorative.InfiniteWaterSourceBlock import ru.dbotthepony.mc.otm.block.decorative.LaboratoryLamp import ru.dbotthepony.mc.otm.block.decorative.LaboratoryLampLight import ru.dbotthepony.mc.otm.block.decorative.PainterBlock +import ru.dbotthepony.mc.otm.block.decorative.TritaniumDoorBlock +import ru.dbotthepony.mc.otm.block.decorative.TritaniumTrapdoorBlock import ru.dbotthepony.mc.otm.block.matter.MatterBottlerBlock import ru.dbotthepony.mc.otm.block.matter.MatterCapacitorBankBlock import ru.dbotthepony.mc.otm.block.matter.MatterDecomposerBlock @@ -78,13 +69,16 @@ import ru.dbotthepony.mc.otm.block.tech.EnergyServoBlock import ru.dbotthepony.mc.otm.block.tech.EssenceStorageBlock import ru.dbotthepony.mc.otm.block.tech.PhantomAttractorBlock import ru.dbotthepony.mc.otm.block.tech.PlatePressBlock +import ru.dbotthepony.mc.otm.block.tech.AbstractPoweredFurnaceBlock +import ru.dbotthepony.mc.otm.block.tech.PoweredBlastFurnaceBlock import ru.dbotthepony.mc.otm.block.tech.PoweredFurnaceBlock +import ru.dbotthepony.mc.otm.block.tech.PoweredSmokerBlock import ru.dbotthepony.mc.otm.config.CablesConfig import ru.dbotthepony.mc.otm.config.MachinesConfig -import ru.dbotthepony.mc.otm.core.TranslatableComponent import ru.dbotthepony.mc.otm.core.collect.SupplierList import ru.dbotthepony.mc.otm.core.collect.SupplierMap import ru.dbotthepony.mc.otm.shapes.BlockShapes +import java.util.function.Supplier object MBlocks { private val registry = DeferredRegister.create(ForgeRegistries.BLOCKS, OverdriveThatMatters.MOD_ID) @@ -93,35 +87,35 @@ object MBlocks { registry.register(bus) } - val ANDROID_STATION: Block by registry.register(MNames.ANDROID_STATION) { AndroidStationBlock() } + val ANDROID_STATION = registry.coloredWithBase(MNames.ANDROID_STATION) { color, _ -> AndroidStationBlock(color) } val ANDROID_CHARGER: Block by registry.register(MNames.ANDROID_CHARGER) { AndroidChargerBlock() } - val BATTERY_BANK: Block by registry.register(MNames.BATTERY_BANK) { BatteryBankBlock() } - val MATTER_DECOMPOSER: Block by registry.register(MNames.MATTER_DECOMPOSER) { MatterDecomposerBlock() } - val MATTER_CAPACITOR_BANK: Block by registry.register(MNames.MATTER_CAPACITOR_BANK) { MatterCapacitorBankBlock() } + val BATTERY_BANK = registry.coloredWithBase(MNames.BATTERY_BANK) { color, _ -> BatteryBankBlock(color) } + val MATTER_DECOMPOSER = registry.coloredWithBase(MNames.MATTER_DECOMPOSER) { color, _ -> MatterDecomposerBlock(color) } + val MATTER_CAPACITOR_BANK = registry.coloredWithBase(MNames.MATTER_CAPACITOR_BANK) { color, _ -> MatterCapacitorBankBlock(color) } val MATTER_CABLE: Block by registry.register(MNames.MATTER_CABLE) { MatterCableBlock() } val PATTERN_STORAGE: Block by registry.register(MNames.PATTERN_STORAGE) { PatternStorageBlock() } - val MATTER_SCANNER: Block by registry.register(MNames.MATTER_SCANNER) { MatterScannerBlock() } + val MATTER_SCANNER = registry.coloredWithBase(MNames.MATTER_SCANNER) { color, _ -> MatterScannerBlock(color) } val MATTER_PANEL: Block by registry.register(MNames.MATTER_PANEL) { MatterPanelBlock() } - val MATTER_REPLICATOR: Block by registry.register(MNames.MATTER_REPLICATOR) { MatterReplicatorBlock() } - val MATTER_BOTTLER: Block by registry.register(MNames.MATTER_BOTTLER) { MatterBottlerBlock() } + val MATTER_REPLICATOR = registry.coloredWithBase(MNames.MATTER_REPLICATOR) { color, _ -> MatterReplicatorBlock(color) } + val MATTER_BOTTLER = registry.coloredWithBase(MNames.MATTER_BOTTLER) { color, _ -> MatterBottlerBlock(color) } val ENERGY_COUNTER: Block by registry.register(MNames.ENERGY_COUNTER) { EnergyCounterBlock() } val CHEMICAL_GENERATOR: Block by registry.register(MNames.CHEMICAL_GENERATOR) { ChemicalGeneratorBlock() } - val PLATE_PRESS: Block by registry.register(MNames.PLATE_PRESS) { PlatePressBlock() } - val TWIN_PLATE_PRESS: Block by registry.register(MNames.TWIN_PLATE_PRESS) { PlatePressBlock(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) } - val MATTER_RECYCLER: Block by registry.register(MNames.MATTER_RECYCLER) { MatterRecyclerBlock() } + val PLATE_PRESS = registry.coloredWithBase(MNames.PLATE_PRESS) { color, _ -> PlatePressBlock(color) } + val TWIN_PLATE_PRESS = registry.coloredWithBase(MNames.TWIN_PLATE_PRESS) { color, _ -> PlatePressBlock(color, isTwin = true) } + val POWERED_FURNACE = registry.coloredWithBase(MNames.POWERED_FURNACE) { color, _ -> PoweredFurnaceBlock(color) } + val POWERED_BLAST_FURNACE = registry.coloredWithBase(MNames.POWERED_BLAST_FURNACE) { color, _ -> PoweredBlastFurnaceBlock(color) } + val POWERED_SMOKER = registry.coloredWithBase(MNames.POWERED_SMOKER) { color, _ -> PoweredSmokerBlock(color) } + val MATTER_RECYCLER = registry.coloredWithBase(MNames.MATTER_RECYCLER) { color, _ -> MatterRecyclerBlock(color) } val ENERGY_SERVO: Block by registry.register(MNames.ENERGY_SERVO) { EnergyServoBlock() } - val COBBLESTONE_GENERATOR: Block by registry.register(MNames.COBBLESTONE_GENERATOR) { CobblerBlock() } + val COBBLESTONE_GENERATOR = registry.coloredWithBase(MNames.COBBLESTONE_GENERATOR) { color, _ -> CobblerBlock(color) } val INFINITE_WATER_SOURCE: Block by registry.register(MNames.INFINITE_WATER_SOURCE) { InfiniteWaterSourceBlock() } - val ESSENCE_STORAGE: EssenceStorageBlock by registry.register(MNames.ESSENCE_STORAGE) { EssenceStorageBlock() } - val MATTER_RECONSTRUCTOR: MatterReconstructorBlock by registry.register(MNames.MATTER_RECONSTRUCTOR) { MatterReconstructorBlock() } + val ESSENCE_STORAGE = registry.coloredWithBase(MNames.ESSENCE_STORAGE) { color, _ -> EssenceStorageBlock(color) } + val MATTER_RECONSTRUCTOR = registry.coloredWithBase(MNames.MATTER_RECONSTRUCTOR) { color, _ -> MatterReconstructorBlock(color) } val PAINTER: PainterBlock by registry.register(MNames.PAINTER) { PainterBlock() } val MATTER_ENTANGLER: MatterEntanglerBlock by registry.register(MNames.MATTER_ENTANGLER) { MatterEntanglerBlock() } val ENERGY_CABLES: Map = SupplierMap(CablesConfig.E.entries.map { conf -> - conf to registry.register("${conf.name.lowercase()}_energy_cable") { EnergyCableBlock { a, b -> MBlockEntities.ENERGY_CABLES[conf]!!.create(a, b)!! } }::get + conf to registry.register("${conf.name.lowercase()}_energy_cable") { EnergyCableBlock { a, b -> MBlockEntities.ENERGY_CABLES[conf]!!.create(a, b)!! } } }) val STORAGE_BUS: Block by registry.register(MNames.STORAGE_BUS) { StorageBusBlock() } @@ -130,7 +124,7 @@ object MBlocks { val DRIVE_VIEWER: Block by registry.register(MNames.DRIVE_VIEWER) { DriveViewerBlock() } val DRIVE_RACK: Block by registry.register(MNames.DRIVE_RACK) { DriveRackBlock() } - val ITEM_MONITOR: Block by registry.register(MNames.ITEM_MONITOR) { ItemMonitorBlock() } + val ITEM_MONITOR = registry.coloredWithBase(MNames.ITEM_MONITOR) { color, _ -> ItemMonitorBlock(color) } val STORAGE_CABLE: Block by registry.register(MNames.STORAGE_CABLE) { StorageCableBlock() } val STORAGE_POWER_SUPPLIER: Block by registry.register(MNames.STORAGE_POWER_SUPPLIER) { StoragePowerSupplierBlock() } @@ -158,18 +152,9 @@ object MBlocks { Block(BlockBehaviour.Properties.of(Material.METAL, DyeColor.BLUE).sound(SoundType.METAL).explosionResistance(400f).destroyTime(3f).requiresCorrectToolForDrops()) } - val METAL_JUNK: Block by registry.register(MNames.METAL_JUNK) { - object : Block(BlockBehaviour.Properties.of(Material.METAL, DyeColor.GRAY).sound(SoundType.NETHERITE_BLOCK).explosionResistance(45f).destroyTime(3f).requiresCorrectToolForDrops()) { - override fun appendHoverText( - p_49816_: ItemStack, - p_49817_: BlockGetter?, - p_49818_: MutableList, - p_49819_: TooltipFlag - ) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - p_49818_.add(TranslatableComponent("$descriptionId.desc").withStyle(ChatFormatting.DARK_GRAY)) - } - } + val METAL_JUNK: MatteryBlock by registry.register(MNames.METAL_JUNK) { + MatteryBlock(BlockBehaviour.Properties.of(Material.METAL, DyeColor.GRAY).sound(SoundType.NETHERITE_BLOCK).explosionResistance(45f).destroyTime(3f).requiresCorrectToolForDrops()) + .addSimpleDescription() } val METAL_MESH: Block by registry.register(MNames.METAL_MESH) { @@ -208,7 +193,7 @@ object MBlocks { val TRITANIUM_ANVIL: List init { - val anvils = ArrayList<() -> Block>() + val anvils = ArrayList>() for (i in 0 until TRITANIUM_ANVIL_VARIANTS) { val props = BlockBehaviour.Properties.of(Material.HEAVY_METAL, DyeColor.LIGHT_BLUE) @@ -223,84 +208,11 @@ object MBlocks { TRITANIUM_ANVIL = SupplierList(anvils) } - val TRITANIUM_DOOR = registry.allColored(MNames.TRITANIUM_DOOR) { color, _ -> - object : DoorBlock( - Properties.of(Material.METAL, color ?: DyeColor.LIGHT_BLUE) - .explosionResistance(80f) - .noOcclusion() - .destroyTime(3f) - .requiresCorrectToolForDrops(), - BlockSetType.IRON - ) { - override fun appendHoverText( - p_49816_: ItemStack, - p_49817_: BlockGetter?, - p_49818_: MutableList, - p_49819_: TooltipFlag - ) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - p_49818_.add(TranslatableComponent("$descriptionId.description0").withStyle(ChatFormatting.DARK_GRAY)) - p_49818_.add(TranslatableComponent("$descriptionId.description1").withStyle(ChatFormatting.DARK_GRAY)) + val TRITANIUM_DOOR: Map = registry.coloredWithBase(MNames.TRITANIUM_DOOR) { color, _ -> + TritaniumDoorBlock(color) } - if (color != null) { - p_49818_.add(TranslatableComponent("$descriptionId.description2").withStyle(ChatFormatting.DARK_GRAY)) - } - } - - override fun canEntityDestroy( - state: BlockState, - level: BlockGetter, - pos: BlockPos, - entity: Entity - ): Boolean { - return entity !is Zombie && super.canEntityDestroy(state, level, pos, entity) - } - } - } - - val TRITANIUM_TRAPDOOR = registry.allColored(MNames.TRITANIUM_TRAPDOOR) { color, _ -> - object : TrapDoorBlock( - Properties.of(Material.METAL, color ?: DyeColor.LIGHT_BLUE) - .explosionResistance(80f) - .noOcclusion().destroyTime(3f) - .requiresCorrectToolForDrops() - .isValidSpawn { _: BlockState, _: BlockGetter, _: BlockPos, _: EntityType<*>? -> false }, - BlockSetType.IRON - ) { - override fun appendHoverText( - p_49816_: ItemStack, - p_49817_: BlockGetter?, - p_49818_: MutableList, - p_49819_: TooltipFlag - ) { - super.appendHoverText(p_49816_, p_49817_, p_49818_, p_49819_) - p_49818_.add(TranslatableComponent("$descriptionId.description0").withStyle(ChatFormatting.DARK_GRAY)) - p_49818_.add(TranslatableComponent("$descriptionId.description1").withStyle(ChatFormatting.DARK_GRAY)) - - if (color != null) { - p_49818_.add(TranslatableComponent("$descriptionId.description2").withStyle(ChatFormatting.DARK_GRAY)) - } - } - - override fun canEntityDestroy( - state: BlockState, - level: BlockGetter, - pos: BlockPos, - entity: Entity - ): Boolean { - return entity !is Zombie && super.canEntityDestroy(state, level, pos, entity) - } - } } - - init { - MRegistry.TRITANIUM_PRESSURE_PLATE.registerBlocks(registry) - - MRegistry.CARGO_CRATES.registerBlocks(registry) - MRegistry.TRITANIUM_BLOCK.registerBlocks(registry) - MRegistry.TRITANIUM_STAIRS.registerBlocks(registry) - MRegistry.TRITANIUM_SLAB.registerBlocks(registry) - MRegistry.TRITANIUM_WALL.registerBlocks(registry) - } + val TRITANIUM_TRAPDOOR: Map = registry.coloredWithBase(MNames.TRITANIUM_TRAPDOOR) { color, _ -> + TritaniumTrapdoorBlock(color) } val TRITANIUM_STRIPED_BLOCK: Block by registry.register(MNames.TRITANIUM_STRIPED_BLOCK) { Block( BlockBehaviour.Properties.of(Material.METAL, DyeColor.LIGHT_BLUE) @@ -332,18 +244,6 @@ object MBlocks { ) } init { - MRegistry.INDUSTRIAL_GLASS.registerBlocks(registry) - MRegistry.INDUSTRIAL_GLASS_PANE.registerBlocks(registry) - MRegistry.UNREFINED_FLOOR_TILES.registerBlocks(registry) - MRegistry.FLOOR_TILES.registerBlocks(registry) - MRegistry.FLOOR_TILES_STAIRS.registerBlocks(registry) - MRegistry.FLOOR_TILES_SLAB.registerBlocks(registry) - MRegistry.VENT.registerBlocks(registry) - MRegistry.VENT_ALTERNATIVE.registerBlocks(registry) - MRegistry.DECORATIVE_CRATE.registerBlocks(registry) - MRegistry.TRITANIUM_STRIPED_BLOCK.registerBlocks(registry) - MRegistry.TRITANIUM_STRIPED_STAIRS.registerBlocks(registry) - MRegistry.TRITANIUM_STRIPED_SLAB.registerBlocks(registry) - MRegistry.TRITANIUM_STRIPED_WALL.registerBlocks(registry) + MRegistry.registerBlocks(registry) } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MCreativeTabs.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MCreativeTabs.kt index 118ae68ca..6515f205a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MCreativeTabs.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MCreativeTabs.kt @@ -240,6 +240,8 @@ private fun addDecorativeTabItems(consumer: CreativeModeTab.Output) { colored(MItems.CARGO_CRATE_MINECARTS) + all(MRegistry.COMPUTER_TERMINAL.allItems) + all(MRegistry.DECORATIVE_CRATE.allItems) for (color in colorOrder) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt index 2076a4323..47cad1f74 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt @@ -7,10 +7,8 @@ import net.minecraft.client.renderer.entity.MinecartRenderer import net.minecraft.world.entity.Entity import net.minecraft.world.entity.EntityType import net.minecraft.world.entity.MobCategory -import net.minecraft.world.item.DyeColor import net.minecraftforge.eventbus.api.IEventBus import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.ForgeRegistries import ru.dbotthepony.mc.otm.OverdriveThatMatters @@ -25,7 +23,7 @@ object MEntityTypes { EntityType.Builder.of({ _, level -> PlasmaProjectile(level) }, MobCategory.MISC).sized(0.4f, 0.4f).build(MNames.PLASMA) } - val CARGO_CRATE_MINECARTS = registry.allColored(MNames.MINECART_CARGO_CRATE) { color, name -> + val CARGO_CRATE_MINECARTS = registry.coloredWithBase(MNames.MINECART_CARGO_CRATE) { color, name -> EntityType.Builder.of({ it, level -> MinecartCargoCrate(it, color, level)}, MobCategory.MISC).sized(0.98F, 0.7F).clientTrackingRange(8).build(name) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MFluids.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MFluids.kt index d6e2bfe01..ec50f1bdd 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MFluids.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MFluids.kt @@ -46,15 +46,16 @@ object MFluids { .descriptionId("block.overdrive_that_matters.liquid_xp") ) { override fun initializeClient(consumer: Consumer) { - val path = ResourceLocation(OverdriveThatMatters.MOD_ID, "block/ph_kitty") + val still = ResourceLocation(OverdriveThatMatters.MOD_ID, "block/liquid_xp_still") + val flowing = ResourceLocation(OverdriveThatMatters.MOD_ID, "block/liquid_xp_flowing") consumer.accept(object : IClientFluidTypeExtensions { override fun getStillTexture(): ResourceLocation { - return path + return still } override fun getFlowingTexture(): ResourceLocation { - return path + return flowing } }) } 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 0d3611aaa..edbe1b5a5 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt @@ -21,6 +21,8 @@ import ru.dbotthepony.mc.otm.config.CablesConfig import ru.dbotthepony.mc.otm.config.ItemsConfig import ru.dbotthepony.mc.otm.core.collect.SupplierList import ru.dbotthepony.mc.otm.core.TranslatableComponent +import ru.dbotthepony.mc.otm.core.addAll +import ru.dbotthepony.mc.otm.core.asSupplierArray import ru.dbotthepony.mc.otm.core.collect.SupplierMap import ru.dbotthepony.mc.otm.core.math.Decimal import ru.dbotthepony.mc.otm.item.* @@ -39,6 +41,7 @@ import ru.dbotthepony.mc.otm.item.armor.TritaniumArmorItem import ru.dbotthepony.mc.otm.item.exopack.ExopackUpgradeItem import ru.dbotthepony.mc.otm.item.exopack.ProceduralExopackSlotUpgradeItem import ru.dbotthepony.mc.otm.item.weapon.PlasmaRifleItem +import java.util.function.Supplier object MItems { private val DEFAULT_PROPERTIES = Item.Properties() @@ -49,129 +52,101 @@ object MItems { } val ENERGY_CABLES: Map = SupplierMap(CablesConfig.E.entries.map { conf -> - conf to registry.register("${conf.name.lowercase()}_energy_cable") { BlockItem(MBlocks.ENERGY_CABLES[conf]!!, DEFAULT_PROPERTIES) }::get + conf to registry.register("${conf.name.lowercase()}_energy_cable") { BlockItem(MBlocks.ENERGY_CABLES[conf]!!, DEFAULT_PROPERTIES) } }) - val ANDROID_STATION: BlockItem by registry.register(MNames.ANDROID_STATION) { BlockItem(MBlocks.ANDROID_STATION, DEFAULT_PROPERTIES) } + val ANDROID_STATION = registry.coloredWithBase(MNames.ANDROID_STATION) { color, _ -> BlockItem(MBlocks.ANDROID_STATION[color]!!, DEFAULT_PROPERTIES) } val ANDROID_CHARGER: BlockItem by registry.register(MNames.ANDROID_CHARGER) { BlockItem(MBlocks.ANDROID_CHARGER, DEFAULT_PROPERTIES) } - val BATTERY_BANK: BlockItem by registry.register(MNames.BATTERY_BANK) { BlockItem(MBlocks.BATTERY_BANK, DEFAULT_PROPERTIES) } - val MATTER_DECOMPOSER: BlockItem by registry.register(MNames.MATTER_DECOMPOSER) { BlockItem(MBlocks.MATTER_DECOMPOSER, DEFAULT_PROPERTIES) } - val MATTER_CAPACITOR_BANK: BlockItem by registry.register(MNames.MATTER_CAPACITOR_BANK) { BlockItem(MBlocks.MATTER_CAPACITOR_BANK, DEFAULT_PROPERTIES) } + val BATTERY_BANK = registry.coloredWithBase(MNames.BATTERY_BANK) { color, _ -> BlockItem(MBlocks.BATTERY_BANK[color]!!, DEFAULT_PROPERTIES) } + val MATTER_DECOMPOSER = registry.coloredWithBase(MNames.MATTER_DECOMPOSER) { color, _ -> BlockItem(MBlocks.MATTER_DECOMPOSER[color]!!, DEFAULT_PROPERTIES) } + val MATTER_CAPACITOR_BANK = registry.coloredWithBase(MNames.MATTER_CAPACITOR_BANK) { color, _ -> BlockItem(MBlocks.MATTER_CAPACITOR_BANK[color]!!, DEFAULT_PROPERTIES) } val MATTER_CABLE: BlockItem by registry.register(MNames.MATTER_CABLE) { BlockItem(MBlocks.MATTER_CABLE, DEFAULT_PROPERTIES) } val PATTERN_STORAGE: BlockItem by registry.register(MNames.PATTERN_STORAGE) { BlockItem(MBlocks.PATTERN_STORAGE, DEFAULT_PROPERTIES) } - val MATTER_SCANNER: BlockItem by registry.register(MNames.MATTER_SCANNER) { BlockItem(MBlocks.MATTER_SCANNER, DEFAULT_PROPERTIES) } + val MATTER_SCANNER = registry.coloredWithBase(MNames.MATTER_SCANNER) { color, _ -> BlockItem(MBlocks.MATTER_SCANNER[color]!!, DEFAULT_PROPERTIES) } val MATTER_PANEL: BlockItem by registry.register(MNames.MATTER_PANEL) { BlockItem(MBlocks.MATTER_PANEL, DEFAULT_PROPERTIES) } - val MATTER_REPLICATOR: BlockItem by registry.register(MNames.MATTER_REPLICATOR) { BlockItem(MBlocks.MATTER_REPLICATOR, DEFAULT_PROPERTIES) } - val MATTER_BOTTLER: BlockItem by registry.register(MNames.MATTER_BOTTLER) { BlockItem(MBlocks.MATTER_BOTTLER, DEFAULT_PROPERTIES) } + val MATTER_REPLICATOR = registry.coloredWithBase(MNames.MATTER_REPLICATOR) { color, _ -> BlockItem(MBlocks.MATTER_REPLICATOR[color]!!, DEFAULT_PROPERTIES) } + val MATTER_BOTTLER = registry.coloredWithBase(MNames.MATTER_BOTTLER) { color, _ -> BlockItem(MBlocks.MATTER_BOTTLER[color]!!, DEFAULT_PROPERTIES) } val TRITANIUM_ORE: BlockItem by registry.register(MNames.TRITANIUM_ORE) { BlockItem(MBlocks.TRITANIUM_ORE, DEFAULT_PROPERTIES) } val DEEPSLATE_TRITANIUM_ORE: BlockItem by registry.register(MNames.DEEPSLATE_TRITANIUM_ORE) { BlockItem(MBlocks.DEEPSLATE_TRITANIUM_ORE, DEFAULT_PROPERTIES) } val TRITANIUM_RAW_BLOCK: BlockItem by registry.register(MNames.TRITANIUM_RAW_BLOCK) { BlockItem(MBlocks.TRITANIUM_RAW_BLOCK, DEFAULT_PROPERTIES) } val ENERGY_COUNTER: BlockItem by registry.register(MNames.ENERGY_COUNTER) { BlockItem(MBlocks.ENERGY_COUNTER, DEFAULT_PROPERTIES) } val CHEMICAL_GENERATOR: BlockItem by registry.register(MNames.CHEMICAL_GENERATOR) { BlockItem(MBlocks.CHEMICAL_GENERATOR, DEFAULT_PROPERTIES) } - val PLATE_PRESS: 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 MATTER_RECYCLER: BlockItem by registry.register(MNames.MATTER_RECYCLER) { BlockItem(MBlocks.MATTER_RECYCLER, DEFAULT_PROPERTIES) } + val PLATE_PRESS = registry.coloredWithBase(MNames.PLATE_PRESS) { color, _ -> BlockItem(MBlocks.PLATE_PRESS[color]!!, DEFAULT_PROPERTIES) } + val TWIN_PLATE_PRESS = registry.coloredWithBase(MNames.TWIN_PLATE_PRESS) { color, _ -> BlockItem(MBlocks.TWIN_PLATE_PRESS[color]!!, DEFAULT_PROPERTIES) } + val MATTER_RECYCLER = registry.coloredWithBase(MNames.MATTER_RECYCLER) { color, _ -> BlockItem(MBlocks.MATTER_RECYCLER[color]!!, DEFAULT_PROPERTIES) } - val POWERED_FURNACE: BlockItem by registry.register(MNames.POWERED_FURNACE) { BlockItem(MBlocks.POWERED_FURNACE, DEFAULT_PROPERTIES) } - val POWERED_BLAST_FURNACE: BlockItem by registry.register(MNames.POWERED_BLAST_FURNACE) { BlockItem(MBlocks.POWERED_BLAST_FURNACE, DEFAULT_PROPERTIES) } - val POWERED_SMOKER: BlockItem by registry.register(MNames.POWERED_SMOKER) { BlockItem(MBlocks.POWERED_SMOKER, DEFAULT_PROPERTIES) } + val POWERED_FURNACE = registry.coloredWithBase(MNames.POWERED_FURNACE) { color, _ -> BlockItem(MBlocks.POWERED_FURNACE[color]!!, DEFAULT_PROPERTIES) } + val POWERED_BLAST_FURNACE = registry.coloredWithBase(MNames.POWERED_BLAST_FURNACE) { color, _ -> BlockItem(MBlocks.POWERED_BLAST_FURNACE[color]!!, DEFAULT_PROPERTIES) } + val POWERED_SMOKER = registry.coloredWithBase(MNames.POWERED_SMOKER) { color, _ -> BlockItem(MBlocks.POWERED_SMOKER[color]!!, DEFAULT_PROPERTIES) } val STORAGE_BUS: BlockItem by registry.register(MNames.STORAGE_BUS) { BlockItem(MBlocks.STORAGE_BUS, DEFAULT_PROPERTIES) } val STORAGE_IMPORTER: BlockItem by registry.register(MNames.STORAGE_IMPORTER) { BlockItem(MBlocks.STORAGE_IMPORTER, DEFAULT_PROPERTIES) } val STORAGE_EXPORTER: BlockItem by registry.register(MNames.STORAGE_EXPORTER) { BlockItem(MBlocks.STORAGE_EXPORTER, DEFAULT_PROPERTIES) } val DRIVE_VIEWER: BlockItem by registry.register(MNames.DRIVE_VIEWER) { BlockItem(MBlocks.DRIVE_VIEWER, DEFAULT_PROPERTIES) } val DRIVE_RACK: BlockItem by registry.register(MNames.DRIVE_RACK) { BlockItem(MBlocks.DRIVE_RACK, DEFAULT_PROPERTIES) } - val ITEM_MONITOR: BlockItem by registry.register(MNames.ITEM_MONITOR) { BlockItem(MBlocks.ITEM_MONITOR, DEFAULT_PROPERTIES) } + val ITEM_MONITOR = registry.coloredWithBase(MNames.ITEM_MONITOR) { color, _ -> BlockItem(MBlocks.ITEM_MONITOR[color]!!, DEFAULT_PROPERTIES) } val STORAGE_CABLE: BlockItem by registry.register(MNames.STORAGE_CABLE) { BlockItem(MBlocks.STORAGE_CABLE, DEFAULT_PROPERTIES) } val STORAGE_POWER_SUPPLIER: BlockItem by registry.register(MNames.STORAGE_POWER_SUPPLIER) { BlockItem(MBlocks.STORAGE_POWER_SUPPLIER, DEFAULT_PROPERTIES) } - val GRAVITATION_STABILIZER: BlockItem by registry.register(MNames.GRAVITATION_STABILIZER) { - object : BlockItem(MBlocks.GRAVITATION_STABILIZER, DEFAULT_PROPERTIES) { - override fun appendHoverText(p_40572_: ItemStack, p_40573_: Level?, p_40574_: MutableList, p_40575_: TooltipFlag) { - super.appendHoverText(p_40572_, p_40573_, p_40574_, p_40575_) + val GRAVITATION_STABILIZER: BlockItem by registry.register(MNames.GRAVITATION_STABILIZER) { BlockItem(MBlocks.GRAVITATION_STABILIZER, DEFAULT_PROPERTIES) } - p_40574_.add(TranslatableComponent("${MBlocks.GRAVITATION_STABILIZER.descriptionId}.desc").withStyle(ChatFormatting.GRAY)) - p_40574_.add(TranslatableComponent("otm.needs_no_power").withStyle(ChatFormatting.DARK_GRAY)) - p_40574_.add(TranslatableComponent("${MBlocks.GRAVITATION_STABILIZER.descriptionId}.desc2").withStyle(ChatFormatting.DARK_GRAY)) - p_40574_.add(TranslatableComponent("${MBlocks.GRAVITATION_STABILIZER.descriptionId}.desc3").withStyle(ChatFormatting.DARK_GRAY)) - } - } - } - - val PHANTOM_ATTRACTOR: DoubleHighBlockItem by registry.register(MNames.PHANTOM_ATTRACTOR) { - object : DoubleHighBlockItem(MBlocks.PHANTOM_ATTRACTOR, DEFAULT_PROPERTIES) { - override fun appendHoverText(p_40572_: ItemStack, p_40573_: Level?, p_40574_: MutableList, p_40575_: TooltipFlag) { - super.appendHoverText(p_40572_, p_40573_, p_40574_, p_40575_) - - p_40574_.add(TranslatableComponent("${MBlocks.PHANTOM_ATTRACTOR.descriptionId}.desc").withStyle(ChatFormatting.GRAY)) - p_40574_.add(TranslatableComponent("otm.needs_no_power").withStyle(ChatFormatting.DARK_GRAY)) - } - } - } - - val ENERGY_SERVO: BlockItem by registry.register(MNames.ENERGY_SERVO) { - object : BlockItem(MBlocks.ENERGY_SERVO, DEFAULT_PROPERTIES) { - override fun appendHoverText(p_40572_: ItemStack, p_40573_: Level?, p_40574_: MutableList, p_40575_: TooltipFlag) { - super.appendHoverText(p_40572_, p_40573_, p_40574_, p_40575_) - - p_40574_.add(TranslatableComponent("${MBlocks.ENERGY_SERVO.descriptionId}.desc").withStyle(ChatFormatting.GRAY)) - } - } - } - - val COBBLESTONE_GENERATOR: BlockItem by registry.register(MNames.COBBLESTONE_GENERATOR) { - object : BlockItem(MBlocks.COBBLESTONE_GENERATOR, DEFAULT_PROPERTIES) { - override fun appendHoverText(p_40572_: ItemStack, p_40573_: Level?, p_40574_: MutableList, p_40575_: TooltipFlag) { - super.appendHoverText(p_40572_, p_40573_, p_40574_, p_40575_) - p_40574_.add(TranslatableComponent("otm.needs_no_power").withStyle(ChatFormatting.GRAY)) - } - } - } + val PHANTOM_ATTRACTOR: DoubleHighBlockItem by registry.register(MNames.PHANTOM_ATTRACTOR) { DoubleHighBlockItem(MBlocks.PHANTOM_ATTRACTOR, DEFAULT_PROPERTIES) } + val ENERGY_SERVO: BlockItem by registry.register(MNames.ENERGY_SERVO) { BlockItem(MBlocks.ENERGY_SERVO, DEFAULT_PROPERTIES) } + val COBBLESTONE_GENERATOR: Map = registry.coloredWithBase(MNames.COBBLESTONE_GENERATOR) { color, _ -> BlockItem(MBlocks.COBBLESTONE_GENERATOR[color]!!, DEFAULT_PROPERTIES) } val INFINITE_WATER_SOURCE: BlockItem by registry.register(MNames.INFINITE_WATER_SOURCE) { BlockItem(MBlocks.INFINITE_WATER_SOURCE, DEFAULT_PROPERTIES) } + val ESSENCE_STORAGE: Map = registry.coloredWithBase(MNames.ESSENCE_STORAGE) { color, _ -> BlockItem(MBlocks.ESSENCE_STORAGE[color]!!, DEFAULT_PROPERTIES) } + val MATTER_RECONSTRUCTOR = registry.coloredWithBase(MNames.MATTER_RECONSTRUCTOR) { color, _ -> BlockItem(MBlocks.MATTER_RECONSTRUCTOR[color]!!, DEFAULT_PROPERTIES) } - val ESSENCE_STORAGE: BlockItem by registry.register(MNames.ESSENCE_STORAGE) { - object : BlockItem(MBlocks.ESSENCE_STORAGE, DEFAULT_PROPERTIES) { - override fun appendHoverText(p_40572_: ItemStack, p_40573_: Level?, p_40574_: MutableList, p_40575_: TooltipFlag) { - super.appendHoverText(p_40572_, p_40573_, p_40574_, p_40575_) - p_40574_.add(TranslatableComponent("$descriptionId.desc").withStyle(ChatFormatting.GRAY)) - } - } - } - - val MATTER_RECONSTRUCTOR: BlockItem by registry.register(MNames.MATTER_RECONSTRUCTOR) { - object : BlockItem(MBlocks.MATTER_RECONSTRUCTOR, DEFAULT_PROPERTIES) { - override fun appendHoverText(p_40572_: ItemStack, p_40573_: Level?, p_40574_: MutableList, p_40575_: TooltipFlag) { - super.appendHoverText(p_40572_, p_40573_, p_40574_, p_40575_) - p_40574_.add(TranslatableComponent("$descriptionId.desc").withStyle(ChatFormatting.GRAY)) - } - } - } - - val DEV_CHEST: BlockItem by registry.register(MNames.DEV_CHEST) { - object : BlockItem(MBlocks.DEV_CHEST, DEFAULT_PROPERTIES) { - override fun appendHoverText(p_40572_: ItemStack, p_40573_: Level?, p_40574_: MutableList, p_40575_: TooltipFlag) { - super.appendHoverText(p_40572_, p_40573_, p_40574_, p_40575_) - p_40574_.add(TranslatableComponent("$descriptionId.desc").withStyle(ChatFormatting.GRAY)) - } - } - } - + val DEV_CHEST: BlockItem by registry.register(MNames.DEV_CHEST) { BlockItem(MBlocks.DEV_CHEST, DEFAULT_PROPERTIES) } val PAINTER: BlockItem by registry.register(MNames.PAINTER) { BlockItem(MBlocks.PAINTER, DEFAULT_PROPERTIES) } val MATTER_ENTANGLER: BlockItem by registry.register(MNames.MATTER_ENTANGLER) { BlockItem(MBlocks.MATTER_ENTANGLER, DEFAULT_PROPERTIES) } - val MACHINES = SupplierList( - ::ANDROID_STATION, ::ANDROID_CHARGER, ::BATTERY_BANK, ::MATTER_DECOMPOSER, ::MATTER_CAPACITOR_BANK, ::MATTER_CABLE, ::PATTERN_STORAGE, - ::MATTER_SCANNER, ::MATTER_PANEL, ::MATTER_REPLICATOR, ::MATTER_BOTTLER, ::MATTER_ENTANGLER, ::ENERGY_COUNTER, ::CHEMICAL_GENERATOR, - ::MATTER_RECYCLER, ::PLATE_PRESS, ::TWIN_PLATE_PRESS, ::POWERED_FURNACE, ::POWERED_BLAST_FURNACE, - ::POWERED_SMOKER, - ::STORAGE_BUS, ::STORAGE_IMPORTER, ::STORAGE_EXPORTER, ::DRIVE_VIEWER, - ::DRIVE_RACK, ::ITEM_MONITOR, ::STORAGE_CABLE, ::STORAGE_POWER_SUPPLIER, - ::ENERGY_SERVO, ::PAINTER, - ::PHANTOM_ATTRACTOR, ::GRAVITATION_STABILIZER, ::COBBLESTONE_GENERATOR, ::INFINITE_WATER_SOURCE, - ::ESSENCE_STORAGE, ::MATTER_RECONSTRUCTOR - ) + val MACHINES: List + + init { + val machines = ArrayList>() + + machines.addAll(PLATE_PRESS.asSupplierArray()) + machines.addAll(TWIN_PLATE_PRESS.asSupplierArray()) + machines.addAll(POWERED_FURNACE.asSupplierArray()) + machines.addAll(POWERED_BLAST_FURNACE.asSupplierArray()) + machines.addAll(POWERED_SMOKER.asSupplierArray()) + + machines.addAll(ANDROID_STATION.asSupplierArray().iterator()) + machines.add(::ANDROID_CHARGER) + machines.addAll(BATTERY_BANK.asSupplierArray().iterator()) + machines.add(::ENERGY_COUNTER) + machines.add(::CHEMICAL_GENERATOR) + machines.add(::ENERGY_SERVO) + + machines.add(::PAINTER) + machines.addAll(COBBLESTONE_GENERATOR.asSupplierArray().iterator()) + machines.addAll(ESSENCE_STORAGE.asSupplierArray().iterator()) + + machines.addAll(MATTER_DECOMPOSER.asSupplierArray().iterator()) + machines.addAll(MATTER_CAPACITOR_BANK.asSupplierArray().iterator()) + machines.add(::MATTER_CABLE) + machines.add(::PATTERN_STORAGE) + machines.addAll(MATTER_SCANNER.asSupplierArray().iterator()) + machines.add(::MATTER_PANEL) + machines.addAll(MATTER_REPLICATOR.asSupplierArray().iterator()) + machines.addAll(MATTER_BOTTLER.asSupplierArray().iterator()) + machines.add(::MATTER_ENTANGLER) + machines.addAll(MATTER_RECYCLER.asSupplierArray().iterator()) + + machines.add(::STORAGE_BUS) + machines.add(::STORAGE_IMPORTER) + machines.add(::STORAGE_EXPORTER) + machines.add(::DRIVE_VIEWER) + machines.add(::DRIVE_RACK) + machines.addAll(ITEM_MONITOR.asSupplierArray().iterator()) + machines.add(::STORAGE_CABLE) + machines.add(::STORAGE_POWER_SUPPLIER) + + MACHINES = SupplierList(machines) + } val DEBUG_EXPLOSION_SMALL: Item by registry.register(MNames.DEBUG_EXPLOSION_SMALL) { BlockItem(MBlocks.DEBUG_EXPLOSION_SMALL, Item.Properties().stacksTo(64)) } val DEBUG_SPHERE_POINTS: Item by registry.register(MNames.DEBUG_SPHERE_POINTS) { BlockItem(MBlocks.DEBUG_SPHERE_POINTS, Item.Properties().stacksTo(64)) } @@ -179,7 +154,7 @@ object MItems { val TRITANIUM_ANVIL: List init { - val props = ArrayList<() -> BlockItem>() + val props = ArrayList>() for (i in MBlocks.TRITANIUM_ANVIL.indices) { props.add(registry.register(MNames.TRITANIUM_ANVIL + i) { BlockItem(MBlocks.TRITANIUM_ANVIL[i], DEFAULT_PROPERTIES) }::get) @@ -371,19 +346,7 @@ object MItems { val PLASMA_RIFLE: Item by registry.register(MNames.PLASMA_RIFLE) { PlasmaRifleItem() } - val BLACK_HOLE_SCANNER: Item by registry.register(MNames.BLACK_HOLE_SCANNER) { - object : Item(DEFAULT_PROPERTIES) { - override fun appendHoverText( - p_41421_: ItemStack, - p_41422_: Level?, - p_41423_: MutableList, - p_41424_: TooltipFlag - ) { - p_41423_.add(TranslatableComponent("item.overdrive_that_matters.black_hole_scanner.desc").withStyle(ChatFormatting.GRAY)) - p_41423_.add(TranslatableComponent("item.overdrive_that_matters.black_hole_scanner.desc2").withStyle(ChatFormatting.DARK_GRAY)) - } - } - } + val BLACK_HOLE_SCANNER: Item by registry.register(MNames.BLACK_HOLE_SCANNER) { MatteryItem(DEFAULT_PROPERTIES).addSimpleDescription().addSimpleDescription("2") } val GRAVITATION_FIELD_LIMITER: Item by registry.register(MNames.GRAVITATION_FIELD_LIMITER) { Item(DEFAULT_PROPERTIES) } val GRAVITATION_FIELD_SENSOR: Item by registry.register(MNames.GRAVITATION_FIELD_SENSOR) { Item(DEFAULT_PROPERTIES) } @@ -475,12 +438,8 @@ object MItems { val ENGINE: Item by registry.register(MNames.ENGINE) { BlockItem(MBlocks.ENGINE, DEFAULT_PROPERTIES) } val HOLO_SIGN: Item by registry.register(MNames.HOLO_SIGN) { BlockItem(MBlocks.HOLO_SIGN, DEFAULT_PROPERTIES) } - val TRITANIUM_DOOR = registry.allColored(MNames.TRITANIUM_DOOR) { color, _ -> DoubleHighBlockItem(MBlocks.TRITANIUM_DOOR[color]!!, DEFAULT_PROPERTIES) } - val TRITANIUM_TRAPDOOR = registry.allColored(MNames.TRITANIUM_TRAPDOOR) { color, _ -> BlockItem(MBlocks.TRITANIUM_TRAPDOOR[color]!!, DEFAULT_PROPERTIES) } - - init { - MRegistry.TRITANIUM_PRESSURE_PLATE.registerItems(registry) - } + val TRITANIUM_DOOR = registry.coloredWithBase(MNames.TRITANIUM_DOOR) { color, _ -> DoubleHighBlockItem(MBlocks.TRITANIUM_DOOR[color]!!, DEFAULT_PROPERTIES) } + val TRITANIUM_TRAPDOOR = registry.coloredWithBase(MNames.TRITANIUM_TRAPDOOR) { color, _ -> BlockItem(MBlocks.TRITANIUM_TRAPDOOR[color]!!, DEFAULT_PROPERTIES) } // components val MATTER_IO_PORT: Item by registry.register(MNames.MATTER_IO_PORT) { Item(DEFAULT_PROPERTIES) } @@ -500,33 +459,13 @@ object MItems { val ADVANCED_CONTROL_CIRCUIT: Item by registry.register(MNames.ADVANCED_CONTROL_CIRCUIT) { Item(DEFAULT_PROPERTIES) } val MATTER_CAPACITOR_PARTS: Item by registry.register(MNames.MATTER_CAPACITOR_PARTS) { Item(DEFAULT_PROPERTIES) } val CARBON_MESH: Item by registry.register(MNames.CARBON_MESH) { Item(DEFAULT_PROPERTIES) } - val REINFORCED_TRITANIUM_PLATE: Item by registry.register(MNames.REINFORCED_TRITANIUM_PLATE) { object : Item(DEFAULT_PROPERTIES) { - override fun appendHoverText( - p_41421_: ItemStack, - p_41422_: Level?, - p_41423_: MutableList, - p_41424_: TooltipFlag - ) { - super.appendHoverText(p_41421_, p_41422_, p_41423_, p_41424_) - p_41423_.add(TranslatableComponent("$descriptionId.description").withStyle(ChatFormatting.DARK_GRAY)) - } - } } + val REINFORCED_TRITANIUM_PLATE: Item by registry.register(MNames.REINFORCED_TRITANIUM_PLATE) { MatteryItem(DEFAULT_PROPERTIES).addSimpleDescription() } val QUANTUM_TRANSCEIVER: Item by registry.register(MNames.QUANTUM_TRANSCEIVER) { Item(DEFAULT_PROPERTIES) } val ELECTROMAGNET: Item by registry.register(MNames.ELECTROMAGNET) { Item(DEFAULT_PROPERTIES) } val ELECTROMOTOR: Item by registry.register(MNames.ELECTROMOTOR) { Item(DEFAULT_PROPERTIES) } val MIRROR_COMPOUND: Item by registry.register(MNames.MIRROR_COMPOUND) { Item(DEFAULT_PROPERTIES) } - val MIRROR: Item by registry.register(MNames.MIRROR) { object : Item(DEFAULT_PROPERTIES) { - override fun appendHoverText( - p_41421_: ItemStack, - p_41422_: Level?, - p_41423_: MutableList, - p_41424_: TooltipFlag - ) { - super.appendHoverText(p_41421_, p_41422_, p_41423_, p_41424_) - p_41423_.add(TranslatableComponent("$descriptionId.description").withStyle(ChatFormatting.DARK_GRAY)) - } - } } + val MIRROR: Item by registry.register(MNames.MIRROR) { MatteryItem(DEFAULT_PROPERTIES).addSimpleDescription() } /** * List of components for everything else @@ -590,7 +529,7 @@ object MItems { ::REINFORCED_TRITANIUM_PLATE, ) - val CARGO_CRATE_MINECARTS = registry.allColored(MNames.MINECART_CARGO_CRATE) { color, _ -> MinecartCargoCrateItem(color) } + val CARGO_CRATE_MINECARTS = registry.coloredWithBase(MNames.MINECART_CARGO_CRATE) { color, _ -> MinecartCargoCrateItem(color) } val EXOPACK_PROBE: Item by registry.register(MNames.EXOPACK_PROBE, ::ExopackProbeItem) @@ -601,7 +540,7 @@ object MItems { val ENDER_UPGRADE: ExopackUpgradeItem by registry.register("exopack_ender_upgrade") { ExopackUpgradeItem(MatteryPlayerCapability.UpgradeType.ENDER_ACCESS, "ender_access_upgrade", "ender_access_installed") } val INVENTORY_UPGRADES = SupplierList(8) { - registry.register("exosuit_inventory_upgrade_$it") { ExopackSlotUpgradeItem(18, Rarity.COMMON) }::get + registry.register("exosuit_inventory_upgrade_$it") { ExopackSlotUpgradeItem(18, Rarity.COMMON) } } val INVENTORY_UPGRADE_PROCEDURAL: ProceduralExopackSlotUpgradeItem by registry.register("exosuit_inventory_upgrade_procedural") { ProceduralExopackSlotUpgradeItem() } @@ -616,12 +555,6 @@ object MItems { init { // call static initializer ExopackUpgrades - - MRegistry.CARGO_CRATES.registerItems(registry) - MRegistry.TRITANIUM_BLOCK.registerItems(registry) - MRegistry.TRITANIUM_STAIRS.registerItems(registry) - MRegistry.TRITANIUM_SLAB.registerItems(registry) - MRegistry.TRITANIUM_WALL.registerItems(registry) } val TRITANIUM_STRIPED_BLOCK: Item by registry.register(MNames.TRITANIUM_STRIPED_BLOCK) { BlockItem(MBlocks.TRITANIUM_STRIPED_BLOCK, DEFAULT_PROPERTIES) } @@ -635,18 +568,6 @@ object MItems { val CHEST_UPGRADER: Item by registry.register(MNames.CHEST_UPGRADER) { ChestUpgraderItem() } init { - MRegistry.INDUSTRIAL_GLASS.registerItems(registry) - MRegistry.INDUSTRIAL_GLASS_PANE.registerItems(registry) - MRegistry.UNREFINED_FLOOR_TILES.registerItems(registry) - MRegistry.FLOOR_TILES.registerItems(registry) - MRegistry.FLOOR_TILES_STAIRS.registerItems(registry) - MRegistry.FLOOR_TILES_SLAB.registerItems(registry) - MRegistry.VENT.registerItems(registry) - MRegistry.VENT_ALTERNATIVE.registerItems(registry) - MRegistry.DECORATIVE_CRATE.registerItems(registry) - MRegistry.TRITANIUM_STRIPED_BLOCK.registerItems(registry) - MRegistry.TRITANIUM_STRIPED_STAIRS.registerItems(registry) - MRegistry.TRITANIUM_STRIPED_SLAB.registerItems(registry) - MRegistry.TRITANIUM_STRIPED_WALL.registerItems(registry) + MRegistry.registerItems(registry) } } 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 d164e3bd2..31bf0cea3 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt @@ -1,5 +1,6 @@ package ru.dbotthepony.mc.otm.registry +import com.google.common.collect.ImmutableList import com.google.common.collect.ImmutableSet import com.google.common.collect.Streams import com.mojang.blaze3d.vertex.PoseStack @@ -16,6 +17,7 @@ import net.minecraft.world.entity.ai.village.poi.PoiTypes import net.minecraft.world.item.DyeColor import net.minecraft.world.item.DyeableArmorItem import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.Item import net.minecraft.world.item.Items import net.minecraft.world.level.BlockGetter import net.minecraft.world.level.block.* @@ -33,6 +35,7 @@ import net.minecraftforge.eventbus.api.IEventBus import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent import net.minecraftforge.fml.loading.FMLEnvironment +import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.NewRegistryEvent import net.minecraftforge.registries.RegisterEvent import ru.dbotthepony.mc.otm.OverdriveThatMatters @@ -48,15 +51,19 @@ import ru.dbotthepony.mc.otm.block.decorative.TritaniumPressurePlate import ru.dbotthepony.mc.otm.capability.matteryEnergy import ru.dbotthepony.mc.otm.client.MatteryGUI import ru.dbotthepony.mc.otm.compat.vanilla.MatteryChestMenu +import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom import ru.dbotthepony.mc.otm.core.math.Decimal import ru.dbotthepony.mc.otm.core.math.RGBAColor import ru.dbotthepony.mc.otm.data.DecimalProvider +import ru.dbotthepony.mc.otm.isClient import ru.dbotthepony.mc.otm.item.weapon.EnergySwordItem import ru.dbotthepony.mc.otm.matter.AbstractRegistryAction import ru.dbotthepony.mc.otm.matter.IMatterFunction import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock +import ru.dbotthepony.mc.otm.registry.objects.IBlockItemRegistryAcceptor import ru.dbotthepony.mc.otm.registry.objects.StripedColoredDecorativeBlock +import ru.dbotthepony.mc.otm.shapes.BlockShapes import ru.dbotthepony.mc.otm.storage.StorageStack import ru.dbotthepony.mc.otm.triggers.AndroidBatteryTrigger import ru.dbotthepony.mc.otm.triggers.KillAsAndroidTrigger @@ -81,17 +88,46 @@ import ru.dbotthepony.mc.otm.triggers.ShockwaveDamageMobTrigger import ru.dbotthepony.mc.otm.triggers.ShockwaveTrigger import ru.dbotthepony.mc.otm.triggers.TakeItemOutOfReplicatorTrigger -object MRegistry { +object MRegistry : IBlockItemRegistryAcceptor { private val features = RegistryDelegate>("android_features") val ANDROID_FEATURES by features val ANDROID_FEATURES_LOCATION get() = features.location val ANDROID_FEATURES_KEY get() = features.key + val DYE_ORDER: ImmutableList = ImmutableList.of( + DyeColor.BLACK, + DyeColor.BLUE, + DyeColor.BROWN, + DyeColor.CYAN, + DyeColor.GRAY, + DyeColor.GREEN, + DyeColor.LIGHT_BLUE, + DyeColor.LIGHT_GRAY, + DyeColor.LIME, + DyeColor.MAGENTA, + DyeColor.ORANGE, + DyeColor.PINK, + DyeColor.PURPLE, + DyeColor.RED, + DyeColor.WHITE, + DyeColor.YELLOW, + ) + private fun register(event: NewRegistryEvent) { features.build(event) } - val CARGO_CRATES = DecorativeBlock(MNames.CARGO_CRATE, ::CargoCrateBlock) + private val decorativeBlocks = ArrayList() + + override fun registerItems(registry: DeferredRegister) { + decorativeBlocks.forEach { it.registerItems(registry) } + } + + override fun registerBlocks(registry: DeferredRegister) { + decorativeBlocks.forEach { it.registerBlocks(registry) } + } + + val CARGO_CRATES = DecorativeBlock(MNames.CARGO_CRATE, ::CargoCrateBlock).also { decorativeBlocks.add(it) } val DECORATIVE_CRATE = DecorativeBlock.simple(MNames.DECORATIVE_CRATE) { BlockBehaviour.Properties.of(Material.METAL, MaterialColor.SNOW) @@ -99,7 +135,7 @@ object MRegistry { .requiresCorrectToolForDrops() .explosionResistance(10f) .destroyTime(1f) - } + }.also { decorativeBlocks.add(it) } val TRITANIUM_BLOCK = DecorativeBlock.simple(MNames.TRITANIUM_BLOCK) { BlockBehaviour.Properties.of(Material.METAL, DyeColor.LIGHT_BLUE) @@ -107,24 +143,32 @@ object MRegistry { .requiresCorrectToolForDrops() .explosionResistance(80f) .destroyTime(2.5f) - } + }.also { decorativeBlocks.add(it) } + + val COMPUTER_TERMINAL = DecorativeBlock.rotatable("computer_terminal", BlockShapes.COMPUTER_TERMINAL, BlockRotationFreedom.HORIZONTAL) { + BlockBehaviour.Properties.of() + .mapColor(it?.mapColor ?: MapColor.COLOR_LIGHT_BLUE) + .sound(SoundType.METAL) + .explosionResistance(15f) + .destroyTime(1.5f) + }.also { decorativeBlocks.add(it) } val TRITANIUM_STAIRS = DecorativeBlock(MNames.TRITANIUM_STAIRS) { StairBlock( { TRITANIUM_BLOCK.allBlocks[it]!!.defaultBlockState() }, BlockBehaviour.Properties.copy(TRITANIUM_BLOCK.allBlocks[it]!!) ) - } + }.also { decorativeBlocks.add(it) } val TRITANIUM_SLAB = DecorativeBlock(MNames.TRITANIUM_SLAB) { SlabBlock(BlockBehaviour.Properties.copy(TRITANIUM_BLOCK.allBlocks[it]!!)) - } + }.also { decorativeBlocks.add(it) } val TRITANIUM_WALL = DecorativeBlock(MNames.TRITANIUM_WALL) { WallBlock(BlockBehaviour.Properties.copy(TRITANIUM_BLOCK.allBlocks[it]!!)) - } + }.also { decorativeBlocks.add(it) } - val TRITANIUM_PRESSURE_PLATE = DecorativeBlock(MNames.TRITANIUM_PRESSURE_PLATE, ::TritaniumPressurePlate) + val TRITANIUM_PRESSURE_PLATE = DecorativeBlock(MNames.TRITANIUM_PRESSURE_PLATE, ::TritaniumPressurePlate).also { decorativeBlocks.add(it) } val VENT = DecorativeBlock.simple(MNames.VENT) { BlockBehaviour.Properties.of(Material.METAL, DyeColor.LIGHT_BLUE) @@ -132,7 +176,7 @@ object MRegistry { .requiresCorrectToolForDrops() .explosionResistance(20f) .destroyTime(1.5f) - } + }.also { decorativeBlocks.add(it) } val VENT_ALTERNATIVE = DecorativeBlock.simple(MNames.VENT_ALTERNATIVE) { BlockBehaviour.Properties.of(Material.METAL, DyeColor.LIGHT_BLUE) @@ -140,31 +184,31 @@ object MRegistry { .requiresCorrectToolForDrops() .explosionResistance(20f) .destroyTime(1.5f) - } + }.also { decorativeBlocks.add(it) } val FLOOR_TILES = ColoredDecorativeBlock.simple(MNames.FLOOR_TILES) { BlockBehaviour.Properties.of(Material.STONE, it) .sound(SoundType.STONE) .requiresCorrectToolForDrops() .strength(1.5f, 6f) - } + }.also { decorativeBlocks.add(it) } val FLOOR_TILES_STAIRS = ColoredDecorativeBlock(MNames.FLOOR_TILES_STAIRS) { StairBlock( { FLOOR_TILES.blocks[it]!!.defaultBlockState() }, BlockBehaviour.Properties.copy(FLOOR_TILES.blocks[it]!!) ) - } + }.also { decorativeBlocks.add(it) } val FLOOR_TILES_SLAB = ColoredDecorativeBlock(MNames.FLOOR_TILES_SLAB) { SlabBlock(BlockBehaviour.Properties.copy(FLOOR_TILES.blocks[it]!!)) - } + }.also { decorativeBlocks.add(it) } val UNREFINED_FLOOR_TILES = ColoredDecorativeBlock.simple(MNames.UNREFINED_FLOOR_TILES) { BlockBehaviour.Properties.of(Material.CLAY, it) .sound(SoundType.GRAVEL) .strength(1f, 2f) - } + }.also { decorativeBlocks.add(it) } val INDUSTRIAL_GLASS = DecorativeBlock(MNames.INDUSTRIAL_GLASS) { color -> val properties = @@ -184,7 +228,7 @@ object MRegistry { } return@DecorativeBlock GlassBlock(properties) - } + }.also { decorativeBlocks.add(it) } val INDUSTRIAL_GLASS_PANE = DecorativeBlock(MNames.INDUSTRIAL_GLASS_PANE) { color -> val properties = @@ -199,7 +243,7 @@ object MRegistry { } return@DecorativeBlock IronBarsBlock(properties) - } + }.also { decorativeBlocks.add(it) } val TRITANIUM_STRIPED_BLOCK = StripedColoredDecorativeBlock(MNames.TRITANIUM_STRIPED_BLOCK, { colorA, _ -> Block(BlockBehaviour.Properties.of(Material.METAL, colorA) @@ -207,19 +251,19 @@ object MRegistry { .requiresCorrectToolForDrops() .explosionResistance(80f) .strength(4f)) - }) + }).also { decorativeBlocks.add(it) } val TRITANIUM_STRIPED_STAIRS = StripedColoredDecorativeBlock(MNames.TRITANIUM_STRIPED_STAIRS, { colorA, colorB -> StairBlock({ TRITANIUM_STRIPED_BLOCK.getBlock(colorA, colorB).defaultBlockState() }, BlockBehaviour.Properties.copy(TRITANIUM_STRIPED_BLOCK.getBlock(colorA, colorB))) - }) + }).also { decorativeBlocks.add(it) } val TRITANIUM_STRIPED_SLAB = StripedColoredDecorativeBlock(MNames.TRITANIUM_STRIPED_SLAB, { colorA, colorB -> SlabBlock(BlockBehaviour.Properties.copy(TRITANIUM_STRIPED_BLOCK.getBlock(colorA, colorB))) - }) + }).also { decorativeBlocks.add(it) } val TRITANIUM_STRIPED_WALL = StripedColoredDecorativeBlock(MNames.TRITANIUM_STRIPED_WALL, { colorA, colorB -> WallBlock(BlockBehaviour.Properties.copy(TRITANIUM_STRIPED_BLOCK.getBlock(colorA, colorB))) - }) + }).also { decorativeBlocks.add(it) } private fun registerEvent(event: RegisterEvent) { // mojang moment @@ -229,22 +273,12 @@ object MRegistry { event.register(Registries.POINT_OF_INTEREST_TYPE, PoiTypes.BUTCHER.location()) { val old = reg[PoiTypes.BUTCHER] ?: throw IllegalStateException("POI with type ${PoiTypes.ARMORER} does not exist") - - if (old.`is`(MBlocks.POWERED_SMOKER.defaultBlockState())) { - old - } else { - PoiType(Streams.concat(old.matchingStates.stream(), MBlocks.POWERED_SMOKER.stateDefinition.possibleStates.stream()).collect(ImmutableSet.toImmutableSet()), old.maxTickets, old.validRange) - } + PoiType(Streams.concat(old.matchingStates.stream(), MBlocks.POWERED_SMOKER.values.stream().flatMap { it.stateDefinition.possibleStates.stream() }).collect(ImmutableSet.toImmutableSet()), old.maxTickets, old.validRange) } event.register(Registries.POINT_OF_INTEREST_TYPE, PoiTypes.ARMORER.location()) { val old = reg[PoiTypes.ARMORER] ?: throw IllegalStateException("POI with type ${PoiTypes.ARMORER} does not exist") - - if (old.`is`(MBlocks.POWERED_BLAST_FURNACE.defaultBlockState())) { - old - } else { - PoiType(Streams.concat(old.matchingStates.stream(), MBlocks.POWERED_BLAST_FURNACE.stateDefinition.possibleStates.stream()).collect(ImmutableSet.toImmutableSet()), old.maxTickets, old.validRange) - } + PoiType(Streams.concat(old.matchingStates.stream(), MBlocks.POWERED_BLAST_FURNACE.values.stream().flatMap { it.stateDefinition.possibleStates.stream() }).collect(ImmutableSet.toImmutableSet()), old.maxTickets, old.validRange) } } } @@ -255,8 +289,8 @@ object MRegistry { bus.addListener(this::initializeCommon) bus.addListener(MStats::registerVanilla) bus.addListener(this::registerEvent) - bus.addListener(this::registerItemColorHandlers) - bus.addListener(this::registerItemDecorators) + if (isClient) bus.addListener(this::registerItemColorHandlers) + if (isClient) bus.addListener(this::registerItemDecorators) DecimalProvider.register(bus) AndroidResearchDescription.register(bus) 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 7b5e10a4d..a591fb49c 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 @@ -8,16 +8,17 @@ import net.minecraft.world.level.block.state.BlockBehaviour import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.RegistryObject import ru.dbotthepony.mc.otm.core.collect.SupplierMap +import ru.dbotthepony.mc.otm.registry.MRegistry import java.util.EnumMap /** * Colored only */ -@Suppress("PropertyName", "unused") +@Suppress("unused") open class ColoredDecorativeBlock( val baseName: String, private val provider: (DyeColor) -> Block, -) { +) : IBlockItemRegistryAcceptor { var registeredItems = false private set @@ -28,41 +29,15 @@ open class ColoredDecorativeBlock( protected val blockMap = EnumMap>(DyeColor::class.java) fun forEachItem(consumer: (String, DyeColor, Item) -> Unit) { - consumer.invoke("black", DyeColor.BLACK, getItem(DyeColor.BLACK)) - consumer.invoke("blue", DyeColor.BLUE, getItem(DyeColor.BLUE)) - consumer.invoke("brown", DyeColor.BROWN, getItem(DyeColor.BROWN)) - consumer.invoke("cyan", DyeColor.CYAN, getItem(DyeColor.CYAN)) - consumer.invoke("gray", DyeColor.GRAY, getItem(DyeColor.GRAY)) - consumer.invoke("green", DyeColor.GREEN, getItem(DyeColor.GREEN)) - consumer.invoke("light_blue", DyeColor.LIGHT_BLUE, getItem(DyeColor.LIGHT_BLUE)) - consumer.invoke("light_gray", DyeColor.LIGHT_GRAY, getItem(DyeColor.LIGHT_GRAY)) - consumer.invoke("lime", DyeColor.LIME, getItem(DyeColor.LIME)) - consumer.invoke("magenta", DyeColor.MAGENTA, getItem(DyeColor.MAGENTA)) - consumer.invoke("orange", DyeColor.ORANGE, getItem(DyeColor.ORANGE)) - consumer.invoke("pink", DyeColor.PINK, getItem(DyeColor.PINK)) - consumer.invoke("purple", DyeColor.PURPLE, getItem(DyeColor.PURPLE)) - consumer.invoke("red", DyeColor.RED, getItem(DyeColor.RED)) - consumer.invoke("white", DyeColor.WHITE, getItem(DyeColor.WHITE)) - consumer.invoke("yellow", DyeColor.YELLOW, getItem(DyeColor.YELLOW)) + MRegistry.DYE_ORDER.forEach { + consumer.invoke(it.name.lowercase(), it, getItem(it)) + } } fun forEachBlock(consumer: (String, DyeColor, Block) -> Unit) { - consumer.invoke("black", DyeColor.BLACK, getBlock(DyeColor.BLACK)) - consumer.invoke("blue", DyeColor.BLUE, getBlock(DyeColor.BLUE)) - consumer.invoke("brown", DyeColor.BROWN, getBlock(DyeColor.BROWN)) - consumer.invoke("cyan", DyeColor.CYAN, getBlock(DyeColor.CYAN)) - consumer.invoke("gray", DyeColor.GRAY, getBlock(DyeColor.GRAY)) - consumer.invoke("green", DyeColor.GREEN, getBlock(DyeColor.GREEN)) - consumer.invoke("light_blue", DyeColor.LIGHT_BLUE, getBlock(DyeColor.LIGHT_BLUE)) - consumer.invoke("light_gray", DyeColor.LIGHT_GRAY, getBlock(DyeColor.LIGHT_GRAY)) - consumer.invoke("lime", DyeColor.LIME, getBlock(DyeColor.LIME)) - consumer.invoke("magenta", DyeColor.MAGENTA, getBlock(DyeColor.MAGENTA)) - consumer.invoke("orange", DyeColor.ORANGE, getBlock(DyeColor.ORANGE)) - consumer.invoke("pink", DyeColor.PINK, getBlock(DyeColor.PINK)) - consumer.invoke("purple", DyeColor.PURPLE, getBlock(DyeColor.PURPLE)) - consumer.invoke("red", DyeColor.RED, getBlock(DyeColor.RED)) - consumer.invoke("white", DyeColor.WHITE, getBlock(DyeColor.WHITE)) - consumer.invoke("yellow", DyeColor.YELLOW, getBlock(DyeColor.YELLOW)) + MRegistry.DYE_ORDER.forEach { + consumer.invoke(it.name.lowercase(), it, getBlock(it)) + } } fun getItem(dyeColor: DyeColor): Item { @@ -77,59 +52,33 @@ open class ColoredDecorativeBlock( val blocks: Map by lazy { check(registeredBlocks) { "Didn't register blocks yet" } - SupplierMap(blockMap.map { it.key to it.value::get }) + SupplierMap(MRegistry.DYE_ORDER.map { it to blockMap[it]!! }) } val items: Map by lazy { check(registeredItems) { "Didn't register items yet" } - SupplierMap(itemMap.map { it.key to it.value::get }) + SupplierMap(MRegistry.DYE_ORDER.map { it to itemMap[it]!! }) } - open fun registerBlocks(registry: DeferredRegister) { + override fun registerBlocks(registry: DeferredRegister) { check(blockMap.isEmpty()) { "( ͡° ͜ʖ ͡°) No. \\(• ε •)/ ( ͠° ل͜ ͡°) ( ͠° ͟ ͟ʖ ͡°) (ง ͠° ͟ل͜ ͡°)ง ( ͡°︺͡°) ('ω')" } - blockMap[DyeColor.WHITE] = registry.register("${baseName}_white") { provider.invoke(DyeColor.WHITE) } - blockMap[DyeColor.ORANGE] = registry.register("${baseName}_orange") { provider.invoke(DyeColor.ORANGE) } - blockMap[DyeColor.MAGENTA] = registry.register("${baseName}_magenta") { provider.invoke(DyeColor.MAGENTA) } - blockMap[DyeColor.LIGHT_BLUE] = registry.register("${baseName}_light_blue") { provider.invoke(DyeColor.LIGHT_BLUE) } - blockMap[DyeColor.YELLOW] = registry.register("${baseName}_yellow") { provider.invoke(DyeColor.YELLOW) } - blockMap[DyeColor.LIME] = registry.register("${baseName}_lime") { provider.invoke(DyeColor.LIME) } - blockMap[DyeColor.PINK] = registry.register("${baseName}_pink") { provider.invoke(DyeColor.PINK) } - blockMap[DyeColor.GRAY] = registry.register("${baseName}_gray") { provider.invoke(DyeColor.GRAY) } - blockMap[DyeColor.LIGHT_GRAY] = registry.register("${baseName}_light_gray") { provider.invoke(DyeColor.LIGHT_GRAY) } - blockMap[DyeColor.CYAN] = registry.register("${baseName}_cyan") { provider.invoke(DyeColor.CYAN) } - blockMap[DyeColor.PURPLE] = registry.register("${baseName}_purple") { provider.invoke(DyeColor.PURPLE) } - blockMap[DyeColor.BLUE] = registry.register("${baseName}_blue") { provider.invoke(DyeColor.BLUE) } - blockMap[DyeColor.BROWN] = registry.register("${baseName}_brown") { provider.invoke(DyeColor.BROWN) } - blockMap[DyeColor.GREEN] = registry.register("${baseName}_green") { provider.invoke(DyeColor.GREEN) } - blockMap[DyeColor.RED] = registry.register("${baseName}_red") { provider.invoke(DyeColor.RED) } - blockMap[DyeColor.BLACK] = registry.register("${baseName}_black") { provider.invoke(DyeColor.BLACK) } + MRegistry.DYE_ORDER.forEach { + blockMap[it] = registry.register("${baseName}_${it.name.lowercase()}") { provider.invoke(it) } + } registeredBlocks = true } private val properties = Item.Properties().stacksTo(64) - open fun registerItems(registry: DeferredRegister) { + override fun registerItems(registry: DeferredRegister) { check(itemMap.isEmpty()) { "( ͡° ͜ʖ ͡°) No. \\(• ε •)/ ( ͠° ل͜ ͡°) ( ͠° ͟ ͟ʖ ͡°) (ง ͠° ͟ل͜ ͡°)ง ( ͡°︺͡°) ('ω')" } check(registeredBlocks) { "wtffffff???????????" } - itemMap[DyeColor.WHITE] = registry.register("${baseName}_white") { BlockItem(blockMap[DyeColor.WHITE]!!.get(), properties) } - itemMap[DyeColor.ORANGE] = registry.register("${baseName}_orange") { BlockItem(blockMap[DyeColor.ORANGE]!!.get(), properties) } - itemMap[DyeColor.MAGENTA] = registry.register("${baseName}_magenta") { BlockItem(blockMap[DyeColor.MAGENTA]!!.get(), properties) } - itemMap[DyeColor.LIGHT_BLUE] = registry.register("${baseName}_light_blue") { BlockItem(blockMap[DyeColor.LIGHT_BLUE]!!.get(), properties) } - itemMap[DyeColor.YELLOW] = registry.register("${baseName}_yellow") { BlockItem(blockMap[DyeColor.YELLOW]!!.get(), properties) } - itemMap[DyeColor.LIME] = registry.register("${baseName}_lime") { BlockItem(blockMap[DyeColor.LIME]!!.get(), properties) } - itemMap[DyeColor.PINK] = registry.register("${baseName}_pink") { BlockItem(blockMap[DyeColor.PINK]!!.get(), properties) } - itemMap[DyeColor.GRAY] = registry.register("${baseName}_gray") { BlockItem(blockMap[DyeColor.GRAY]!!.get(), properties) } - itemMap[DyeColor.LIGHT_GRAY] = registry.register("${baseName}_light_gray") { BlockItem(blockMap[DyeColor.LIGHT_GRAY]!!.get(), properties) } - itemMap[DyeColor.CYAN] = registry.register("${baseName}_cyan") { BlockItem(blockMap[DyeColor.CYAN]!!.get(), properties) } - itemMap[DyeColor.PURPLE] = registry.register("${baseName}_purple") { BlockItem(blockMap[DyeColor.PURPLE]!!.get(), properties) } - itemMap[DyeColor.BLUE] = registry.register("${baseName}_blue") { BlockItem(blockMap[DyeColor.BLUE]!!.get(), properties) } - itemMap[DyeColor.BROWN] = registry.register("${baseName}_brown") { BlockItem(blockMap[DyeColor.BROWN]!!.get(), properties) } - itemMap[DyeColor.GREEN] = registry.register("${baseName}_green") { BlockItem(blockMap[DyeColor.GREEN]!!.get(), properties) } - itemMap[DyeColor.RED] = registry.register("${baseName}_red") { BlockItem(blockMap[DyeColor.RED]!!.get(), properties) } - itemMap[DyeColor.BLACK] = registry.register("${baseName}_black") { BlockItem(blockMap[DyeColor.BLACK]!!.get(), properties) } + MRegistry.DYE_ORDER.forEach { + itemMap[it] = registry.register("${baseName}_${it.name.lowercase()}") { BlockItem(blockMap[it]!!.get(), properties) } + } registeredItems = true } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/DecorativeBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/DecorativeBlock.kt index d12237294..03a4dae6d 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/DecorativeBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/DecorativeBlock.kt @@ -1,14 +1,28 @@ package ru.dbotthepony.mc.otm.registry.objects +import com.google.common.collect.Streams +import net.minecraft.core.BlockPos 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.Block import net.minecraft.world.level.block.state.BlockBehaviour +import net.minecraft.world.level.block.state.BlockState +import net.minecraft.world.phys.shapes.CollisionContext +import net.minecraft.world.phys.shapes.VoxelShape import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.RegistryObject +import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock +import ru.dbotthepony.mc.otm.block.getShapeForEachState import ru.dbotthepony.mc.otm.core.collect.SupplierMap +import ru.dbotthepony.mc.otm.core.get +import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom import ru.dbotthepony.mc.otm.core.util.WriteOnce +import ru.dbotthepony.mc.otm.registry.MRegistry +import ru.dbotthepony.mc.otm.shapes.BlockShape +import ru.dbotthepony.mc.otm.shapes.BlockShapes +import java.util.stream.Stream /** * Base + Colored @@ -25,12 +39,12 @@ class DecorativeBlock( val allBlocks: Map by lazy { check(registeredBlocks) { "Didn't register items yet" } - SupplierMap(blockMap.map { it.key to it.value::get }.toMutableList().also { it.add(null to _block::get) }) + SupplierMap(Streams.concat(MRegistry.DYE_ORDER.stream().map { it to blockMap[it]!! }, Stream.of(null to _block))) } val allItems: Map by lazy { check(registeredItems) { "Didn't register items yet" } - SupplierMap(itemMap.map { it.key to it.value::get }.toMutableList().also { it.add(null to _item::get) }) + SupplierMap(Streams.concat(MRegistry.DYE_ORDER.stream().map { it to itemMap[it]!! }, Stream.of(null to _item))) } override fun registerBlocks(registry: DeferredRegister) { @@ -49,5 +63,33 @@ class DecorativeBlock( Block(provider.invoke(it)) } } + + fun rotatable(baseName: String, provider: (DyeColor?) -> BlockBehaviour.Properties): DecorativeBlock { + return DecorativeBlock(baseName) { + RotatableMatteryBlock(provider.invoke(it)) + } + } + + fun rotatable(baseName: String, shape: BlockShape, rotationFreedom: BlockRotationFreedom, provider: (DyeColor?) -> BlockBehaviour.Properties): DecorativeBlock { + return DecorativeBlock(baseName) { + object : RotatableMatteryBlock(provider.invoke(it)) { + override fun rotationFreedom(): BlockRotationFreedom { + return rotationFreedom + } + + private val shapes = getShapeForEachState(rotationProperty) { shape.rotateFromNorth(it[rotationProperty]).computeShape() } + + @Suppress("override_deprecation") + override fun getShape( + state: BlockState, + blockGetter: BlockGetter, + pos: BlockPos, + context: CollisionContext + ): VoxelShape { + return shapes[state]!! + } + } + } + } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/IBlockItemRegistryAcceptor.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/IBlockItemRegistryAcceptor.kt new file mode 100644 index 000000000..5104597eb --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/IBlockItemRegistryAcceptor.kt @@ -0,0 +1,10 @@ +package ru.dbotthepony.mc.otm.registry.objects + +import net.minecraft.world.item.Item +import net.minecraft.world.level.block.Block +import net.minecraftforge.registries.DeferredRegister + +interface IBlockItemRegistryAcceptor { + fun registerItems(registry: DeferredRegister) + fun registerBlocks(registry: DeferredRegister) +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/StripedColoredDecorativeBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/StripedColoredDecorativeBlock.kt index 6e357144d..222bd7e31 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/StripedColoredDecorativeBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/StripedColoredDecorativeBlock.kt @@ -11,15 +11,16 @@ import net.minecraftforge.registries.RegistryObject import ru.dbotthepony.mc.otm.core.collect.SupplierList import ru.dbotthepony.mc.otm.core.collect.SupplierMap import java.util.EnumMap +import java.util.function.Supplier -@Suppress("PropertyName", "unused", "ReplaceGetOrSet", "ReplacePutWithAssignment") +@Suppress("unused", "ReplaceGetOrSet", "ReplacePutWithAssignment") class StripedColoredDecorativeBlock( val basename: String, val blockFactory: (colorA: DyeColor, colorB: DyeColor) -> Block, val itemFactory: ((colorA: DyeColor, colorB: DyeColor, block: Block) -> Item) = { _, _, block -> BlockItem(block, Item.Properties().stacksTo(64)) } -) { +) : IBlockItemRegistryAcceptor { private val mapBlocks = EnumMap>>(DyeColor::class.java) private val mapItems = EnumMap>>(DyeColor::class.java) @@ -54,7 +55,7 @@ class StripedColoredDecorativeBlock( val builder = ImmutableMap.Builder>() for ((base, children) in mapItems) { - builder.put(base, SupplierMap(children.map { it.key to it.value::get })) + builder.put(base, SupplierMap(children.map { it.key to it.value })) } builder.build() @@ -65,7 +66,7 @@ class StripedColoredDecorativeBlock( val builder = ImmutableMap.Builder>() for ((base, children) in mapBlocks) { - builder.put(base, SupplierMap(children.map { it.key to it.value::get })) + builder.put(base, SupplierMap(children.map { it.key to it.value })) } builder.build() @@ -73,17 +74,17 @@ class StripedColoredDecorativeBlock( val flatItems: List by lazy { check(registeredItems) { "Didn't register items yet" } - SupplierList(mapItems.flatMap { it.value.values }.map { it::get }) + SupplierList(mapItems.flatMap { it.value.values }) } val flatBlocks: List by lazy { check(registeredBlocks) { "Didn't register items yet" } - SupplierList(mapBlocks.flatMap { it.value.values }.map { it::get }) + SupplierList(mapBlocks.flatMap { it.value.values }) } - fun registerItems(registry: DeferredRegister) { - for (base in DyeColor.values()) { - for (stripe in DyeColor.values()) { + override fun registerItems(registry: DeferredRegister) { + for (base in DyeColor.entries) { + for (stripe in DyeColor.entries) { if (base == stripe) { continue } @@ -96,9 +97,9 @@ class StripedColoredDecorativeBlock( registeredItems = true } - fun registerBlocks(registry: DeferredRegister) { - for (base in DyeColor.values()) { - for (stripe in DyeColor.values()) { + override fun registerBlocks(registry: DeferredRegister) { + for (base in DyeColor.entries) { + for (stripe in DyeColor.entries) { if (base == stripe) { continue } @@ -116,7 +117,7 @@ class StripedColoredDecorativeBlock( throw IllegalStateException("Not yet registered blocks") } - val build = ImmutableList.Builder<() -> Pair>>() + val build = ImmutableList.Builder>>>() for ((base, children) in mapBlocks) { for ((stripe, registryObject) in children) { @@ -132,7 +133,7 @@ class StripedColoredDecorativeBlock( throw IllegalStateException("Not yet registered items") } - val build = ImmutableList.Builder<() -> Pair>>() + val build = ImmutableList.Builder>>>() for ((base, children) in mapItems) { for ((stripe, registryObject) in children) { diff --git a/src/main/resources/assets/overdrive_that_matters/models/block/computer_terminal.json b/src/main/resources/assets/overdrive_that_matters/models/block/computer_terminal.json new file mode 100644 index 000000000..489cfffdb --- /dev/null +++ b/src/main/resources/assets/overdrive_that_matters/models/block/computer_terminal.json @@ -0,0 +1,88 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "overdrive_that_matters:block/decorative/computer_base", + "1": "overdrive_that_matters:block/decorative/computer_screen", + "particle": "overdrive_that_matters:block/decorative/computer_base" + }, + "elements": [ + { + "from": [1, 0, 1], + "to": [15, 2, 15], + "faces": { + "north": {"uv": [0, 7, 7, 8], "texture": "#0"}, + "east": {"uv": [0, 7, 7, 8], "texture": "#0"}, + "south": {"uv": [0, 7, 7, 8], "texture": "#0"}, + "west": {"uv": [0, 7, 7, 8], "texture": "#0"}, + "up": {"uv": [0, 8, 7, 15], "texture": "#0"}, + "down": {"uv": [0, 0, 7, 7], "texture": "#0"} + } + }, + { + "from": [1, 2, 5], + "to": [15, 5, 15], + "faces": { + "north": {"uv": [7, 5, 14, 6.5], "texture": "#0"}, + "east": {"uv": [8.5, 6.5, 13.5, 8], "texture": "#0"}, + "south": {"uv": [7, 8, 14, 9.5], "texture": "#0"}, + "west": {"uv": [7.5, 6.5, 12.5, 8], "texture": "#0"}, + "up": {"uv": [7, 0, 14, 5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [2, 5, 4], + "to": [14, 15, 14], + "faces": { + "north": {"uv": [0, 5, 6, 10], "texture": "#1"}, + "east": {"uv": [6, 5, 11, 10], "texture": "#1"}, + "south": {"uv": [6, 0, 12, 5], "texture": "#1"}, + "west": {"uv": [6, 5, 11, 10], "texture": "#1"}, + "up": {"uv": [0, 0, 6, 5], "rotation": 180, "texture": "#1"}, + "down": {"uv": [0, 10, 6, 15], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [3, 8, 14], + "to": [13, 14, 15], + "faces": { + "east": {"uv": [10.5, 10, 11, 13], "texture": "#1"}, + "south": {"uv": [6, 10, 11, 13], "texture": "#1"}, + "west": {"uv": [6, 10, 6.5, 13], "texture": "#1"}, + "up": {"uv": [6, 10, 11, 10.5], "texture": "#1"}, + "down": {"uv": [6, 12.5, 11, 13], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator.json b/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator.json index 0ead5fb39..db7a07bee 100644 --- a/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator.json +++ b/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator.json @@ -1,10 +1,12 @@ { "credit": "Made with Blockbench", - "ambientocclusion": false, - "texture_size": [32, 64], + "parent": "block/block", + "render_type": "translucent", + "texture_size": [32, 32], "textures": { - "particle": "matter_replicator", - "texture": "matter_replicator" + "1": "overdrive_that_matters:block/matter_replicator_base", + "particle": "overdrive_that_matters:block/matter_replicator_base", + "texture": "overdrive_that_matters:block/matter_replicator" }, "elements": [ { @@ -12,12 +14,12 @@ "from": [15, 0, 0], "to": [16, 11, 16], "faces": { - "north": {"uv": [0, 1.25, 0.5, 4], "texture": "#texture"}, - "east": {"uv": [0, 5.25, 8, 8], "texture": "#texture"}, - "south": {"uv": [15.5, 1.25, 16, 4], "texture": "#texture"}, - "west": {"uv": [8, 9, 16, 11.75], "texture": "#texture"}, - "up": {"uv": [0, 8, 0.5, 12], "rotation": 180, "texture": "#texture"}, - "down": {"uv": [8, 8, 8.5, 12], "texture": "#texture"} + "north": {"uv": [0, 2.5, 0.5, 8], "texture": "#texture"}, + "east": {"uv": [0, 2.5, 8, 8], "texture": "#1"}, + "south": {"uv": [15.5, 2.5, 16, 8], "texture": "#texture"}, + "west": {"uv": [8, 9.5, 16, 15], "texture": "#1"}, + "up": {"uv": [0, 8, 0.5, 16], "rotation": 180, "texture": "#1"}, + "down": {"uv": [8, 8, 8.5, 16], "texture": "#1"} } }, { @@ -25,12 +27,12 @@ "from": [0, 0, 0], "to": [1, 11, 16], "faces": { - "north": {"uv": [7.5, 1.25, 8, 4], "texture": "#texture"}, - "east": {"uv": [8, 9, 16, 11.75], "texture": "#texture"}, - "south": {"uv": [8, 1.25, 8.5, 4], "texture": "#texture"}, - "west": {"uv": [8, 5.25, 16, 8], "texture": "#texture"}, - "up": {"uv": [7.5, 8, 8, 12], "rotation": 180, "texture": "#texture"}, - "down": {"uv": [15.5, 8, 16, 12], "texture": "#texture"} + "north": {"uv": [7.5, 2.5, 8, 8], "texture": "#texture"}, + "east": {"uv": [8, 9.5, 16, 15], "texture": "#1"}, + "south": {"uv": [8, 2.5, 8.5, 8], "texture": "#1"}, + "west": {"uv": [8, 2.5, 16, 8], "texture": "#1"}, + "up": {"uv": [7.5, 8, 8, 16], "rotation": 180, "texture": "#1"}, + "down": {"uv": [15.5, 8, 16, 16], "texture": "#1"} } }, { @@ -38,12 +40,10 @@ "from": [0, 11, 1], "to": [8, 16, 6], "faces": { - "north": {"uv": [4, 13.25, 8, 14.5], "texture": "#texture"}, - "east": {"uv": [0, 0, 5, 5], "texture": "#missing"}, - "south": {"uv": [4, 12, 8, 13.25], "texture": "#texture"}, - "west": {"uv": [8.5, 4, 11, 5.25], "texture": "#texture"}, - "up": {"uv": [4, 12, 8, 13.25], "texture": "#texture"}, - "down": {"uv": [0, 0, 8, 5], "texture": "#missing"} + "north": {"uv": [4, 10.5, 8, 13], "texture": "#texture"}, + "south": {"uv": [4, 13, 8, 15.5], "texture": "#texture"}, + "west": {"uv": [8.5, 0, 11, 2.5], "texture": "#1"}, + "up": {"uv": [4, 8, 8, 10.5], "texture": "#texture"} } }, { @@ -51,77 +51,99 @@ "from": [8, 11, 0], "to": [16, 16, 6], "faces": { - "north": {"uv": [0, 0, 4, 1.25], "texture": "#texture"}, - "east": {"uv": [5, 4, 8, 5.25], "texture": "#texture"}, - "south": {"uv": [0, 12.25, 4, 13.5], "texture": "#texture"}, - "west": {"uv": [0, 12, 4, 13.5], "texture": "#texture"}, - "up": {"uv": [0, 12, 4, 13.5], "texture": "#texture"}, - "down": {"uv": [0, 0, 8, 6], "texture": "#missing"} + "north": {"uv": [0, 0, 4, 2.5], "texture": "#texture"}, + "east": {"uv": [5, 0, 8, 2.5], "texture": "#1"}, + "south": {"uv": [0, 8.5, 4, 11], "rotation": 180, "texture": "#texture"}, + "west": {"uv": [5, 0, 8, 2.5], "texture": "#1"}, + "up": {"uv": [0, 8, 4, 11], "texture": "#texture"} + } + }, + { + "name": "canisterlight", + "from": [5, 11, 11], + "to": [14, 15, 15], + "faces": { + "north": {"uv": [11, 0, 15.5, 2], "rotation": 180, "texture": "#texture"}, + "south": {"uv": [11, 0, 15.5, 2], "texture": "#texture"}, + "up": {"uv": [11, 0, 15.5, 2], "texture": "#texture"} + }, + "forge_data": { "block_light": 15, "sky_light": 15 } + }, + { + "name": "canister", + "from": [14, 11, 11], + "to": [15, 15, 15], + "faces": { + "north": {"uv": [15.5, 0, 16, 2], "rotation": 180, "texture": "#texture"}, + "east": {"uv": [8, 0, 10, 2], "texture": "#texture"}, + "south": {"uv": [15.5, 0, 16, 2], "texture": "#texture"}, + "up": {"uv": [15.5, 0, 16, 2], "texture": "#texture"} } }, { "name": "canister", "from": [3, 11, 11], - "to": [15, 15, 15], + "to": [5, 15, 15], "faces": { - "north": {"uv": [10, 12, 16, 13], "rotation": 180, "texture": "#texture"}, - "east": {"uv": [8, 12, 10, 13], "texture": "#texture"}, - "south": {"uv": [10, 12, 16, 13], "texture": "#texture"}, - "west": {"uv": [8, 12, 10, 13], "texture": "#texture"}, - "up": {"uv": [10, 12, 16, 13], "texture": "#texture"}, - "down": {"uv": [0, 0, 6, 1], "texture": "#missing"} + "north": {"uv": [10, 0, 11, 2], "rotation": 180, "texture": "#texture"}, + "south": {"uv": [10, 0, 11, 2], "texture": "#texture"}, + "west": {"uv": [8, 0, 10, 2], "texture": "#texture"}, + "up": {"uv": [10, 0, 11, 2], "texture": "#texture"} } }, { "name": "canister", "from": [3, 11, 6], + "to": [5, 15, 10], + "faces": { + "south": {"uv": [10, 0, 11, 2], "texture": "#texture"}, + "west": {"uv": [8, 0, 10, 2], "texture": "#texture"}, + "up": {"uv": [10, 0, 11, 2], "texture": "#texture"}, + "down": {"uv": [0, 0, 6, 1], "texture": "#missing"} + } + }, + { + "name": "canisterlight", + "from": [5, 11, 6], + "to": [14, 15, 10], + "faces": { + "south": {"uv": [11, 0, 15.5, 2], "texture": "#texture"}, + "up": {"uv": [11, 0, 15.5, 2], "texture": "#texture"}, + "down": {"uv": [0, 0, 6, 1], "texture": "#missing"} + }, + "forge_data": { "block_light": 15, "sky_light": 15 } + }, + { + "name": "canister", + "from": [14, 11, 6], "to": [15, 15, 10], "faces": { - "north": {"uv": [0, 0, 6, 1], "texture": "#missing"}, - "east": {"uv": [8, 12, 10, 13], "texture": "#texture"}, - "south": {"uv": [10, 12, 16, 13], "texture": "#texture"}, - "west": {"uv": [8, 12, 10, 13], "texture": "#texture"}, - "up": {"uv": [10, 12, 16, 13], "texture": "#texture"}, + "east": {"uv": [8, 0, 10, 2], "texture": "#texture"}, + "south": {"uv": [15.5, 0, 16, 2], "texture": "#texture"}, + "up": {"uv": [15.5, 0, 16, 2], "texture": "#texture"}, "down": {"uv": [0, 0, 6, 1], "texture": "#missing"} } }, { "name": "pipe", - "from": [1, 11, 7], + "from": [0, 11, 7], "to": [3, 14, 9], "faces": { - "north": {"uv": [0, 14, 1, 14.75], "texture": "#texture"}, - "east": {"uv": [0, 0, 1, 0.75], "texture": "#missing"}, - "south": {"uv": [0, 14, 1, 14.75], "texture": "#texture"}, - "west": {"uv": [0, 14, 1, 14.75], "texture": "#texture"}, - "up": {"uv": [0, 13.5, 1, 14], "texture": "#texture"}, - "down": {"uv": [0, 0, 1, 0.5], "texture": "#missing"} + "north": {"uv": [1, 12, 0, 13.5], "texture": "#texture"}, + "south": {"uv": [0, 12, 1, 13.5], "texture": "#texture"}, + "west": {"uv": [0, 12, 1, 13.5], "texture": "#texture"}, + "up": {"uv": [0, 11, 1, 12], "texture": "#texture"} } }, { "name": "pipe", - "from": [1, 11, 12], + "from": [0, 11, 12], "to": [3, 14, 14], "faces": { - "north": {"uv": [0, 14, 1, 14.75], "texture": "#texture"}, - "east": {"uv": [0, 0, 1, 0.75], "texture": "#missing"}, - "south": {"uv": [0, 14, 1, 14.75], "texture": "#texture"}, - "west": {"uv": [0, 14, 1, 14.75], "texture": "#texture"}, - "up": {"uv": [0, 13.5, 1, 14], "texture": "#texture"}, - "down": {"uv": [0, 0, 1, 0.5], "texture": "#missing"} - } - }, - { - "name": "frame", - "from": [0, 11, 15], - "to": [0.5, 16, 16], - "faces": { - "north": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "east": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "south": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "west": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "up": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "down": {"uv": [0, 0, 0, 1], "texture": "#missing"} + "north": {"uv": [1, 12, 0, 13.5], "texture": "#texture"}, + "south": {"uv": [0, 12, 1, 13.5], "texture": "#texture"}, + "west": {"uv": [0, 12, 1, 13.5], "texture": "#texture"}, + "up": {"uv": [0, 11, 1, 12], "texture": "#texture"} } }, { @@ -129,12 +151,11 @@ "from": [15.5, 11, 15], "to": [16, 16, 16], "faces": { - "north": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "east": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "south": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "west": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "up": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "down": {"uv": [0, 0, 0, 1], "texture": "#missing"} + "north": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, + "east": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, + "south": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, + "west": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, + "up": {"uv": [2, 15, 2.5, 15.5], "texture": "#texture"} } }, { @@ -142,12 +163,22 @@ "from": [15.5, 15, 6], "to": [16, 16, 15], "faces": { - "north": {"uv": [0, 0, 0, 1], "texture": "#missing"}, - "east": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "south": {"uv": [0, 0, 0, 1], "texture": "#missing"}, - "west": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "up": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "down": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"} + "east": {"uv": [0, 15.5, 4.5, 16], "texture": "#texture"}, + "west": {"uv": [0, 15.5, 4.5, 16], "texture": "#texture"}, + "up": {"uv": [0, 15.5, 4.5, 16], "rotation": 90, "texture": "#texture"}, + "down": {"uv": [0, 15.5, 4.5, 16], "rotation": 90, "texture": "#texture"} + } + }, + { + "name": "frame", + "from": [0, 11, 15], + "to": [0.5, 16, 16], + "faces": { + "north": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, + "east": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, + "south": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, + "west": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, + "up": {"uv": [2, 15, 2.5, 15.5], "texture": "#texture"} } }, { @@ -155,120 +186,143 @@ "from": [0, 15, 6], "to": [0.5, 16, 15], "faces": { - "north": {"uv": [0, 0, 0, 1], "texture": "#missing"}, - "east": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "south": {"uv": [0, 0, 0, 1], "texture": "#missing"}, - "west": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "up": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"}, - "down": {"uv": [14.5, 0, 16, 0.75], "texture": "#texture"} + "east": {"uv": [0, 15.5, 4.5, 16], "texture": "#texture"}, + "west": {"uv": [0, 15.5, 4.5, 16], "texture": "#texture"}, + "up": {"uv": [0, 15.5, 4.5, 16], "rotation": 90, "texture": "#texture"}, + "down": {"uv": [0, 15.5, 4.5, 16], "rotation": 90, "texture": "#texture"} } }, { + "name": "body", "from": [1, 0, 0], "to": [15, 1, 16], "faces": { - "north": {"uv": [0.5, 3.75, 7.5, 4], "texture": "#texture"}, - "east": {"uv": [0, 0, 8, 0.25], "texture": "#missing"}, - "south": {"uv": [8.5, 3.75, 15.5, 4], "texture": "#texture"}, - "west": {"uv": [0, 0, 8, 0.25], "texture": "#missing"}, - "up": {"uv": [0.5, 8, 7.5, 12], "rotation": 180, "texture": "#texture"}, - "down": {"uv": [8.5, 8, 15.5, 12], "texture": "#texture"} + "north": {"uv": [0.5, 7.5, 7.5, 8], "texture": "#texture"}, + "south": {"uv": [8.5, 7.5, 15.5, 8], "texture": "#texture"}, + "up": {"uv": [0.5, 8.5, 7.5, 15.5], "rotation": 180, "texture": "#1"}, + "down": {"uv": [8.5, 8, 15.5, 16], "texture": "#1"} } }, { + "name": "body", "from": [8, 7, 0], "to": [15, 11, 1], "faces": { - "north": {"uv": [0.5, 1.25, 4, 2.25], "texture": "#texture"}, - "east": {"uv": [0, 0, 0.5, 0.75], "texture": "#missing"}, - "south": {"uv": [0, 0, 3.5, 1], "texture": "#texture"}, - "west": {"uv": [3.5, 1.25, 4, 2], "texture": "#texture"}, - "up": {"uv": [0, 0, 3.5, 0.25], "texture": "#missing"}, - "down": {"uv": [0.5, 2, 4, 2.25], "texture": "#texture"} + "north": {"uv": [0.5, 2.5, 4, 4.5], "texture": "#texture"}, + "south": {"uv": [4, 2.5, 0.5, 4.5], "texture": "#texture"}, + "west": {"uv": [3.5, 2.5, 4, 4.5], "texture": "#texture"}, + "down": {"uv": [0.5, 4, 4, 4.5], "texture": "#texture"} } }, { + "name": "body", "from": [1, 9, 0], "to": [8, 11, 1], "faces": { - "north": {"uv": [4, 1.25, 7.5, 1.75], "texture": "#texture"}, + "north": {"uv": [4, 2.5, 7, 3.5], "texture": "#texture"}, "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#missing"}, - "south": {"uv": [4, 1.25, 7, 1.75], "texture": "#texture"}, - "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#missing"}, - "up": {"uv": [4, 11.75, 7.5, 12], "texture": "#texture"}, - "down": {"uv": [1.5, 3.5, 5, 3.75], "texture": "#texture"} + "south": {"uv": [4, 3, 7, 3.5], "rotation": 180, "texture": "#texture"}, + "up": {"uv": [4, 15.5, 7.5, 16], "texture": "#1"}, + "down": {"uv": [4, 3, 7, 3.5], "rotation": 180, "texture": "#texture"} } }, { + "name": "body", "from": [1, 1, 0], "to": [2, 9, 1], "faces": { - "north": {"uv": [7, 1.75, 7.5, 3.75], "texture": "#texture"}, - "east": {"uv": [7, 1.75, 7.5, 3.75], "texture": "#texture"}, - "south": {"uv": [7, 1.75, 7.5, 3.75], "texture": "#texture"}, - "west": {"uv": [0, 0, 0.5, 2], "texture": "#missing"}, - "up": {"uv": [0, 0, 0.5, 0.25], "texture": "#missing"}, - "down": {"uv": [0, 0, 0.5, 0.25], "texture": "#missing"} + "north": {"uv": [7, 3.5, 7.5, 7], "texture": "#texture"}, + "east": {"uv": [7, 3.5, 7.5, 7], "texture": "#texture"}, + "south": {"uv": [7, 3.5, 7.5, 7], "texture": "#texture"} } }, { + "name": "body", "from": [14, 1, 0], "to": [15, 7, 1], "faces": { - "north": {"uv": [0.5, 2.25, 1, 3.75], "texture": "#texture"}, - "east": {"uv": [0, 0, 0.5, 1.75], "texture": "#missing"}, - "south": {"uv": [0.5, 2.25, 1, 3.75], "texture": "#texture"}, - "west": {"uv": [0.5, 2.25, 1, 3.75], "texture": "#texture"}, - "up": {"uv": [0.5, 3.25, 1, 3.5], "texture": "#texture"}, - "down": {"uv": [0, 0, 0.5, 0.25], "texture": "#missing"} + "north": {"uv": [0.5, 4.5, 1, 7], "texture": "#texture"}, + "south": {"uv": [0.5, 4.5, 1, 7], "texture": "#texture"}, + "west": {"uv": [0.5, 4.5, 1, 7], "texture": "#texture"} } }, { + "name": "body", "from": [2, 1, 0], "to": [14, 2, 1], "faces": { - "north": {"uv": [1, 3.5, 7, 3.75], "texture": "#texture"}, - "east": {"uv": [0, 0, 0.5, 0.25], "texture": "#missing"}, - "south": {"uv": [1, 3.5, 7, 3.75], "texture": "#texture"}, - "west": {"uv": [0, 0, 0.5, 0.25], "texture": "#missing"}, - "up": {"uv": [1, 3.5, 7, 3.75], "texture": "#texture"}, - "down": {"uv": [0, 0, 6, 0.25], "texture": "#missing"} + "north": {"uv": [1, 7, 7, 7.5], "texture": "#texture"}, + "south": {"uv": [1, 7, 7, 7.5], "texture": "#texture"}, + "up": {"uv": [1, 7, 7, 7.5], "texture": "#texture"} } }, { + "name": "body", "from": [1, 10, 1], "to": [15, 11, 15], "faces": { - "north": {"uv": [0, 0, 7, 0.25], "texture": "#missing"}, - "east": {"uv": [0, 0, 7, 0.25], "texture": "#missing"}, - "south": {"uv": [0, 0, 7, 0.25], "texture": "#missing"}, - "west": {"uv": [0, 0, 7, 0.25], "texture": "#missing"}, - "up": {"uv": [0.5, 8.25, 7.5, 11.75], "rotation": 180, "texture": "#texture"}, - "down": {"uv": [8.5, 8.25, 15.5, 11.75], "texture": "#texture"} + "up": {"uv": [0.5, 8.5, 7.5, 15.5], "rotation": 180, "texture": "#1"}, + "down": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#1"} } }, { + "name": "body", "from": [1, 1, 15], "to": [15, 11, 16], "faces": { - "north": {"uv": [8.5, 9, 15.5, 11.5], "texture": "#texture"}, - "east": {"uv": [0, 0, 0.5, 2.5], "texture": "#missing"}, - "south": {"uv": [8.5, 1.25, 15.5, 3.75], "texture": "#texture"}, - "west": {"uv": [0, 0, 0.5, 2.5], "texture": "#missing"}, - "up": {"uv": [0.5, 8, 7.5, 8.25], "texture": "#texture"}, - "down": {"uv": [0, 0, 7, 0.25], "texture": "#missing"} + "north": {"uv": [8.5, 9.5, 15.5, 14.5], "texture": "#1"}, + "south": {"uv": [8.5, 2.5, 15.5, 7.5], "texture": "#texture"}, + "up": {"uv": [0.5, 8, 7.5, 8.5], "texture": "#1"} } }, { + "name": "body", "from": [3, 1, 3], "to": [13, 2, 13], "faces": { - "north": {"uv": [10.5, 13, 16, 13.25], "texture": "#texture"}, - "east": {"uv": [10.5, 13, 16, 13.25], "texture": "#texture"}, - "south": {"uv": [10.5, 13, 16, 13.25], "texture": "#texture"}, - "west": {"uv": [10.5, 13, 16, 13.25], "texture": "#texture"}, - "up": {"uv": [10.5, 13, 16, 15.75], "texture": "#texture"}, - "down": {"uv": [0, 0, 0.5, 0.25], "texture": "#missing"} + "north": {"uv": [10.5, 13, 16, 13.5], "texture": "#texture"}, + "east": {"uv": [10.5, 13, 16, 13.5], "texture": "#texture"}, + "south": {"uv": [10.5, 13, 16, 13.5], "texture": "#texture"}, + "west": {"uv": [10.5, 13, 16, 13.5], "texture": "#texture"}, + "up": {"uv": [10.5, 8, 16, 13.5], "texture": "#texture"} + } + }, + { + "from": [-2, 10, 7.1], + "to": [0, 14, 8.9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [0, 14, 8]}, + "faces": { + "north": {"uv": [8.5, 9.5, 9.5, 11.5], "texture": "#texture"}, + "south": {"uv": [8.5, 9.5, 9.5, 11.5], "texture": "#texture"}, + "west": {"uv": [8.5, 9.5, 9.5, 11.5], "texture": "#texture"}, + "up": {"uv": [8.5, 8.5, 9.5, 9.5], "texture": "#texture"}, + "down": {"uv": [8.5, 11.5, 9.5, 12.5], "texture": "#texture"} + } + }, + { + "name": "pipestuff", + "from": [-2, 10, 12.1], + "to": [0, 14, 13.9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [0, 14, 13]}, + "faces": { + "north": {"uv": [8.5, 9.5, 9.5, 11.5], "texture": "#texture"}, + "south": {"uv": [8.5, 9.5, 9.5, 11.5], "texture": "#texture"}, + "west": {"uv": [8.5, 9.5, 9.5, 11.5], "texture": "#texture"}, + "up": {"uv": [8.5, 8.5, 9.5, 9.5], "texture": "#texture"}, + "down": {"uv": [8.5, 11.5, 9.5, 12.5], "texture": "#texture"} + } + }, + { + "name": "pipestuff", + "from": [-2, 10, 12.1], + "to": [0, 14, 13.9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [0, 14, 8]}, + "faces": { + "north": {"uv": [8.5, 13.75, 9.5, 14.75], "texture": "#texture"}, + "south": {"uv": [8.5, 13.75, 9.5, 14.75], "texture": "#texture"}, + "west": {"uv": [8.5, 13.75, 9.5, 14.75], "texture": "#texture"}, + "up": {"uv": [8.5, 13.25, 9.5, 13.75], "texture": "#texture"}, + "down": {"uv": [8.5, 14.75, 9.5, 15.25], "texture": "#texture"} } } ] diff --git a/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator_error.json b/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator_error.json index 676bb08aa..40e58257d 100644 --- a/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator_error.json +++ b/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator_error.json @@ -1,5 +1,5 @@ { - "parent": "overdrive_that_matters:block/matter_replicator_working", + "parent": "overdrive_that_matters:block/matter_replicator", "texture_size": [32, 32], "textures": { "1": "overdrive_that_matters:block/matter_replicator_base", diff --git a/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator_idle.json b/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator_idle.json index dc7a117ad..94e64e6cc 100644 --- a/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator_idle.json +++ b/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator_idle.json @@ -1,5 +1,5 @@ { - "parent": "overdrive_that_matters:block/matter_replicator_working", + "parent": "overdrive_that_matters:block/matter_replicator", "texture_size": [32, 32], "textures": { "1": "overdrive_that_matters:block/matter_replicator_base", diff --git a/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator_working.json b/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator_working.json index db7a07bee..5f5466b60 100644 --- a/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator_working.json +++ b/src/main/resources/assets/overdrive_that_matters/models/block/matter_replicator_working.json @@ -1,329 +1,9 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", - "render_type": "translucent", + "parent": "overdrive_that_matters:block/matter_replicator", "texture_size": [32, 32], "textures": { "1": "overdrive_that_matters:block/matter_replicator_base", "particle": "overdrive_that_matters:block/matter_replicator_base", "texture": "overdrive_that_matters:block/matter_replicator" - }, - "elements": [ - { - "name": "body", - "from": [15, 0, 0], - "to": [16, 11, 16], - "faces": { - "north": {"uv": [0, 2.5, 0.5, 8], "texture": "#texture"}, - "east": {"uv": [0, 2.5, 8, 8], "texture": "#1"}, - "south": {"uv": [15.5, 2.5, 16, 8], "texture": "#texture"}, - "west": {"uv": [8, 9.5, 16, 15], "texture": "#1"}, - "up": {"uv": [0, 8, 0.5, 16], "rotation": 180, "texture": "#1"}, - "down": {"uv": [8, 8, 8.5, 16], "texture": "#1"} - } - }, - { - "name": "body", - "from": [0, 0, 0], - "to": [1, 11, 16], - "faces": { - "north": {"uv": [7.5, 2.5, 8, 8], "texture": "#texture"}, - "east": {"uv": [8, 9.5, 16, 15], "texture": "#1"}, - "south": {"uv": [8, 2.5, 8.5, 8], "texture": "#1"}, - "west": {"uv": [8, 2.5, 16, 8], "texture": "#1"}, - "up": {"uv": [7.5, 8, 8, 16], "rotation": 180, "texture": "#1"}, - "down": {"uv": [15.5, 8, 16, 16], "texture": "#1"} - } - }, - { - "name": "controlpanel", - "from": [0, 11, 1], - "to": [8, 16, 6], - "faces": { - "north": {"uv": [4, 10.5, 8, 13], "texture": "#texture"}, - "south": {"uv": [4, 13, 8, 15.5], "texture": "#texture"}, - "west": {"uv": [8.5, 0, 11, 2.5], "texture": "#1"}, - "up": {"uv": [4, 8, 8, 10.5], "texture": "#texture"} - } - }, - { - "name": "computer", - "from": [8, 11, 0], - "to": [16, 16, 6], - "faces": { - "north": {"uv": [0, 0, 4, 2.5], "texture": "#texture"}, - "east": {"uv": [5, 0, 8, 2.5], "texture": "#1"}, - "south": {"uv": [0, 8.5, 4, 11], "rotation": 180, "texture": "#texture"}, - "west": {"uv": [5, 0, 8, 2.5], "texture": "#1"}, - "up": {"uv": [0, 8, 4, 11], "texture": "#texture"} - } - }, - { - "name": "canisterlight", - "from": [5, 11, 11], - "to": [14, 15, 15], - "faces": { - "north": {"uv": [11, 0, 15.5, 2], "rotation": 180, "texture": "#texture"}, - "south": {"uv": [11, 0, 15.5, 2], "texture": "#texture"}, - "up": {"uv": [11, 0, 15.5, 2], "texture": "#texture"} - }, - "forge_data": { "block_light": 15, "sky_light": 15 } - }, - { - "name": "canister", - "from": [14, 11, 11], - "to": [15, 15, 15], - "faces": { - "north": {"uv": [15.5, 0, 16, 2], "rotation": 180, "texture": "#texture"}, - "east": {"uv": [8, 0, 10, 2], "texture": "#texture"}, - "south": {"uv": [15.5, 0, 16, 2], "texture": "#texture"}, - "up": {"uv": [15.5, 0, 16, 2], "texture": "#texture"} - } - }, - { - "name": "canister", - "from": [3, 11, 11], - "to": [5, 15, 15], - "faces": { - "north": {"uv": [10, 0, 11, 2], "rotation": 180, "texture": "#texture"}, - "south": {"uv": [10, 0, 11, 2], "texture": "#texture"}, - "west": {"uv": [8, 0, 10, 2], "texture": "#texture"}, - "up": {"uv": [10, 0, 11, 2], "texture": "#texture"} - } - }, - { - "name": "canister", - "from": [3, 11, 6], - "to": [5, 15, 10], - "faces": { - "south": {"uv": [10, 0, 11, 2], "texture": "#texture"}, - "west": {"uv": [8, 0, 10, 2], "texture": "#texture"}, - "up": {"uv": [10, 0, 11, 2], "texture": "#texture"}, - "down": {"uv": [0, 0, 6, 1], "texture": "#missing"} - } - }, - { - "name": "canisterlight", - "from": [5, 11, 6], - "to": [14, 15, 10], - "faces": { - "south": {"uv": [11, 0, 15.5, 2], "texture": "#texture"}, - "up": {"uv": [11, 0, 15.5, 2], "texture": "#texture"}, - "down": {"uv": [0, 0, 6, 1], "texture": "#missing"} - }, - "forge_data": { "block_light": 15, "sky_light": 15 } - }, - { - "name": "canister", - "from": [14, 11, 6], - "to": [15, 15, 10], - "faces": { - "east": {"uv": [8, 0, 10, 2], "texture": "#texture"}, - "south": {"uv": [15.5, 0, 16, 2], "texture": "#texture"}, - "up": {"uv": [15.5, 0, 16, 2], "texture": "#texture"}, - "down": {"uv": [0, 0, 6, 1], "texture": "#missing"} - } - }, - { - "name": "pipe", - "from": [0, 11, 7], - "to": [3, 14, 9], - "faces": { - "north": {"uv": [1, 12, 0, 13.5], "texture": "#texture"}, - "south": {"uv": [0, 12, 1, 13.5], "texture": "#texture"}, - "west": {"uv": [0, 12, 1, 13.5], "texture": "#texture"}, - "up": {"uv": [0, 11, 1, 12], "texture": "#texture"} - } - }, - { - "name": "pipe", - "from": [0, 11, 12], - "to": [3, 14, 14], - "faces": { - "north": {"uv": [1, 12, 0, 13.5], "texture": "#texture"}, - "south": {"uv": [0, 12, 1, 13.5], "texture": "#texture"}, - "west": {"uv": [0, 12, 1, 13.5], "texture": "#texture"}, - "up": {"uv": [0, 11, 1, 12], "texture": "#texture"} - } - }, - { - "name": "frame", - "from": [15.5, 11, 15], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, - "east": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, - "south": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, - "west": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, - "up": {"uv": [2, 15, 2.5, 15.5], "texture": "#texture"} - } - }, - { - "name": "frame", - "from": [15.5, 15, 6], - "to": [16, 16, 15], - "faces": { - "east": {"uv": [0, 15.5, 4.5, 16], "texture": "#texture"}, - "west": {"uv": [0, 15.5, 4.5, 16], "texture": "#texture"}, - "up": {"uv": [0, 15.5, 4.5, 16], "rotation": 90, "texture": "#texture"}, - "down": {"uv": [0, 15.5, 4.5, 16], "rotation": 90, "texture": "#texture"} - } - }, - { - "name": "frame", - "from": [0, 11, 15], - "to": [0.5, 16, 16], - "faces": { - "north": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, - "east": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, - "south": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, - "west": {"uv": [0, 15, 2.5, 15.5], "rotation": 270, "texture": "#texture"}, - "up": {"uv": [2, 15, 2.5, 15.5], "texture": "#texture"} - } - }, - { - "name": "frame", - "from": [0, 15, 6], - "to": [0.5, 16, 15], - "faces": { - "east": {"uv": [0, 15.5, 4.5, 16], "texture": "#texture"}, - "west": {"uv": [0, 15.5, 4.5, 16], "texture": "#texture"}, - "up": {"uv": [0, 15.5, 4.5, 16], "rotation": 90, "texture": "#texture"}, - "down": {"uv": [0, 15.5, 4.5, 16], "rotation": 90, "texture": "#texture"} - } - }, - { - "name": "body", - "from": [1, 0, 0], - "to": [15, 1, 16], - "faces": { - "north": {"uv": [0.5, 7.5, 7.5, 8], "texture": "#texture"}, - "south": {"uv": [8.5, 7.5, 15.5, 8], "texture": "#texture"}, - "up": {"uv": [0.5, 8.5, 7.5, 15.5], "rotation": 180, "texture": "#1"}, - "down": {"uv": [8.5, 8, 15.5, 16], "texture": "#1"} - } - }, - { - "name": "body", - "from": [8, 7, 0], - "to": [15, 11, 1], - "faces": { - "north": {"uv": [0.5, 2.5, 4, 4.5], "texture": "#texture"}, - "south": {"uv": [4, 2.5, 0.5, 4.5], "texture": "#texture"}, - "west": {"uv": [3.5, 2.5, 4, 4.5], "texture": "#texture"}, - "down": {"uv": [0.5, 4, 4, 4.5], "texture": "#texture"} - } - }, - { - "name": "body", - "from": [1, 9, 0], - "to": [8, 11, 1], - "faces": { - "north": {"uv": [4, 2.5, 7, 3.5], "texture": "#texture"}, - "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#missing"}, - "south": {"uv": [4, 3, 7, 3.5], "rotation": 180, "texture": "#texture"}, - "up": {"uv": [4, 15.5, 7.5, 16], "texture": "#1"}, - "down": {"uv": [4, 3, 7, 3.5], "rotation": 180, "texture": "#texture"} - } - }, - { - "name": "body", - "from": [1, 1, 0], - "to": [2, 9, 1], - "faces": { - "north": {"uv": [7, 3.5, 7.5, 7], "texture": "#texture"}, - "east": {"uv": [7, 3.5, 7.5, 7], "texture": "#texture"}, - "south": {"uv": [7, 3.5, 7.5, 7], "texture": "#texture"} - } - }, - { - "name": "body", - "from": [14, 1, 0], - "to": [15, 7, 1], - "faces": { - "north": {"uv": [0.5, 4.5, 1, 7], "texture": "#texture"}, - "south": {"uv": [0.5, 4.5, 1, 7], "texture": "#texture"}, - "west": {"uv": [0.5, 4.5, 1, 7], "texture": "#texture"} - } - }, - { - "name": "body", - "from": [2, 1, 0], - "to": [14, 2, 1], - "faces": { - "north": {"uv": [1, 7, 7, 7.5], "texture": "#texture"}, - "south": {"uv": [1, 7, 7, 7.5], "texture": "#texture"}, - "up": {"uv": [1, 7, 7, 7.5], "texture": "#texture"} - } - }, - { - "name": "body", - "from": [1, 10, 1], - "to": [15, 11, 15], - "faces": { - "up": {"uv": [0.5, 8.5, 7.5, 15.5], "rotation": 180, "texture": "#1"}, - "down": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#1"} - } - }, - { - "name": "body", - "from": [1, 1, 15], - "to": [15, 11, 16], - "faces": { - "north": {"uv": [8.5, 9.5, 15.5, 14.5], "texture": "#1"}, - "south": {"uv": [8.5, 2.5, 15.5, 7.5], "texture": "#texture"}, - "up": {"uv": [0.5, 8, 7.5, 8.5], "texture": "#1"} - } - }, - { - "name": "body", - "from": [3, 1, 3], - "to": [13, 2, 13], - "faces": { - "north": {"uv": [10.5, 13, 16, 13.5], "texture": "#texture"}, - "east": {"uv": [10.5, 13, 16, 13.5], "texture": "#texture"}, - "south": {"uv": [10.5, 13, 16, 13.5], "texture": "#texture"}, - "west": {"uv": [10.5, 13, 16, 13.5], "texture": "#texture"}, - "up": {"uv": [10.5, 8, 16, 13.5], "texture": "#texture"} - } - }, - { - "from": [-2, 10, 7.1], - "to": [0, 14, 8.9], - "rotation": {"angle": 22.5, "axis": "z", "origin": [0, 14, 8]}, - "faces": { - "north": {"uv": [8.5, 9.5, 9.5, 11.5], "texture": "#texture"}, - "south": {"uv": [8.5, 9.5, 9.5, 11.5], "texture": "#texture"}, - "west": {"uv": [8.5, 9.5, 9.5, 11.5], "texture": "#texture"}, - "up": {"uv": [8.5, 8.5, 9.5, 9.5], "texture": "#texture"}, - "down": {"uv": [8.5, 11.5, 9.5, 12.5], "texture": "#texture"} - } - }, - { - "name": "pipestuff", - "from": [-2, 10, 12.1], - "to": [0, 14, 13.9], - "rotation": {"angle": 22.5, "axis": "z", "origin": [0, 14, 13]}, - "faces": { - "north": {"uv": [8.5, 9.5, 9.5, 11.5], "texture": "#texture"}, - "south": {"uv": [8.5, 9.5, 9.5, 11.5], "texture": "#texture"}, - "west": {"uv": [8.5, 9.5, 9.5, 11.5], "texture": "#texture"}, - "up": {"uv": [8.5, 8.5, 9.5, 9.5], "texture": "#texture"}, - "down": {"uv": [8.5, 11.5, 9.5, 12.5], "texture": "#texture"} - } - }, - { - "name": "pipestuff", - "from": [-2, 10, 12.1], - "to": [0, 14, 13.9], - "rotation": {"angle": 22.5, "axis": "z", "origin": [0, 14, 8]}, - "faces": { - "north": {"uv": [8.5, 13.75, 9.5, 14.75], "texture": "#texture"}, - "south": {"uv": [8.5, 13.75, 9.5, 14.75], "texture": "#texture"}, - "west": {"uv": [8.5, 13.75, 9.5, 14.75], "texture": "#texture"}, - "up": {"uv": [8.5, 13.25, 9.5, 13.75], "texture": "#texture"}, - "down": {"uv": [8.5, 14.75, 9.5, 15.25], "texture": "#texture"} - } - } - ] + } } \ No newline at end of file diff --git a/src/main/resources/assets/overdrive_that_matters/models/block/powered_blast_furnace_error.json b/src/main/resources/assets/overdrive_that_matters/models/block/powered_blast_furnace_error.json index 74b94f7bd..f0e4d8e45 100644 --- a/src/main/resources/assets/overdrive_that_matters/models/block/powered_blast_furnace_error.json +++ b/src/main/resources/assets/overdrive_that_matters/models/block/powered_blast_furnace_error.json @@ -2,8 +2,8 @@ "render_type": "cutout", "texture_size": [32, 64], "textures": { - "particle": "overdrive_that_matters:block/induction_furnace", - "texture": "overdrive_that_matters:block/induction_furnace" + "particle": "overdrive_that_matters:block/induction_furnace_offline", + "texture": "overdrive_that_matters:block/induction_furnace_offline" }, "elements": [ { diff --git a/src/main/resources/assets/overdrive_that_matters/models/block/star_chair.json b/src/main/resources/assets/overdrive_that_matters/models/block/star_chair.json new file mode 100644 index 000000000..c8a636a24 --- /dev/null +++ b/src/main/resources/assets/overdrive_that_matters/models/block/star_chair.json @@ -0,0 +1,172 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "overdrive_that_matters:block/decorative/carbon_fibre_borderless", + "1": "overdrive_that_matters:block/decorative/star_chair", + "2": "overdrive_that_matters:block/powered_smoker_base", + "particle": "overdrive_that_matters:block/decorative/carbon_fibre_borderless" + }, + "elements": [ + { + "name": "base", + "from": [2, 0, 2], + "to": [14, 2, 14], + "faces": { + "north": {"uv": [7, 7.5, 13, 8.5], "texture": "#1"}, + "east": {"uv": [7, 7.5, 13, 8.5], "texture": "#1"}, + "south": {"uv": [7, 7.5, 13, 8.5], "texture": "#1"}, + "west": {"uv": [7, 7.5, 13, 8.5], "texture": "#1"}, + "up": {"uv": [7, 0, 13, 6], "texture": "#1"}, + "down": {"uv": [1, 1, 7, 7], "texture": "#2"} + } + }, + { + "name": "base", + "from": [4, 0.1, 13], + "to": [12, 5.1, 15], + "faces": { + "east": {"uv": [4, 13.5, 5, 16], "texture": "#1"}, + "south": {"uv": [0, 13.5, 4, 16], "texture": "#1"}, + "west": {"uv": [5, 13.5, 4, 16], "texture": "#1"}, + "up": {"uv": [11, 14, 15, 15], "rotation": 180, "texture": "#1"}, + "down": {"uv": [11, 15, 15, 16], "texture": "#1"} + } + }, + { + "name": "base", + "from": [4, 0.1, 1], + "to": [12, 5.1, 3], + "faces": { + "north": {"uv": [0, 13.5, 4, 16], "texture": "#1"}, + "east": {"uv": [5, 13.5, 4, 16], "texture": "#1"}, + "west": {"uv": [4, 13.5, 5, 16], "texture": "#1"}, + "up": {"uv": [11, 14, 15, 15], "texture": "#1"}, + "down": {"uv": [11, 15, 15, 16], "texture": "#1"} + } + }, + { + "name": "base", + "from": [2, 4, 2], + "to": [14, 7, 14], + "faces": { + "north": {"uv": [7, 6, 13, 7.5], "texture": "#1"}, + "east": {"uv": [7, 6, 13, 7.5], "texture": "#1"}, + "south": {"uv": [7, 6, 13, 7.5], "texture": "#1"}, + "west": {"uv": [7, 6, 13, 7.5], "texture": "#1"}, + "up": {"uv": [7, 0, 13, 6], "texture": "#1"}, + "down": {"uv": [7, 0, 13, 6], "texture": "#1"} + } + }, + { + "name": "base", + "from": [3, 6, 11], + "to": [13, 23, 15], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 7, 13]}, + "faces": { + "north": {"uv": [5, 0, 0, 8.5], "texture": "#1"}, + "east": {"uv": [7, 0, 5, 8.5], "texture": "#1"}, + "south": {"uv": [0, 0, 5, 8.5], "texture": "#1"}, + "west": {"uv": [5, 0, 7, 8.5], "texture": "#1"}, + "up": {"uv": [0, 8.5, 5, 10.5], "texture": "#1"}, + "down": {"uv": [0, 10.5, 5, 12.5], "texture": "#1"} + } + }, + { + "name": "base", + "from": [3, 2, 3], + "to": [13, 4, 13], + "faces": { + "north": {"uv": [0, 12.5, 5, 13.5], "texture": "#1"}, + "east": {"uv": [0, 12.5, 5, 13.5], "texture": "#1"}, + "south": {"uv": [0, 12.5, 5, 13.5], "texture": "#1"}, + "west": {"uv": [0, 12.5, 5, 13.5], "texture": "#1"} + } + }, + { + "name": "fabric", + "from": [3, 6, 1], + "to": [13, 9, 11], + "faces": { + "north": {"uv": [0, 0, 3, 10], "rotation": 90, "texture": "#0"}, + "east": {"uv": [0, 0, 10, 3], "rotation": 180, "texture": "#0"}, + "west": {"uv": [0, 0, 10, 3], "texture": "#0"}, + "up": {"uv": [0, 0, 10, 10], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 0, 10, 10], "rotation": 90, "texture": "#0"} + } + }, + { + "name": "fabric", + "from": [4, 8, 10], + "to": [12, 22, 12], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 13]}, + "faces": { + "north": {"uv": [0, 0, 14, 8], "rotation": 270, "texture": "#0"}, + "east": {"uv": [0, 0, 14, 2], "rotation": 270, "texture": "#0"}, + "west": {"uv": [0, 0, 14, 2], "rotation": 270, "texture": "#0"}, + "up": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#0"}, + "down": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#0"} + } + }, + { + "name": "arm", + "from": [1, 6, 0], + "to": [3, 12, 12], + "faces": { + "north": {"uv": [9, 13, 10, 16], "texture": "#1"}, + "east": {"uv": [6, 16, 9, 10], "rotation": 90, "texture": "#1"}, + "south": {"uv": [9, 10, 10, 13], "texture": "#1"}, + "west": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#1"}, + "up": {"uv": [5, 10, 6, 16], "rotation": 180, "texture": "#1"}, + "down": {"uv": [10, 10, 11, 16], "texture": "#1"} + } + }, + { + "name": "arm", + "from": [13, 6, 0], + "to": [15, 12, 12], + "faces": { + "north": {"uv": [9, 13, 10, 16], "texture": "#1"}, + "east": {"uv": [6, 16, 9, 10], "rotation": 90, "texture": "#1"}, + "south": {"uv": [9, 10, 10, 13], "texture": "#1"}, + "west": {"uv": [6, 10, 9, 16], "rotation": 90, "texture": "#1"}, + "up": {"uv": [5, 10, 6, 16], "rotation": 180, "texture": "#1"}, + "down": {"uv": [10, 10, 11, 16], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "translation": [0, 8.5, 1] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/overdrive_that_matters/models/item/matter_replicator.json b/src/main/resources/assets/overdrive_that_matters/models/item/matter_replicator.json deleted file mode 100644 index ea799161f..000000000 --- a/src/main/resources/assets/overdrive_that_matters/models/item/matter_replicator.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "overdrive_that_matters:block/matter_replicator_working" -} \ No newline at end of file diff --git a/src/main/resources/assets/overdrive_that_matters/models/item/matter_scanner.json b/src/main/resources/assets/overdrive_that_matters/models/item/matter_scanner.json deleted file mode 100644 index 82efee943..000000000 --- a/src/main/resources/assets/overdrive_that_matters/models/item/matter_scanner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "overdrive_that_matters:block/matter_scanner_working" -} \ No newline at end of file diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/black.png new file mode 100644 index 000000000..222b526b5 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/blue.png new file mode 100644 index 000000000..e90afb2f2 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/brown.png new file mode 100644 index 000000000..7ae6da5dc Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/cyan.png new file mode 100644 index 000000000..b9f3d1f0e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/gray.png new file mode 100644 index 000000000..b2e51a6da Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/green.png new file mode 100644 index 000000000..17dc90a55 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/light_blue.png new file mode 100644 index 000000000..b54f916ec Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/light_gray.png new file mode 100644 index 000000000..86085a64d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/lime.png new file mode 100644 index 000000000..335330cdc Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/magenta.png new file mode 100644 index 000000000..ba1b1484e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/orange.png new file mode 100644 index 000000000..f06305347 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/pink.png new file mode 100644 index 000000000..a034976ea Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/purple.png new file mode 100644 index 000000000..fdd4eb912 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/red.png new file mode 100644 index 000000000..705ef47c1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/white.png new file mode 100644 index 000000000..2f53ec070 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/yellow.png new file mode 100644 index 000000000..bde9f710b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base_mask.png new file mode 100644 index 000000000..8eed2559c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/android_station_base_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/black.png new file mode 100644 index 000000000..ff50b0e0b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/blue.png new file mode 100644 index 000000000..abf5835e7 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/brown.png new file mode 100644 index 000000000..a10eaf44a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/cyan.png new file mode 100644 index 000000000..34de073d7 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/gray.png new file mode 100644 index 000000000..279fbd663 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/green.png new file mode 100644 index 000000000..e29b5652a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/light_blue.png new file mode 100644 index 000000000..17a29e59e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/light_gray.png new file mode 100644 index 000000000..0de11693e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/lime.png new file mode 100644 index 000000000..91cd0100f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/magenta.png new file mode 100644 index 000000000..4c5cdafed Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/orange.png new file mode 100644 index 000000000..1a6b7d0d3 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/pink.png new file mode 100644 index 000000000..681ec375f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/purple.png new file mode 100644 index 000000000..d43023269 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/red.png new file mode 100644 index 000000000..f06fa4fc8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/white.png new file mode 100644 index 000000000..43a8ff97f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/yellow.png new file mode 100644 index 000000000..e085d837f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame_mask.png new file mode 100644 index 000000000..fea965e23 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/batterybank_frame_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/black.png new file mode 100644 index 000000000..b1e38a3b1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/blue.png new file mode 100644 index 000000000..67763b0e5 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/brown.png new file mode 100644 index 000000000..0f41dbe7e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/cyan.png new file mode 100644 index 000000000..fbb1a09b8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/gray.png new file mode 100644 index 000000000..c6bc2569b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/green.png new file mode 100644 index 000000000..55876af25 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/light_blue.png new file mode 100644 index 000000000..2cc1adcb5 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/light_gray.png new file mode 100644 index 000000000..c1e055183 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/lime.png new file mode 100644 index 000000000..d318c423d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/magenta.png new file mode 100644 index 000000000..8ae1067a0 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/orange.png new file mode 100644 index 000000000..5b37be8d5 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/pink.png new file mode 100644 index 000000000..a905f58c0 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/purple.png new file mode 100644 index 000000000..7eba85c98 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/red.png new file mode 100644 index 000000000..14c2ffd9a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/white.png new file mode 100644 index 000000000..71ce93dc1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/yellow.png new file mode 100644 index 000000000..21eae7079 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator_mask.png new file mode 100644 index 000000000..79df90112 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/cobblestone_generator_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base.png new file mode 100644 index 000000000..14b19ef36 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/black.png new file mode 100644 index 000000000..83954e68d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/blue.png new file mode 100644 index 000000000..c409b3338 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/brown.png new file mode 100644 index 000000000..e3b482392 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/cyan.png new file mode 100644 index 000000000..6160ae402 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/gray.png new file mode 100644 index 000000000..da9cafd18 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/green.png new file mode 100644 index 000000000..a3e9bf139 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/light_blue.png new file mode 100644 index 000000000..dcc904484 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/light_gray.png new file mode 100644 index 000000000..7827e72a2 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/lime.png new file mode 100644 index 000000000..327a63772 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/magenta.png new file mode 100644 index 000000000..5d4bbc272 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/orange.png new file mode 100644 index 000000000..628146c3c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/pink.png new file mode 100644 index 000000000..b5d746097 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/purple.png new file mode 100644 index 000000000..03428ad6a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/red.png new file mode 100644 index 000000000..8f04ce6ed Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/white.png new file mode 100644 index 000000000..2f262c4b0 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/yellow.png new file mode 100644 index 000000000..86ba22a64 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base_mask.png new file mode 100644 index 000000000..5b5b5c9fd Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_base_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen.png new file mode 100644 index 000000000..4c05be6a9 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/black.png new file mode 100644 index 000000000..c5412450c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/blue.png new file mode 100644 index 000000000..5982686e9 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/brown.png new file mode 100644 index 000000000..1ca3a44fa Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/cyan.png new file mode 100644 index 000000000..009b412a1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/gray.png new file mode 100644 index 000000000..c7819f625 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/green.png new file mode 100644 index 000000000..9c5aa0878 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/light_blue.png new file mode 100644 index 000000000..2fa096ec1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/light_gray.png new file mode 100644 index 000000000..4e0d35bcc Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/lime.png new file mode 100644 index 000000000..a9148179c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/magenta.png new file mode 100644 index 000000000..41e60ce05 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/orange.png new file mode 100644 index 000000000..c18fed45a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/pink.png new file mode 100644 index 000000000..538d8935c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/purple.png new file mode 100644 index 000000000..633223a8c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/red.png new file mode 100644 index 000000000..d47c0b77e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/white.png new file mode 100644 index 000000000..d8db3b421 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/yellow.png new file mode 100644 index 000000000..4cf7e4819 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen_mask.png new file mode 100644 index 000000000..067bd8810 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/computer_screen_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/star_chair.png b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/star_chair.png new file mode 100644 index 000000000..3d2e0459d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/decorative/star_chair.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/black.png new file mode 100644 index 000000000..436aa4595 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/blue.png new file mode 100644 index 000000000..e69428058 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/brown.png new file mode 100644 index 000000000..2d5aafe8f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/cyan.png new file mode 100644 index 000000000..8c2c59296 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/gray.png new file mode 100644 index 000000000..92fcc7f23 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/green.png new file mode 100644 index 000000000..e042e7d85 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/light_blue.png new file mode 100644 index 000000000..f3fc4b84c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/light_gray.png new file mode 100644 index 000000000..4b9dd5e3f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/lime.png new file mode 100644 index 000000000..d93b5d86c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/magenta.png new file mode 100644 index 000000000..58280c949 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/orange.png new file mode 100644 index 000000000..a36a44f2c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/pink.png new file mode 100644 index 000000000..5e2ee863e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/purple.png new file mode 100644 index 000000000..d52b4a677 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/red.png new file mode 100644 index 000000000..8eb125fe7 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/white.png new file mode 100644 index 000000000..1f7d68dd8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/yellow.png new file mode 100644 index 000000000..4ad01fcf5 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_mask.png new file mode 100644 index 000000000..8e877c6fe Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_mask.xcf b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_mask.xcf new file mode 100644 index 000000000..3a73700b4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_mask.xcf differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/black.png new file mode 100644 index 000000000..304193fd8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/blue.png new file mode 100644 index 000000000..8811b975e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/brown.png new file mode 100644 index 000000000..f3e80a69b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/cyan.png new file mode 100644 index 000000000..b515ebb76 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/gray.png new file mode 100644 index 000000000..d60dc073d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/green.png new file mode 100644 index 000000000..9831c76ae Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/light_blue.png new file mode 100644 index 000000000..59aa357a3 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/light_gray.png new file mode 100644 index 000000000..99212e848 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/lime.png new file mode 100644 index 000000000..f5cbfb886 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/magenta.png new file mode 100644 index 000000000..b52449b45 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/orange.png new file mode 100644 index 000000000..4335d8218 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/pink.png new file mode 100644 index 000000000..abe4f53a8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/purple.png new file mode 100644 index 000000000..73d57315b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/red.png new file mode 100644 index 000000000..4f40cd549 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/white.png new file mode 100644 index 000000000..e3e6ca9f2 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/yellow.png new file mode 100644 index 000000000..76063ffd0 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline_mask.png new file mode 100644 index 000000000..8e877c6fe Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/electric_furnace_offline_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage.png index bf0d32920..093e2bc63 100644 Binary files a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage.png and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/black.png new file mode 100644 index 000000000..0c76753ce Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/blue.png new file mode 100644 index 000000000..90cc6fa92 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/brown.png new file mode 100644 index 000000000..3bfde41bf Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/cyan.png new file mode 100644 index 000000000..a0b70f47e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/gray.png new file mode 100644 index 000000000..5f74405fa Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/green.png new file mode 100644 index 000000000..103cac4e8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/light_blue.png new file mode 100644 index 000000000..cbf458e94 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/light_gray.png new file mode 100644 index 000000000..c93546b87 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/lime.png new file mode 100644 index 000000000..be42ad657 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/magenta.png new file mode 100644 index 000000000..3809cf5cb Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/orange.png new file mode 100644 index 000000000..54c5b75fd Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/pink.png new file mode 100644 index 000000000..1e0559b7f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/purple.png new file mode 100644 index 000000000..d278320e7 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/red.png new file mode 100644 index 000000000..f6fa2764b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/white.png new file mode 100644 index 000000000..79a8ae9ec Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/yellow.png new file mode 100644 index 000000000..66005cda3 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage_mask.png new file mode 100644 index 000000000..decef23af Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/essence_storage_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/black.png new file mode 100644 index 000000000..620a38e13 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/blue.png new file mode 100644 index 000000000..fc06049f6 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/brown.png new file mode 100644 index 000000000..62d7e991e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/cyan.png new file mode 100644 index 000000000..9e52fd365 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/gray.png new file mode 100644 index 000000000..b5ebe3162 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/green.png new file mode 100644 index 000000000..c14d59e39 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/light_blue.png new file mode 100644 index 000000000..6a7f54424 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/light_gray.png new file mode 100644 index 000000000..178bcf6cf Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/lime.png new file mode 100644 index 000000000..eabe46a54 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/magenta.png new file mode 100644 index 000000000..4676a16cf Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/orange.png new file mode 100644 index 000000000..4024a41b3 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/pink.png new file mode 100644 index 000000000..1311459e3 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/purple.png new file mode 100644 index 000000000..bbcd7a84c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/red.png new file mode 100644 index 000000000..0d8779d1f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/white.png new file mode 100644 index 000000000..92f201c2b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/yellow.png new file mode 100644 index 000000000..e967f3b7c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_mask.png new file mode 100644 index 000000000..ef0beffb7 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_mask.xcf b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_mask.xcf new file mode 100644 index 000000000..ccc4c4442 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_mask.xcf differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/black.png new file mode 100644 index 000000000..6f085ffa9 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/blue.png new file mode 100644 index 000000000..3371d440e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/brown.png new file mode 100644 index 000000000..ca1f38bc4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/cyan.png new file mode 100644 index 000000000..17719e875 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/gray.png new file mode 100644 index 000000000..310cd4530 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/green.png new file mode 100644 index 000000000..896907542 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/light_blue.png new file mode 100644 index 000000000..c2e5480af Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/light_gray.png new file mode 100644 index 000000000..33bbbff13 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/lime.png new file mode 100644 index 000000000..d356e888b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/magenta.png new file mode 100644 index 000000000..81d233663 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/orange.png new file mode 100644 index 000000000..419eaede8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/pink.png new file mode 100644 index 000000000..8d48ea4ec Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/purple.png new file mode 100644 index 000000000..26ea23443 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/red.png new file mode 100644 index 000000000..1310f095e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/white.png new file mode 100644 index 000000000..033e66299 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/yellow.png new file mode 100644 index 000000000..a11c7c36e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline_mask.png new file mode 100644 index 000000000..ef0beffb7 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/induction_furnace_offline_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/black.png new file mode 100644 index 000000000..a43dd7d92 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/blue.png new file mode 100644 index 000000000..c0046cb50 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/brown.png new file mode 100644 index 000000000..a88e41fa3 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/cyan.png new file mode 100644 index 000000000..fe247efcc Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/gray.png new file mode 100644 index 000000000..4c89b2e33 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/green.png new file mode 100644 index 000000000..9b92965b5 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/light_blue.png new file mode 100644 index 000000000..5d0eddf84 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/light_gray.png new file mode 100644 index 000000000..d9f07c0bc Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/lime.png new file mode 100644 index 000000000..0ddc8f23b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/magenta.png new file mode 100644 index 000000000..921bc1938 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/orange.png new file mode 100644 index 000000000..40eb3fd83 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/pink.png new file mode 100644 index 000000000..23da7f9ff Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/purple.png new file mode 100644 index 000000000..48b69e966 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/red.png new file mode 100644 index 000000000..2b2972bd6 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/white.png new file mode 100644 index 000000000..5c18d9805 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/yellow.png new file mode 100644 index 000000000..4c42c8fee Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor_mask.png new file mode 100644 index 000000000..0bf1c567f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/item_monitor_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/liquid_xp_flowing.png b/src/main/resources/assets/overdrive_that_matters/textures/block/liquid_xp_flowing.png new file mode 100644 index 000000000..63b6586ce Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/liquid_xp_flowing.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/liquid_xp_flowing.png.mcmeta b/src/main/resources/assets/overdrive_that_matters/textures/block/liquid_xp_flowing.png.mcmeta new file mode 100644 index 000000000..8e55e43ba --- /dev/null +++ b/src/main/resources/assets/overdrive_that_matters/textures/block/liquid_xp_flowing.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 3 + } +} diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/liquid_xp_still.png b/src/main/resources/assets/overdrive_that_matters/textures/block/liquid_xp_still.png new file mode 100644 index 000000000..6644d159f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/liquid_xp_still.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/liquid_xp_still.png.mcmeta b/src/main/resources/assets/overdrive_that_matters/textures/block/liquid_xp_still.png.mcmeta new file mode 100644 index 000000000..7ceb36394 --- /dev/null +++ b/src/main/resources/assets/overdrive_that_matters/textures/block/liquid_xp_still.png.mcmeta @@ -0,0 +1,45 @@ +{ + "animation": { + "frametime": 2, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/black.png new file mode 100644 index 000000000..a590c2be5 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/blue.png new file mode 100644 index 000000000..0eb79a965 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/brown.png new file mode 100644 index 000000000..fd57404a0 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/cyan.png new file mode 100644 index 000000000..99755e503 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/gray.png new file mode 100644 index 000000000..8400ea21a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/green.png new file mode 100644 index 000000000..3f9f49dcd Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/light_blue.png new file mode 100644 index 000000000..ecf6dc625 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/light_gray.png new file mode 100644 index 000000000..251aec9fb Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/lime.png new file mode 100644 index 000000000..ff8508b67 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/magenta.png new file mode 100644 index 000000000..ebfebcf17 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/orange.png new file mode 100644 index 000000000..545872e04 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/pink.png new file mode 100644 index 000000000..d66c0eb50 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/purple.png new file mode 100644 index 000000000..f71135eac Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/red.png new file mode 100644 index 000000000..1d6c07486 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/white.png new file mode 100644 index 000000000..dcde675d4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/yellow.png new file mode 100644 index 000000000..e17647ebf Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler_mask.png new file mode 100644 index 000000000..c62d76d25 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_bottler_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/black.png new file mode 100644 index 000000000..a0af0739d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/blue.png new file mode 100644 index 000000000..c2fff0276 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/brown.png new file mode 100644 index 000000000..805667fcb Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/cyan.png new file mode 100644 index 000000000..a0c9d9c66 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/gray.png new file mode 100644 index 000000000..beeef7432 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/green.png new file mode 100644 index 000000000..fa0743c0b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/light_blue.png new file mode 100644 index 000000000..32c0c3634 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/light_gray.png new file mode 100644 index 000000000..dd6a20767 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/lime.png new file mode 100644 index 000000000..e35f3e8cf Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/magenta.png new file mode 100644 index 000000000..402a62071 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/orange.png new file mode 100644 index 000000000..21fd87ae6 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/pink.png new file mode 100644 index 000000000..27f68247b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/purple.png new file mode 100644 index 000000000..f339efd7c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/red.png new file mode 100644 index 000000000..a896934f1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/white.png new file mode 100644 index 000000000..1244d5e84 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/yellow.png new file mode 100644 index 000000000..5cb8664cc Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer_mask.png new file mode 100644 index 000000000..0827be2c6 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_decomposer_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/black.png new file mode 100644 index 000000000..6b96845a4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/blue.png new file mode 100644 index 000000000..9cf671284 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/brown.png new file mode 100644 index 000000000..8c88eea87 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/cyan.png new file mode 100644 index 000000000..0c70d44a4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/gray.png new file mode 100644 index 000000000..ec3c54bfd Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/green.png new file mode 100644 index 000000000..9a4e9e8fa Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/light_blue.png new file mode 100644 index 000000000..9e5fd7ec8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/light_gray.png new file mode 100644 index 000000000..5bac999dc Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/lime.png new file mode 100644 index 000000000..74fe917ef Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/magenta.png new file mode 100644 index 000000000..294e74ec9 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/orange.png new file mode 100644 index 000000000..37cbeb5d3 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/pink.png new file mode 100644 index 000000000..88d6248e1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/purple.png new file mode 100644 index 000000000..280c22cc8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/red.png new file mode 100644 index 000000000..ea6e76462 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/white.png new file mode 100644 index 000000000..b3558bc01 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/yellow.png new file mode 100644 index 000000000..40857a41d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor_mask.png new file mode 100644 index 000000000..2c82e0073 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_reconstructor_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/black.png new file mode 100644 index 000000000..b3d9c481f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/blue.png new file mode 100644 index 000000000..ee8d6363e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/brown.png new file mode 100644 index 000000000..fd8921b15 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/cyan.png new file mode 100644 index 000000000..c1e436ecb Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/gray.png new file mode 100644 index 000000000..d2315cea9 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/green.png new file mode 100644 index 000000000..f54c4e2ad Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/light_blue.png new file mode 100644 index 000000000..e2182f82d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/light_gray.png new file mode 100644 index 000000000..0243b8bf3 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/lime.png new file mode 100644 index 000000000..e44577df0 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/magenta.png new file mode 100644 index 000000000..d9c9cf062 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/orange.png new file mode 100644 index 000000000..2e3a829ad Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/pink.png new file mode 100644 index 000000000..df95d30f8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/purple.png new file mode 100644 index 000000000..d5536cab8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/red.png new file mode 100644 index 000000000..c00d69b8e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/white.png new file mode 100644 index 000000000..d2a874daf Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/yellow.png new file mode 100644 index 000000000..ee3c2f740 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler_mask.png new file mode 100644 index 000000000..35519c71e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_recycler_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/black.png new file mode 100644 index 000000000..35f5fc830 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/blue.png new file mode 100644 index 000000000..a03db2be1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/brown.png new file mode 100644 index 000000000..738ba727b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/cyan.png new file mode 100644 index 000000000..017760657 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/gray.png new file mode 100644 index 000000000..81176af74 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/green.png new file mode 100644 index 000000000..00f13214e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/light_blue.png new file mode 100644 index 000000000..c2d4eda17 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/light_gray.png new file mode 100644 index 000000000..8b9fd6d12 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/lime.png new file mode 100644 index 000000000..a44b57db8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/magenta.png new file mode 100644 index 000000000..aa8801784 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/orange.png new file mode 100644 index 000000000..a7fc70d08 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/pink.png new file mode 100644 index 000000000..886e51ba8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/purple.png new file mode 100644 index 000000000..c3fd8854a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/red.png new file mode 100644 index 000000000..090a51be2 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/white.png new file mode 100644 index 000000000..df1973601 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/yellow.png new file mode 100644 index 000000000..535e9cb14 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/black.png new file mode 100644 index 000000000..2fd7d2663 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/blue.png new file mode 100644 index 000000000..28d2f8fce Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/brown.png new file mode 100644 index 000000000..263a2f34d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/cyan.png new file mode 100644 index 000000000..5aa3208ac Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/gray.png new file mode 100644 index 000000000..141d136c1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/green.png new file mode 100644 index 000000000..315af6be8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/light_blue.png new file mode 100644 index 000000000..359e37a6c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/light_gray.png new file mode 100644 index 000000000..1837845b6 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/lime.png new file mode 100644 index 000000000..5cf32bbc1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/magenta.png new file mode 100644 index 000000000..503049339 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/orange.png new file mode 100644 index 000000000..d423c0565 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/pink.png new file mode 100644 index 000000000..d2c33c0a4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/purple.png new file mode 100644 index 000000000..75902915e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/red.png new file mode 100644 index 000000000..e0823b700 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/white.png new file mode 100644 index 000000000..5522d9c36 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/yellow.png new file mode 100644 index 000000000..728741b24 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base_mask.png new file mode 100644 index 000000000..ea760acea Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_base_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/black.png new file mode 100644 index 000000000..78a20d337 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/blue.png new file mode 100644 index 000000000..8718eae22 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/brown.png new file mode 100644 index 000000000..f2b0d747b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/cyan.png new file mode 100644 index 000000000..2b9c3d1c0 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/gray.png new file mode 100644 index 000000000..90435a1ce Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/green.png new file mode 100644 index 000000000..c9635e31d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/light_blue.png new file mode 100644 index 000000000..583c7891c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/light_gray.png new file mode 100644 index 000000000..09a5b03ac Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/lime.png new file mode 100644 index 000000000..d7f0d6ba0 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/magenta.png new file mode 100644 index 000000000..16a811870 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/orange.png new file mode 100644 index 000000000..6d6161995 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/pink.png new file mode 100644 index 000000000..d25205290 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/purple.png new file mode 100644 index 000000000..5520342a2 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/red.png new file mode 100644 index 000000000..504d2c441 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/white.png new file mode 100644 index 000000000..52e59884d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/yellow.png new file mode 100644 index 000000000..806a49690 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted_mask.png new file mode 100644 index 000000000..4d7e75d57 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_halted_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_mask.png new file mode 100644 index 000000000..4d7e75d57 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/black.png new file mode 100644 index 000000000..d7e4c04bb Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/blue.png new file mode 100644 index 000000000..04f9197aa Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/brown.png new file mode 100644 index 000000000..e00d6e677 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/cyan.png new file mode 100644 index 000000000..5bc3324ca Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/gray.png new file mode 100644 index 000000000..8ffc9c824 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/green.png new file mode 100644 index 000000000..3baacb4b8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/light_blue.png new file mode 100644 index 000000000..503fabdc3 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/light_gray.png new file mode 100644 index 000000000..ddd4f395b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/lime.png new file mode 100644 index 000000000..5825dce8c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/magenta.png new file mode 100644 index 000000000..813bbcbd4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/orange.png new file mode 100644 index 000000000..288521e05 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/pink.png new file mode 100644 index 000000000..59be11aa7 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/purple.png new file mode 100644 index 000000000..5373ec72c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/red.png new file mode 100644 index 000000000..aaa274491 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/white.png new file mode 100644 index 000000000..3fac40572 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/yellow.png new file mode 100644 index 000000000..710d754db Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline_mask.png new file mode 100644 index 000000000..4d7e75d57 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_replicator_offline_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/black.png new file mode 100644 index 000000000..5d6e46b60 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/blue.png new file mode 100644 index 000000000..cee8075bc Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/brown.png new file mode 100644 index 000000000..f2bbe05d3 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/cyan.png new file mode 100644 index 000000000..294ec4915 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/gray.png new file mode 100644 index 000000000..d73971e07 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/green.png new file mode 100644 index 000000000..6c1d91ee8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/light_blue.png new file mode 100644 index 000000000..041e93126 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/light_gray.png new file mode 100644 index 000000000..c8b0068c7 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/lime.png new file mode 100644 index 000000000..bfe8e1835 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/magenta.png new file mode 100644 index 000000000..66d7c7f76 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/orange.png new file mode 100644 index 000000000..0532b209b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/pink.png new file mode 100644 index 000000000..e21b6d9bd Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/purple.png new file mode 100644 index 000000000..1494026af Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/red.png new file mode 100644 index 000000000..50ea1416b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/white.png new file mode 100644 index 000000000..4c2d00221 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/yellow.png new file mode 100644 index 000000000..e68b47dcc Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner_mask.png new file mode 100644 index 000000000..d238a4649 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/matter_scanner_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/black.png new file mode 100644 index 000000000..d85913037 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/blue.png new file mode 100644 index 000000000..ed4c8ec83 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/brown.png new file mode 100644 index 000000000..8a801ae35 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/cyan.png new file mode 100644 index 000000000..a2d0ba15c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/gray.png new file mode 100644 index 000000000..d98ad485b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/green.png new file mode 100644 index 000000000..9413a72ec Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/light_blue.png new file mode 100644 index 000000000..ada241389 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/light_gray.png new file mode 100644 index 000000000..cff27a29c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/lime.png new file mode 100644 index 000000000..cba2b8d85 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/magenta.png new file mode 100644 index 000000000..0898fe9f0 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/orange.png new file mode 100644 index 000000000..d37b45a4e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/pink.png new file mode 100644 index 000000000..296523788 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/purple.png new file mode 100644 index 000000000..355bd4d19 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/red.png new file mode 100644 index 000000000..585d173ba Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/white.png new file mode 100644 index 000000000..72788586a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/yellow.png new file mode 100644 index 000000000..b34e5a1ef Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame_mask.png new file mode 100644 index 000000000..2c6e5e7fc Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/mattercapacitorbank_frame_mask.png differ 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 000000000..1b53f9373 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/black.png differ 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 000000000..47eabcb9e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/blue.png differ 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 000000000..477efbcdd Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/brown.png differ 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 000000000..1808bac0f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/cyan.png differ 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 000000000..c31d5b9ce Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/gray.png differ 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 000000000..dc0ec59d8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/green.png differ 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 000000000..f790103f4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/light_blue.png differ 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 000000000..e70d121d7 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/light_gray.png differ 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 000000000..acc05367a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/lime.png differ 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 000000000..8de4317be Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/orange.png new file mode 100644 index 000000000..5c7be9f23 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/orange.png differ 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 000000000..488a78fae Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/pink.png differ 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 000000000..679edbb1d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/purple.png differ 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 000000000..003133d33 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/red.png differ 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 000000000..965f9af38 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/yellow.png new file mode 100644 index 000000000..5b1c87495 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/black.png new file mode 100644 index 000000000..34e94f8fa Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/blue.png new file mode 100644 index 000000000..1a92f493a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/blue.png differ 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 000000000..5af3beab1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/brown.png differ 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 000000000..0d6c11b7b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/cyan.png differ 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 000000000..05bab290b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/green.png new file mode 100644 index 000000000..e7c3a5275 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/light_blue.png new file mode 100644 index 000000000..7d0dc896f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/light_blue.png differ 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 000000000..43cf87d05 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/light_gray.png differ 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 000000000..da8664f0c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/magenta.png new file mode 100644 index 000000000..315bed999 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/orange.png new file mode 100644 index 000000000..9d9689adb Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/orange.png differ 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 000000000..7c1a38712 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/purple.png new file mode 100644 index 000000000..3c2087b8c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/purple.png differ 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 000000000..660b8d74c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/red.png differ 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 000000000..e156dcaf5 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/yellow.png new file mode 100644 index 000000000..5826623c1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2_mask.png new file mode 100644 index 000000000..075c02562 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press2_mask.png differ 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 000000000..939804355 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/plate_press_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/black.png new file mode 100644 index 000000000..aebe0254f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/blue.png new file mode 100644 index 000000000..9be548bba Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/brown.png new file mode 100644 index 000000000..a8c18419d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/cyan.png new file mode 100644 index 000000000..9973d3d63 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/gray.png new file mode 100644 index 000000000..55a1310e3 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/green.png new file mode 100644 index 000000000..2c25355f5 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/light_blue.png new file mode 100644 index 000000000..ee95f0589 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/light_gray.png new file mode 100644 index 000000000..908a83fad Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/lime.png new file mode 100644 index 000000000..31c617e1f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/magenta.png new file mode 100644 index 000000000..2abb254b9 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/orange.png new file mode 100644 index 000000000..f1ffb882c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/pink.png new file mode 100644 index 000000000..c650f32c4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/purple.png new file mode 100644 index 000000000..ae99b80c4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/red.png new file mode 100644 index 000000000..193e63917 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/white.png new file mode 100644 index 000000000..84edb77d3 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/yellow.png new file mode 100644 index 000000000..1e4a9621f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base_mask.png new file mode 100644 index 000000000..5a5e63caf Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_base_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/black.png new file mode 100644 index 000000000..605ec8b47 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/blue.png new file mode 100644 index 000000000..2aa78c3e6 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/brown.png new file mode 100644 index 000000000..2f58648f6 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/cyan.png new file mode 100644 index 000000000..f43cc916b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/gray.png new file mode 100644 index 000000000..9545c8a0a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/green.png new file mode 100644 index 000000000..30588f17c Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/light_blue.png new file mode 100644 index 000000000..e91f9e3f1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/light_gray.png new file mode 100644 index 000000000..9fd62ecb6 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/lime.png new file mode 100644 index 000000000..2365ceb5a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/magenta.png new file mode 100644 index 000000000..9e466451a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/orange.png new file mode 100644 index 000000000..df2906bb4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/pink.png new file mode 100644 index 000000000..27fd1cad5 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/purple.png new file mode 100644 index 000000000..0bfbce774 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/red.png new file mode 100644 index 000000000..6b45eb450 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/white.png new file mode 100644 index 000000000..e19f7b083 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/yellow.png new file mode 100644 index 000000000..32e5ee3ab Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0_mask.png new file mode 100644 index 000000000..ee71f13c1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_0_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/black.png new file mode 100644 index 000000000..244fb4402 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/blue.png new file mode 100644 index 000000000..0a895814b Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/brown.png new file mode 100644 index 000000000..8ceb49cc1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/cyan.png new file mode 100644 index 000000000..112b19c2f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/gray.png new file mode 100644 index 000000000..56c3324e8 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/green.png new file mode 100644 index 000000000..a983f228d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/light_blue.png new file mode 100644 index 000000000..bce45116a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/light_gray.png new file mode 100644 index 000000000..f95e1b181 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/lime.png new file mode 100644 index 000000000..52f3de7ab Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/magenta.png new file mode 100644 index 000000000..fe8c1b4bf Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/orange.png new file mode 100644 index 000000000..c58ae3f8a Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/pink.png new file mode 100644 index 000000000..44adb74a4 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/purple.png new file mode 100644 index 000000000..68ec1c718 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/red.png new file mode 100644 index 000000000..37df4f003 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/white.png new file mode 100644 index 000000000..ea5812fca Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/yellow.png new file mode 100644 index 000000000..255cd226d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1_mask.png new file mode 100644 index 000000000..ee71f13c1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_1_mask.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/black.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/black.png new file mode 100644 index 000000000..db4ac7519 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/black.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/blue.png new file mode 100644 index 000000000..ff3646e4f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/brown.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/brown.png new file mode 100644 index 000000000..46b2a1582 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/brown.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/cyan.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/cyan.png new file mode 100644 index 000000000..ece7aab06 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/cyan.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/gray.png new file mode 100644 index 000000000..1c2f85416 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/green.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/green.png new file mode 100644 index 000000000..ddfe438ae Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/green.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/light_blue.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/light_blue.png new file mode 100644 index 000000000..4e14fbf9e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/light_blue.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/light_gray.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/light_gray.png new file mode 100644 index 000000000..e3074ee9d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/light_gray.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/lime.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/lime.png new file mode 100644 index 000000000..b1fad6511 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/lime.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/magenta.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/magenta.png new file mode 100644 index 000000000..493bbaaeb Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/magenta.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/orange.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/orange.png new file mode 100644 index 000000000..2e969407e Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/orange.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/pink.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/pink.png new file mode 100644 index 000000000..7adf1e38d Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/pink.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/purple.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/purple.png new file mode 100644 index 000000000..a9a499803 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/purple.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/red.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/red.png new file mode 100644 index 000000000..88bdede3f Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/red.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/white.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/white.png new file mode 100644 index 000000000..839fbfe66 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/white.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/yellow.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/yellow.png new file mode 100644 index 000000000..1c915c8b6 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2/yellow.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2_mask.png b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2_mask.png new file mode 100644 index 000000000..ee71f13c1 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/block/powered_smoker_interior_2_mask.png differ diff --git a/src/main/resources/data/overdrive_that_matters/otm_recipe_finder/painter.json b/src/main/resources/data/overdrive_that_matters/otm_recipe_finder/painter.json new file mode 100644 index 000000000..c80a53af4 --- /dev/null +++ b/src/main/resources/data/overdrive_that_matters/otm_recipe_finder/painter.json @@ -0,0 +1,6 @@ +{ + "recipe_type": "overdrive_that_matters:painter", + "type": "overdrive_that_matters:simple", + "is_critical": false, + "ignore_damageables": true +} \ No newline at end of file diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/bottom/lab_elevator_bottom_a.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/bottom/lab_elevator_bottom_a.nbt deleted file mode 100644 index 601f6bc12..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/bottom/lab_elevator_bottom_a.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/bottom/lab_elevator_bottom_b.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/bottom/lab_elevator_bottom_b.nbt deleted file mode 100644 index fc8c36686..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/bottom/lab_elevator_bottom_b.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/lab_arena_0.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/lab_arena_0.nbt new file mode 100644 index 000000000..91e1743a4 Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/lab_arena_0.nbt differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/lab_arena_1.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/lab_arena_1.nbt new file mode 100644 index 000000000..dc8d66ccb Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/lab_arena_1.nbt differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/top/lab_elevator_top_a.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/top/lab_elevator_top_a.nbt deleted file mode 100644 index 7964fc2a6..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/top/lab_elevator_top_a.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/top/lab_elevator_top_b.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/top/lab_elevator_top_b.nbt deleted file mode 100644 index ebef98b25..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/center/top/lab_elevator_top_b.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridor_end.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridor_end.nbt deleted file mode 100644 index aef8121d1..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridor_end.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_a.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_a.nbt deleted file mode 100644 index 79a9de85e..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_a.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_b.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_b.nbt deleted file mode 100644 index 6722ef761..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_b.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_c.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_c.nbt deleted file mode 100644 index fab573f1c..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_c.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_cross.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_cross.nbt deleted file mode 100644 index 08a382cc9..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_cross.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_storage_a.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_storage_a.nbt deleted file mode 100644 index 12c1a0481..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_storage_a.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_t.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_t.nbt deleted file mode 100644 index 416a652ec..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_t.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_turn_a.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_turn_a.nbt deleted file mode 100644 index 597e48a17..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_turn_a.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_turn_a_room.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_turn_a_room.nbt deleted file mode 100644 index 70bf36724..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/corridors/corridor_turn_a_room.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/dead_end.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/dead_end.nbt new file mode 100644 index 000000000..80a839063 Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structures/laboratory/dead_end.nbt differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_0.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_0.nbt new file mode 100644 index 000000000..2aabd6086 Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_0.nbt differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_1.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_1.nbt new file mode 100644 index 000000000..5a592b1b6 Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_1.nbt differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_room_0.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_room_0.nbt new file mode 100644 index 000000000..f6933f512 Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_room_0.nbt differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_stairs_0.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_stairs_0.nbt new file mode 100644 index 000000000..f0a1e8f1b Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_stairs_0.nbt differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_turn_0.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_turn_0.nbt new file mode 100644 index 000000000..7d5c1d8cd Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corridor_turn_0.nbt differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corrior_t_0.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corrior_t_0.nbt new file mode 100644 index 000000000..a005157f9 Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/corrior_t_0.nbt differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/generator_room_0.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/generator_room_0.nbt new file mode 100644 index 000000000..be5743718 Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/generator_room_0.nbt differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/portal_room_0.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/portal_room_0.nbt new file mode 100644 index 000000000..9f602edbd Binary files /dev/null and b/src/main/resources/data/overdrive_that_matters/structures/laboratory/main/portal_room_0.nbt differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/corridor_cross.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/corridor_cross.nbt deleted file mode 100644 index 08a382cc9..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/corridor_cross.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/corridor_t.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/corridor_t.nbt deleted file mode 100644 index 416a652ec..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/corridor_t.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/corridor_turn_a.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/corridor_turn_a.nbt deleted file mode 100644 index 597e48a17..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/corridor_turn_a.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/corridor_turn_a_room.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/corridor_turn_a_room.nbt deleted file mode 100644 index 70bf36724..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/corridor_turn_a_room.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/generator_room.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/generator_room.nbt deleted file mode 100644 index cdfda4d8c..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/generator_room.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/lab_chamber_a.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/lab_chamber_a.nbt deleted file mode 100644 index ee620bbd4..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/lab_chamber_a.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/lab_chamber_b.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/lab_chamber_b.nbt deleted file mode 100644 index 0ed753560..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/lab_chamber_b.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/mech_bay.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/mech_bay.nbt deleted file mode 100644 index cf13e5b35..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/mech_bay.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/misc_a.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/misc_a.nbt deleted file mode 100644 index 6d5834ea5..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/misc_a.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/office_a.nbt b/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/office_a.nbt deleted file mode 100644 index 1cc37bf40..000000000 Binary files a/src/main/resources/data/overdrive_that_matters/structures/laboratory/rooms/office_a.nbt and /dev/null differ diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/structure/laboratory.json b/src/main/resources/data/overdrive_that_matters/worldgen/structure/laboratory.json index b669b3896..193c4560e 100644 --- a/src/main/resources/data/overdrive_that_matters/worldgen/structure/laboratory.json +++ b/src/main/resources/data/overdrive_that_matters/worldgen/structure/laboratory.json @@ -3,9 +3,8 @@ "biomes": "#overdrive_that_matters:laboratory", "max_distance_from_center": 100, "size": 7, - "project_start_to_heightmap": "WORLD_SURFACE_WG", "start_height": { - "absolute": 0 + "absolute": -13 }, "spawn_overrides": { "monster": { @@ -21,7 +20,7 @@ } }, "start_jigsaw_name": "overdrive_that_matters:laboratory_anchor", - "start_pool": "overdrive_that_matters:laboratory/center_top", + "start_pool": "overdrive_that_matters:laboratory/center", "step": "underground_decoration", "terrain_adaption": "bury", "use_expansion_hack": false diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/structure_set/laboratory.json b/src/main/resources/data/overdrive_that_matters/worldgen/structure_set/laboratory.json index e041083cd..17eec2b53 100644 --- a/src/main/resources/data/overdrive_that_matters/worldgen/structure_set/laboratory.json +++ b/src/main/resources/data/overdrive_that_matters/worldgen/structure_set/laboratory.json @@ -1,9 +1,9 @@ { "placement": { "type": "minecraft:random_spread", - "salt": 20083232, + "salt": 20803232, "separation": 8, - "spacing": 500 + "spacing": 24 }, "structures": [ { diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/center_top.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/center.json similarity index 56% rename from src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/center_top.json rename to src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/center.json index 1772c4330..a1755480b 100644 --- a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/center_top.json +++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/center.json @@ -1,24 +1,24 @@ { - "name": "overdrive_that_matters:center_top", - "fallback": "minecraft:empty", + "name": "overdrive_that_matters:center", "elements": [ { "element": { "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/center/top/lab_elevator_top_a", + "location": "overdrive_that_matters:laboratory/center/lab_arena_0", "processors": "minecraft:empty", "projection": "rigid" }, "weight": 1 - }, - { + }, + { "element": { "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/center/top/lab_elevator_top_b", + "location": "overdrive_that_matters:laboratory/center/lab_arena_1", "processors": "minecraft:empty", "projection": "rigid" }, "weight": 1 - } - ] + } + ], + "fallback": "minecraft:empty" } \ No newline at end of file diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/center_bottom.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/center_bottom.json deleted file mode 100644 index 3069ccc25..000000000 --- a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/center_bottom.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "overdrive_that_matters:center_bottom", - "fallback": "minecraft:empty", - "elements": [ - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/center/bottom/lab_elevator_bottom_a", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 1 - }, - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/center/bottom/lab_elevator_bottom_b", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 1 - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/corridor_end.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/fallback_pool.json similarity index 52% rename from src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/corridor_end.json rename to src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/fallback_pool.json index 939445bf8..0a49ae437 100644 --- a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/corridor_end.json +++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/fallback_pool.json @@ -1,15 +1,15 @@ { - "name": "overdrive_that_matters:corridor_end", - "fallback": "minecraft:empty", +"name": "overdrive_that_matters:lab_fallback", "elements": [ - { + { "element": { "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/corridor_end", + "location": "overdrive_that_matters:laboratory/dead_end", "processors": "minecraft:empty", "projection": "rigid" }, "weight": 1 - } - ] + } + ], + "fallback": "minecraft:empty" } \ No newline at end of file diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/corridors.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/main.json similarity index 63% rename from src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/corridors.json rename to src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/main.json index 1d817f716..02e63ee92 100644 --- a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/corridors.json +++ b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/main.json @@ -1,20 +1,37 @@ { - "name": "overdrive_that_matters:corridors", - "fallback": "minecraft:empty", + "name": "overdrive_that_matters:main", "elements": [ - { + { "element": { "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/corridors/corridor_a", + "location": "overdrive_that_matters:laboratory/main/corridor_0", "processors": "minecraft:empty", "projection": "rigid" }, - "weight": 3 + "weight": 4 }, - { + { "element": { "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/corridors/corridor_b", + "location": "overdrive_that_matters:laboratory/main/corridor_1", + "processors": "minecraft:empty", + "projection": "rigid" + }, + "weight": 4 + }, + { + "element": { + "element_type": "minecraft:single_pool_element", + "location": "overdrive_that_matters:laboratory/main/corridor_turn_0", + "processors": "minecraft:empty", + "projection": "rigid" + }, + "weight": 4 + }, + { + "element": { + "element_type": "minecraft:single_pool_element", + "location": "overdrive_that_matters:laboratory/main/corrior_t_0", "processors": "minecraft:empty", "projection": "rigid" }, @@ -23,7 +40,16 @@ { "element": { "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/corridors/corridor_c", + "location": "overdrive_that_matters:laboratory/main/corridor_room_0", + "processors": "minecraft:empty", + "projection": "rigid" + }, + "weight": 3 + }, + { + "element": { + "element_type": "minecraft:single_pool_element", + "location": "overdrive_that_matters:laboratory/main/corridor_stairs_0", "processors": "minecraft:empty", "projection": "rigid" }, @@ -32,7 +58,7 @@ { "element": { "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/corridors/corridor_turn_a", + "location": "overdrive_that_matters:laboratory/main/generator_room_0", "processors": "minecraft:empty", "projection": "rigid" }, @@ -41,38 +67,12 @@ { "element": { "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/corridors/corridor_turn_a_room", + "location": "overdrive_that_matters:laboratory/main/portal_room_0", "processors": "minecraft:empty", "projection": "rigid" }, "weight": 1 - }, - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/corridors/corridor_t", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 2 - }, - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/corridors/corridor_cross", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 1 - }, - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/corridors/corridor_storage_a", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 2 } - ] + ], + "fallback": "overdrive_that_matters:laboratory/fallback_pool" } \ No newline at end of file diff --git a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/rooms.json b/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/rooms.json deleted file mode 100644 index 254ada5b0..000000000 --- a/src/main/resources/data/overdrive_that_matters/worldgen/template_pool/laboratory/rooms.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "name": "overdrive_that_matters:rooms", - "fallback": "minecraft:empty", - "elements": [ - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/rooms/lab_chamber_a", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 4 - }, - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/rooms/lab_chamber_b", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 2 - }, - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/rooms/generator_room", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 3 - }, - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/corridors/corridor_turn_a", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 3 - }, - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/corridors/corridor_turn_a_room", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 3 - }, - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/corridors/corridor_t", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 3 - }, - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/corridors/corridor_cross", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 2 - }, - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/rooms/mech_bay", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 1 - }, - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/rooms/misc_a", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 3 - }, - { - "element": { - "element_type": "minecraft:single_pool_element", - "location": "overdrive_that_matters:laboratory/rooms/office_a", - "processors": "minecraft:empty", - "projection": "rigid" - }, - "weight": 3 - } - ] -} \ No newline at end of file