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 665b87a93..545302ddb 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt @@ -4,6 +4,7 @@ import net.minecraft.core.Direction import net.minecraft.data.recipes.ShapedRecipeBuilder import net.minecraft.data.recipes.ShapelessRecipeBuilder import net.minecraft.resources.ResourceLocation +import net.minecraft.world.item.DyeColor import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.IronBarsBlock import net.minecraftforge.client.model.generators.ConfiguredModel @@ -119,21 +120,21 @@ object DataGen { } private fun decoratives(list: ColoredDecorativeBlock) { - for (block in list.coloredBlocks) { + for (block in list.blocks.values) { decorativeCubeAll(block) } - for (item in list.coloredItems) { + for (item in list.items.values) { itemModelProvider.block(item) } } private fun decoratives(list: DecorativeBlock) { - for (block in list.blocks) { + for (block in list.blocks.values) { decorativeCubeAll(block) } - for (item in list.items) { + for (item in list.items.values) { itemModelProvider.block(item) } } @@ -173,7 +174,7 @@ object DataGen { decoratives(MRegistry.VENT) decoratives(MRegistry.VENT_ALTERNATIVE) - for (glass in MRegistry.INDUSTRIAL_GLASS.blocks) { + for (glass in MRegistry.INDUSTRIAL_GLASS.allBlocks.values) { decorativeCubeAll(glass) } @@ -186,7 +187,7 @@ object DataGen { blockModelProvider.resourceCubeAll(MBlocks.DEEPSLATE_TRITANIUM_ORE) blockModelProvider.lambda { - for (crate in MRegistry.CARGO_CRATES.coloredBlocks) { + for (crate in MRegistry.CARGO_CRATES.blocks.values) { it.withExistingParent("${crate.registryName!!.path}_closed", ResourceLocation(OverdriveThatMatters.MOD_ID, "${MNames.CARGO_CRATE}_closed")) .texture("texture", "block/cargo_crates/${crate.registryName!!.path}") .texture("particle", "block/cargo_crates/${crate.registryName!!.path}") @@ -199,8 +200,8 @@ object DataGen { decorativeColumn(MBlocks.TRITANIUM_STRIPED_BLOCK, "tritanium_striped_block", "tritanium_block") - for ((i, glass) in MRegistry.INDUSTRIAL_GLASS_PANE.blocks.withIndex()) { - val name = MRegistry.INDUSTRIAL_GLASS.blocks[i].registryName!!.path + for ((color, glass) in MRegistry.INDUSTRIAL_GLASS_PANE.blocks) { + val name = MRegistry.INDUSTRIAL_GLASS.blocks[color]!!.registryName!!.path val textureSide = ResourceLocation(MOD_ID, "block/decorative/$name") val textureRailing = ResourceLocation(MOD_ID, "block/decorative/industrial_glass_frame") pane(glass, textureSide, textureRailing) @@ -288,7 +289,7 @@ object DataGen { block(MBlocks.MATTER_RECYCLER) lambda { - for (crate in MRegistry.CARGO_CRATES.coloredBlocks) { + for (crate in MRegistry.CARGO_CRATES.allBlocks.values) { getVariantBuilder(crate).forAllStates { return@forAllStates arrayOf( ConfiguredModel.builder() @@ -379,17 +380,17 @@ object DataGen { block(MItems.TRITANIUM_RAW_BLOCK) block(MItems.ITEM_MONITOR) - MRegistry.VENT.items.forEach(this::block) - MRegistry.VENT_ALTERNATIVE.items.forEach(this::block) - MRegistry.TRITANIUM_BLOCK.items.forEach(this::block) - MRegistry.INDUSTRIAL_GLASS.items.forEach(this::block) + MRegistry.VENT.items.values.forEach(this::block) + MRegistry.VENT_ALTERNATIVE.items.values.forEach(this::block) + MRegistry.TRITANIUM_BLOCK.items.values.forEach(this::block) + MRegistry.INDUSTRIAL_GLASS.items.values.forEach(this::block) - for (block in MRegistry.TRITANIUM_STRIPED_BLOCK.items) { + for (block in MRegistry.TRITANIUM_STRIPED_BLOCK.flatItems) { block(block) } - for ((i, glass) in MRegistry.INDUSTRIAL_GLASS_PANE.items.withIndex()) { - generated(glass, ResourceLocation(MOD_ID, "block/decorative/${MRegistry.INDUSTRIAL_GLASS.items[i].registryName!!.path}")) + for ((color, glass) in MRegistry.INDUSTRIAL_GLASS_PANE.allItems) { + generated(glass, ResourceLocation(MOD_ID, "block/decorative/${MRegistry.INDUSTRIAL_GLASS.allItems[color]!!.registryName!!.path}")) } blocks(MItems.CRATE_LIST) @@ -435,7 +436,7 @@ object DataGen { generated(MItems.MATTER_DUST) - for (item in MRegistry.CARGO_CRATES.items) { + for (item in MRegistry.CARGO_CRATES.allItems.values) { block(item, "${item.registryName!!.path}_closed") } @@ -573,53 +574,34 @@ object DataGen { .unlockedBy("has_tritanium_glass", has(MRegistry.INDUSTRIAL_GLASS.item)) .save(consumer) - val mapping = arrayOf( - Tags.Items.DYES_WHITE, - Tags.Items.DYES_ORANGE, - Tags.Items.DYES_MAGENTA, - Tags.Items.DYES_LIGHT_BLUE, - Tags.Items.DYES_YELLOW, - Tags.Items.DYES_LIME, - Tags.Items.DYES_PINK, - Tags.Items.DYES_GRAY, - Tags.Items.DYES_LIGHT_GRAY, - Tags.Items.DYES_CYAN, - Tags.Items.DYES_PURPLE, - Tags.Items.DYES_BLUE, - Tags.Items.DYES_BROWN, - Tags.Items.DYES_GREEN, - Tags.Items.DYES_RED, - Tags.Items.DYES_BLACK, + val mappingUpgradeVanilla = mapOf( + DyeColor.WHITE to net.minecraft.world.item.Items.WHITE_STAINED_GLASS, + DyeColor.ORANGE to net.minecraft.world.item.Items.ORANGE_STAINED_GLASS, + DyeColor.MAGENTA to net.minecraft.world.item.Items.MAGENTA_STAINED_GLASS, + DyeColor.LIGHT_BLUE to net.minecraft.world.item.Items.LIGHT_BLUE_STAINED_GLASS, + DyeColor.YELLOW to net.minecraft.world.item.Items.YELLOW_STAINED_GLASS, + DyeColor.LIME to net.minecraft.world.item.Items.LIME_STAINED_GLASS, + DyeColor.PINK to net.minecraft.world.item.Items.PINK_STAINED_GLASS, + DyeColor.GRAY to net.minecraft.world.item.Items.GRAY_STAINED_GLASS, + DyeColor.LIGHT_GRAY to net.minecraft.world.item.Items.LIGHT_GRAY_STAINED_GLASS, + DyeColor.CYAN to net.minecraft.world.item.Items.CYAN_STAINED_GLASS, + DyeColor.PURPLE to net.minecraft.world.item.Items.PURPLE_STAINED_GLASS, + DyeColor.BLUE to net.minecraft.world.item.Items.BLUE_STAINED_GLASS, + DyeColor.BROWN to net.minecraft.world.item.Items.BROWN_STAINED_GLASS, + DyeColor.GREEN to net.minecraft.world.item.Items.GREEN_STAINED_GLASS, + DyeColor.RED to net.minecraft.world.item.Items.RED_STAINED_GLASS, + DyeColor.BLACK to net.minecraft.world.item.Items.BLACK_STAINED_GLASS, ) - val mappingUpgradeVanilla = arrayOf( - net.minecraft.world.item.Items.WHITE_STAINED_GLASS, - net.minecraft.world.item.Items.ORANGE_STAINED_GLASS, - net.minecraft.world.item.Items.MAGENTA_STAINED_GLASS, - net.minecraft.world.item.Items.LIGHT_BLUE_STAINED_GLASS, - net.minecraft.world.item.Items.YELLOW_STAINED_GLASS, - net.minecraft.world.item.Items.LIME_STAINED_GLASS, - net.minecraft.world.item.Items.PINK_STAINED_GLASS, - net.minecraft.world.item.Items.GRAY_STAINED_GLASS, - net.minecraft.world.item.Items.LIGHT_GRAY_STAINED_GLASS, - net.minecraft.world.item.Items.CYAN_STAINED_GLASS, - net.minecraft.world.item.Items.PURPLE_STAINED_GLASS, - net.minecraft.world.item.Items.BLUE_STAINED_GLASS, - net.minecraft.world.item.Items.BROWN_STAINED_GLASS, - net.minecraft.world.item.Items.GREEN_STAINED_GLASS, - net.minecraft.world.item.Items.RED_STAINED_GLASS, - net.minecraft.world.item.Items.BLACK_STAINED_GLASS, - ) - - for ((i, tag) in mapping.withIndex()) { - val item = MRegistry.INDUSTRIAL_GLASS.coloredItems[i] - val paneItem = MRegistry.INDUSTRIAL_GLASS_PANE.coloredItems[i] - val mappedVanilla = mappingUpgradeVanilla[i] + for (color in DyeColor.values()) { + val item = MRegistry.INDUSTRIAL_GLASS.items[color]!! + val paneItem = MRegistry.INDUSTRIAL_GLASS_PANE.items[color]!! + val mappedVanilla = mappingUpgradeVanilla[color]!! // обычная покраска ShapelessRecipeBuilder(item, 8) .requires(MRegistry.INDUSTRIAL_GLASS.item, 8) - .requires(tag) + .requires(color.tag) .unlockedBy("has_tritanium_glass", has(MRegistry.INDUSTRIAL_GLASS.item)) .save(consumer) @@ -633,7 +615,7 @@ object DataGen { ShapelessRecipeBuilder(paneItem, 8) .requires(MRegistry.INDUSTRIAL_GLASS_PANE.item, 8) - .requires(tag) + .requires(color.tag) .unlockedBy("has_tritanium_glass_pane", has(MRegistry.INDUSTRIAL_GLASS_PANE.item)) .save(consumer) 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 5b620cc89..7ee15bcb0 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 @@ -213,22 +213,9 @@ class MatteryLanguageProvider(private val gen: DataGenerator) { .build() fun add(list: ColoredDecorativeBlock, toFormat: String) { - slave.add(list.whiteBlock, toFormat.format(white)) - slave.add(list.orangeBlock, toFormat.format(orange)) - slave.add(list.magentaBlock, toFormat.format(magenta)) - slave.add(list.lightBlueBlock, toFormat.format(lightBlue)) - slave.add(list.yellowBlock, toFormat.format(yellow)) - slave.add(list.limeBlock, toFormat.format(lime)) - slave.add(list.pinkBlock, toFormat.format(pink)) - slave.add(list.grayBlock, toFormat.format(gray)) - slave.add(list.lightGrayBlock, toFormat.format(lightGray)) - slave.add(list.cyanBlock, toFormat.format(cyan)) - slave.add(list.purpleBlock, toFormat.format(purple)) - slave.add(list.blueBlock, toFormat.format(blue)) - slave.add(list.brownBlock, toFormat.format(brown)) - slave.add(list.greenBlock, toFormat.format(green)) - slave.add(list.redBlock, toFormat.format(red)) - slave.add(list.blackBlock, toFormat.format(black)) + for ((color, target) in dyeClassPairs) { + slave.add(list.blocks[color]!!, toFormat.format(target)) + } } fun add( 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 ce73cd29e..187b2c139 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 @@ -101,7 +101,7 @@ class LootTables(generator: DataGenerator) : LootTableProvider(generator) { blocks.forEach(this::dropsSelf) } - fun dropsSelf(blocks: List) { + fun dropsSelf(blocks: Collection) { blocks.forEach(this::dropsSelf) } 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 980a3a558..9abe73580 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 @@ -1,16 +1,11 @@ package ru.dbotthepony.mc.otm.datagen.loot -import ru.dbotthepony.mc.otm.block.MatteryBlock import ru.dbotthepony.mc.otm.block.entity.ChemicalGeneratorBlockEntity import ru.dbotthepony.mc.otm.block.entity.EnergyCounterBlockEntity -import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity -import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity.Companion.INVENTORY_KEY import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity.Companion.ENERGY_KEY -import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity.Companion.BATTERY_KEY import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity.Companion.MATTER_STORAGE_KEY import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity.Companion.REDSTONE_SETTING_KEY import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity.Companion.REDSTONE_SIGNAL_KEY -import ru.dbotthepony.mc.otm.block.entity.MatteryWorkerBlockEntity import ru.dbotthepony.mc.otm.block.entity.matter.MatterBottlerBlockEntity import ru.dbotthepony.mc.otm.block.entity.storage.AbstractStorageImportExport.Companion.FILTER_KEY import ru.dbotthepony.mc.otm.block.entity.storage.StoragePowerSupplierBlockEntity @@ -20,15 +15,15 @@ import ru.dbotthepony.mc.otm.registry.MRegistry fun addLootTables(lootTables: LootTables) { lootTables.dropsSelf(MBlocks.CRATE_LIST) - lootTables.dropsSelf(MRegistry.CARGO_CRATES.blocks) - lootTables.dropsSelf(MRegistry.INDUSTRIAL_GLASS.blocks) - lootTables.dropsSelf(MRegistry.INDUSTRIAL_GLASS_PANE.blocks) - lootTables.dropsSelf(MRegistry.TRITANIUM_BLOCK.blocks) - lootTables.dropsSelf(MRegistry.VENT.blocks) - lootTables.dropsSelf(MRegistry.VENT_ALTERNATIVE.blocks) - lootTables.dropsSelf(MRegistry.FLOOR_TILES.coloredBlocks) - lootTables.dropsSelf(MRegistry.UNREFINED_FLOOR_TILES.coloredBlocks) - lootTables.dropsSelf(MRegistry.TRITANIUM_STRIPED_BLOCK.blocks) + lootTables.dropsSelf(MRegistry.CARGO_CRATES.blocks.values) + lootTables.dropsSelf(MRegistry.INDUSTRIAL_GLASS.blocks.values) + lootTables.dropsSelf(MRegistry.INDUSTRIAL_GLASS_PANE.blocks.values) + lootTables.dropsSelf(MRegistry.TRITANIUM_BLOCK.blocks.values) + lootTables.dropsSelf(MRegistry.VENT.blocks.values) + lootTables.dropsSelf(MRegistry.VENT_ALTERNATIVE.blocks.values) + lootTables.dropsSelf(MRegistry.FLOOR_TILES.blocks.values) + lootTables.dropsSelf(MRegistry.UNREFINED_FLOOR_TILES.blocks.values) + lootTables.dropsSelf(MRegistry.TRITANIUM_STRIPED_BLOCK.flatBlocks) lootTables.dropsSelf(MBlocks.CARBON_FIBRE_BLOCK) lootTables.dropsSelf(MBlocks.TRITANIUM_RAW_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 c87fc106d..c2f57c610 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 @@ -67,7 +67,7 @@ class BlockMatteryModelProvider(event: GatherDataEvent) : MatteryModelProvider(e super.registerModels() for ((path, texture) in cubeAll) { - cubeAll(path, texture) + val s = cubeAll(path, texture) } for ((path, end, side) in cubeColumn) { 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 467d64969..2c145522c 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 @@ -5,10 +5,8 @@ import net.minecraft.data.recipes.ShapedRecipeBuilder import net.minecraft.data.recipes.ShapelessRecipeBuilder import net.minecraft.data.recipes.SimpleCookingRecipeBuilder import net.minecraft.resources.ResourceLocation -import net.minecraft.world.item.DyeColor import net.minecraft.world.item.Items import net.minecraft.world.item.crafting.Ingredient -import net.minecraft.world.level.block.Blocks import net.minecraftforge.common.Tags import net.minecraftforge.common.Tags.Items.COBBLESTONE import ru.dbotthepony.mc.otm.OverdriveThatMatters @@ -20,7 +18,7 @@ import ru.dbotthepony.mc.otm.core.registryName import java.util.function.Consumer fun addCraftingTableRecipes(consumer: Consumer) { - for ((dye, crate) in MRegistry.CARGO_CRATES.mappedColoredBlocks) { + for ((dye, crate) in MRegistry.CARGO_CRATES.blocks) { ShapedRecipeBuilder(crate, 1) .define('P', MItemTags.PLATE_TRITANIUM) .define('C', Tags.Items.CHESTS) @@ -77,7 +75,7 @@ fun addCraftingTableRecipes(consumer: Consumer) { .unlockedBy(MItemTags.PLATE_TRITANIUM) .build(consumer) - for ((color, item) in MRegistry.TRITANIUM_BLOCK.mappedColoredItems) { + for ((color, item) in MRegistry.TRITANIUM_BLOCK.items) { MatteryRecipe(item, 8) .row(MRegistry.TRITANIUM_BLOCK.item, MRegistry.TRITANIUM_BLOCK.item, MRegistry.TRITANIUM_BLOCK.item) .row(MRegistry.TRITANIUM_BLOCK.item, color.tag, MRegistry.TRITANIUM_BLOCK.item) @@ -90,7 +88,7 @@ fun addCraftingTableRecipes(consumer: Consumer) { for ((item, colors) in MRegistry.TRITANIUM_STRIPED_BLOCK.itemsWithColor) { val (base, stripe) = colors - val original = MRegistry.TRITANIUM_BLOCK.mappedColoredItems[base]!! + val original = MRegistry.TRITANIUM_BLOCK.items[base]!! MatteryRecipe(item, 8) .row(original, original, original) @@ -107,7 +105,7 @@ fun addCraftingTableRecipes(consumer: Consumer) { .unlockedBy(MItemTags.PLATE_TRITANIUM) .build(consumer) - for ((color, item) in MRegistry.VENT.mappedColoredItems) { + for ((color, item) in MRegistry.VENT.items) { MatteryRecipe(item, 8) .row(MRegistry.VENT.item, MRegistry.VENT.item, MRegistry.VENT.item) .row(MRegistry.VENT.item, color.tag, MRegistry.VENT.item) @@ -117,8 +115,8 @@ fun addCraftingTableRecipes(consumer: Consumer) { .build(consumer) } - for ((color, item) in MRegistry.VENT_ALTERNATIVE.mappedColoredItemsAll) { - val other = MRegistry.VENT.mappedColoredItemsAll[color]!! + for ((color, item) in MRegistry.VENT_ALTERNATIVE.allItems) { + val other = MRegistry.VENT.allItems[color]!! ShapelessRecipeBuilder(item, 1).requires(other).unlockedBy(item).save(consumer) ShapelessRecipeBuilder(other, 1).requires(item).unlockedBy(other).save(consumer, ResourceLocation(OverdriveThatMatters.MOD_ID, "${other.registryName!!.path}_from_alt")) } @@ -265,7 +263,7 @@ fun addCraftingTableRecipes(consumer: Consumer) { .build(consumer) // Напольная плитка - for ((color, unrefinedItem) in MRegistry.UNREFINED_FLOOR_TILES.mappedColoredItems) { + for ((color, unrefinedItem) in MRegistry.UNREFINED_FLOOR_TILES.items) { MatteryRecipe(unrefinedItem, 24) .row(Items.CLAY, Items.SAND, Items.CLAY) .row(Items.SAND, color.tag, Items.SAND) @@ -274,13 +272,13 @@ fun addCraftingTableRecipes(consumer: Consumer) { .build(consumer) } - for ((color, refinedItem) in MRegistry.FLOOR_TILES.mappedColoredItems) { + for ((color, refinedItem) in MRegistry.FLOOR_TILES.items) { SimpleCookingRecipeBuilder.smelting( - Ingredient.of(MRegistry.UNREFINED_FLOOR_TILES.mappedColoredItems[color]!!), + Ingredient.of(MRegistry.UNREFINED_FLOOR_TILES.items[color]!!), refinedItem, 0.15f, 200 - ).unlockedBy("has_unrefined_block", has(MRegistry.UNREFINED_FLOOR_TILES.mappedColoredItems[color]!!)).save(consumer) + ).unlockedBy("has_unrefined_block", has(MRegistry.UNREFINED_FLOOR_TILES.items[color]!!)).save(consumer) } // станция андроида 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 646876d40..9a8f9e4bd 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 @@ -60,18 +60,18 @@ fun addTags(tagsProvider: TagsProvider) { tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_STRIPED_BLOCK, Tiers.IRON) tagsProvider.requiresPickaxe(MBlocks.CARBON_FIBRE_BLOCK, Tiers.IRON) - tagsProvider.requiresPickaxe(MRegistry.CARGO_CRATES.blocks, Tiers.IRON) + tagsProvider.requiresPickaxe(MRegistry.CARGO_CRATES.blocks.values, Tiers.IRON) - tagsProvider.requiresPickaxe(MRegistry.VENT.blocks, Tiers.IRON) - tagsProvider.requiresPickaxe(MRegistry.VENT_ALTERNATIVE.blocks, Tiers.IRON) - tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_BLOCK.blocks, Tiers.IRON) - tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_STRIPED_BLOCK.blocks, Tiers.IRON) - tagsProvider.requiresPickaxe(MRegistry.FLOOR_TILES.coloredBlocks) + tagsProvider.requiresPickaxe(MRegistry.VENT.blocks.values, Tiers.IRON) + tagsProvider.requiresPickaxe(MRegistry.VENT_ALTERNATIVE.blocks.values, Tiers.IRON) + tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_BLOCK.blocks.values, Tiers.IRON) + tagsProvider.requiresPickaxe(MRegistry.TRITANIUM_STRIPED_BLOCK.flatBlocks, Tiers.IRON) + tagsProvider.requiresPickaxe(MRegistry.FLOOR_TILES.blocks.values) - tagsProvider.requiresShovel(MRegistry.UNREFINED_FLOOR_TILES.coloredBlocks) + tagsProvider.requiresShovel(MRegistry.UNREFINED_FLOOR_TILES.blocks.values) - tagsProvider.requiresPickaxe(MRegistry.INDUSTRIAL_GLASS.blocks, Tiers.STONE) - tagsProvider.requiresPickaxe(MRegistry.INDUSTRIAL_GLASS_PANE.blocks, Tiers.STONE) + tagsProvider.requiresPickaxe(MRegistry.INDUSTRIAL_GLASS.blocks.values, Tiers.STONE) + tagsProvider.requiresPickaxe(MRegistry.INDUSTRIAL_GLASS_PANE.blocks.values, Tiers.STONE) tagsProvider.requiresPickaxe(MBlocks.CRATE_LIST, Tiers.STONE) tagsProvider.requiresPickaxe(listOf( diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/TagsProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/TagsProvider.kt index 93b3d92ee..a9c30bacd 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/TagsProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/TagsProvider.kt @@ -23,9 +23,9 @@ interface MTagAppender { return any } - fun add(values: List): TagsProvider + fun add(values: Collection): TagsProvider - fun addSafe(values: List): Boolean { + fun addSafe(values: Collection): Boolean { var any = false for (value in values) any = addSafe(value) return any @@ -42,9 +42,9 @@ interface ForgeTagAppender : MTagAppender { return any } - fun add(key: String, values: List): TagsProvider + fun add(key: String, values: Collection): TagsProvider - fun addSafe(key: String, values: List): Boolean { + fun addSafe(key: String, values: Collection): Boolean { var any = false for (value in values) any = addSafe(key, value) return any @@ -89,7 +89,7 @@ class TagsProvider( return this@TagsProvider } - override fun add(values: List): TagsProvider { + override fun add(values: Collection): TagsProvider { for (value in values) add(value) return this@TagsProvider } @@ -129,7 +129,7 @@ class TagsProvider( return this@TagsProvider } - override fun add(key: String, values: List): TagsProvider { + override fun add(key: String, values: Collection): TagsProvider { for (value in values) add(key, value) return this@TagsProvider } @@ -146,7 +146,7 @@ class TagsProvider( return parent.add(*values) } - override fun add(values: List): TagsProvider { + override fun add(values: Collection): TagsProvider { return parent.add(values) } } @@ -228,7 +228,7 @@ class TagsProvider( return this } - fun requiresPickaxe(blocks: List, tier: Tier? = null): TagsProvider { + fun requiresPickaxe(blocks: Collection, tier: Tier? = null): TagsProvider { for (block in blocks) requiresPickaxe(block, tier) return this } @@ -250,7 +250,7 @@ class TagsProvider( return this } - fun requiresShovel(blocks: List, tier: Tier? = null): TagsProvider { + fun requiresShovel(blocks: Collection, tier: Tier? = null): TagsProvider { for (block in blocks) requiresShovel(block, tier) return this } @@ -267,7 +267,7 @@ class TagsProvider( return this } - fun requiresAxe(blocks: List, tier: Tier? = null): TagsProvider { + fun requiresAxe(blocks: Collection, tier: Tier? = null): TagsProvider { for (block in blocks) requiresAxe(block, tier) return this } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LazyList.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LazyList.kt index b2acbe5d8..4df8a9193 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LazyList.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/LazyList.kt @@ -5,9 +5,16 @@ import com.google.common.collect.ImmutableSet import net.minecraft.world.item.DyeColor import net.minecraftforge.registries.RegistryObject -class LazyList(private val getters: ImmutableList<() -> T>) : AbstractList() { - constructor(vararg getters: () -> T) : this(ImmutableList.copyOf(getters)) - constructor(getters: List<() -> T>) : this(ImmutableList.copyOf(getters)) +class LazyList : AbstractList { + private val getters: Array<() -> T> + + constructor(vararg getters: () -> T) : super() { + this.getters = Array(getters.size) { getters[it] } + } + + constructor(getters: List<() -> T>) : super() { + this.getters = Array(getters.size) { getters[it] } + } override val size: Int get() = getters.size @@ -24,7 +31,7 @@ class LazyMap : AbstractMap { entries = ImmutableSet.copyOf(mValues.map { Entry(it.first, it.second) }) } - constructor(mValues: List T>>) : super() { + constructor(mValues: Collection T>>) : super() { entries = ImmutableSet.copyOf(mValues.map { Entry(it.first, it.second) }) } @@ -42,7 +49,7 @@ class LazyMap : AbstractMap { } class RegistryObjectList(private vararg val getters: RegistryObject) : AbstractList() { - constructor(getters: List>) : this(*getters.toTypedArray()) + constructor(getters: Collection>) : this(*getters.toTypedArray()) override val size: Int get() = getters.size 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 e9ae3b22c..8856b9184 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt @@ -35,7 +35,7 @@ object MBlockEntities { val BLACK_HOLE: BlockEntityType<*> by registry.register(MNames.BLACK_HOLE) { BlockEntityType.Builder.of(::BlackHoleBlockEntity, MBlocks.BLACK_HOLE).build(null) } val CARGO_CRATE: BlockEntityType<*> by registry.register(MNames.CARGO_CRATE) { BlockEntityType.Builder.of( ::CargoCrateBlockEntity, - *MRegistry.CARGO_CRATES.blocks.toTypedArray() + *MRegistry.CARGO_CRATES.blocks.values.toTypedArray() ).build(null) } val DRIVE_RACK: BlockEntityType<*> by registry.register(MNames.DRIVE_RACK) { BlockEntityType.Builder.of(::DriveRackBlockEntity, MBlocks.DRIVE_RACK).build(null) } val ITEM_MONITOR: BlockEntityType<*> by registry.register(MNames.ITEM_MONITOR) { BlockEntityType.Builder.of(::ItemMonitorBlockEntity, MBlocks.ITEM_MONITOR).build(null) } 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 dde7369f4..519619f60 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt @@ -33,11 +33,11 @@ object MBlocks { private fun registerClient(event: FMLClientSetupEvent) { val translucent = RenderType.translucent() - for (block in MRegistry.INDUSTRIAL_GLASS.blocks) { + for (block in MRegistry.INDUSTRIAL_GLASS.blocks.values) { ItemBlockRenderTypes.setRenderLayer(block, translucent) } - for (block in MRegistry.INDUSTRIAL_GLASS_PANE.blocks) { + for (block in MRegistry.INDUSTRIAL_GLASS_PANE.blocks.values) { ItemBlockRenderTypes.setRenderLayer(block, translucent) } } 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 f11e2ce90..ff2c6a960 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 @@ -9,9 +9,8 @@ import net.minecraft.world.level.block.state.BlockBehaviour import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.RegistryObject import ru.dbotthepony.mc.otm.OverdriveThatMatters -import ru.dbotthepony.mc.otm.registry.LazyList import ru.dbotthepony.mc.otm.registry.LazyMap -import ru.dbotthepony.mc.otm.registry.WriteOnce +import java.util.EnumMap /** * Colored only @@ -22,228 +21,82 @@ open class ColoredDecorativeBlock( private val provider: (DyeColor) -> Block, itemGroup: CreativeModeTab = OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE ) { - protected var _whiteBlock: RegistryObject by WriteOnce() - private set - protected var _orangeBlock: RegistryObject by WriteOnce() - private set - protected var _magentaBlock: RegistryObject by WriteOnce() - private set - protected var _lightBlueBlock: RegistryObject by WriteOnce() - private set - protected var _yellowBlock: RegistryObject by WriteOnce() - private set - protected var _limeBlock: RegistryObject by WriteOnce() - private set - protected var _pinkBlock: RegistryObject by WriteOnce() - private set - protected var _grayBlock: RegistryObject by WriteOnce() - private set - protected var _lightGrayBlock: RegistryObject by WriteOnce() - private set - protected var _cyanBlock: RegistryObject by WriteOnce() - private set - protected var _purpleBlock: RegistryObject by WriteOnce() - private set - protected var _blueBlock: RegistryObject by WriteOnce() - private set - protected var _brownBlock: RegistryObject by WriteOnce() - private set - protected var _greenBlock: RegistryObject by WriteOnce() - private set - protected var _redBlock: RegistryObject by WriteOnce() - private set - protected var _blackBlock: RegistryObject by WriteOnce() + var registeredItems = false private set - val whiteBlock: Block get() = _whiteBlock.get() - val orangeBlock: Block get() = _orangeBlock.get() - val magentaBlock: Block get() = _magentaBlock.get() - val lightBlueBlock: Block get() = _lightBlueBlock.get() - val yellowBlock: Block get() = _yellowBlock.get() - val limeBlock: Block get() = _limeBlock.get() - val pinkBlock: Block get() = _pinkBlock.get() - val grayBlock: Block get() = _grayBlock.get() - val lightGrayBlock: Block get() = _lightGrayBlock.get() - val cyanBlock: Block get() = _cyanBlock.get() - val purpleBlock: Block get() = _purpleBlock.get() - val blueBlock: Block get() = _blueBlock.get() - val brownBlock: Block get() = _brownBlock.get() - val greenBlock: Block get() = _greenBlock.get() - val redBlock: Block get() = _redBlock.get() - val blackBlock: Block get() = _blackBlock.get() - - protected var _whiteItem: RegistryObject by WriteOnce() - private set - protected var _orangeItem: RegistryObject by WriteOnce() - private set - protected var _magentaItem: RegistryObject by WriteOnce() - private set - protected var _lightBlueItem: RegistryObject by WriteOnce() - private set - protected var _yellowItem: RegistryObject by WriteOnce() - private set - protected var _limeItem: RegistryObject by WriteOnce() - private set - protected var _pinkItem: RegistryObject by WriteOnce() - private set - protected var _grayItem: RegistryObject by WriteOnce() - private set - protected var _lightGrayItem: RegistryObject by WriteOnce() - private set - protected var _cyanItem: RegistryObject by WriteOnce() - private set - protected var _purpleItem: RegistryObject by WriteOnce() - private set - protected var _blueItem: RegistryObject by WriteOnce() - private set - protected var _brownItem: RegistryObject by WriteOnce() - private set - protected var _greenItem: RegistryObject by WriteOnce() - private set - protected var _redItem: RegistryObject by WriteOnce() - private set - protected var _blackItem: RegistryObject by WriteOnce() + var registeredBlocks = false private set - val whiteItem: Item get() = _whiteItem.get() - val orangeItem: Item get() = _orangeItem.get() - val magentaItem: Item get() = _magentaItem.get() - val lightBlueItem: Item get() = _lightBlueItem.get() - val yellowItem: Item get() = _yellowItem.get() - val limeItem: Item get() = _limeItem.get() - val pinkItem: Item get() = _pinkItem.get() - val grayItem: Item get() = _grayItem.get() - val lightGrayItem: Item get() = _lightGrayItem.get() - val cyanItem: Item get() = _cyanItem.get() - val purpleItem: Item get() = _purpleItem.get() - val blueItem: Item get() = _blueItem.get() - val brownItem: Item get() = _brownItem.get() - val greenItem: Item get() = _greenItem.get() - val redItem: Item get() = _redItem.get() - val blackItem: Item get() = _blackItem.get() + protected val itemMap = EnumMap>(DyeColor::class.java) + protected val blockMap = EnumMap>(DyeColor::class.java) - val coloredBlocks: List by lazy { - LazyList( - _whiteBlock::get, - _orangeBlock::get, - _magentaBlock::get, - _lightBlueBlock::get, - _yellowBlock::get, - _limeBlock::get, - _pinkBlock::get, - _grayBlock::get, - _lightGrayBlock::get, - _cyanBlock::get, - _purpleBlock::get, - _blueBlock::get, - _brownBlock::get, - _greenBlock::get, - _redBlock::get, - _blackBlock::get, - ) + fun getItem(dyeColor: DyeColor): Item { + check(registeredItems) { "Didn't register items yet" } + return itemMap[dyeColor]!!.get() } - val mappedColoredBlocks: Map by lazy { - LazyMap( - DyeColor.WHITE to _whiteBlock::get, - DyeColor.ORANGE to _orangeBlock::get, - DyeColor.MAGENTA to _magentaBlock::get, - DyeColor.LIGHT_BLUE to _lightBlueBlock::get, - DyeColor.YELLOW to _yellowBlock::get, - DyeColor.LIME to _limeBlock::get, - DyeColor.PINK to _pinkBlock::get, - DyeColor.GRAY to _grayBlock::get, - DyeColor.LIGHT_GRAY to _lightGrayBlock::get, - DyeColor.CYAN to _cyanBlock::get, - DyeColor.PURPLE to _purpleBlock::get, - DyeColor.BLUE to _blueBlock::get, - DyeColor.BROWN to _brownBlock::get, - DyeColor.GREEN to _greenBlock::get, - DyeColor.RED to _redBlock::get, - DyeColor.BLACK to _blackBlock::get, - ) + fun getBlock(dyeColor: DyeColor): Block { + check(registeredBlocks) { "Didn't register items yet" } + return blockMap[dyeColor]!!.get() } - val coloredItems: List by lazy { - LazyList( - _whiteItem::get, - _orangeItem::get, - _magentaItem::get, - _lightBlueItem::get, - _yellowItem::get, - _limeItem::get, - _pinkItem::get, - _grayItem::get, - _lightGrayItem::get, - _cyanItem::get, - _purpleItem::get, - _blueItem::get, - _brownItem::get, - _greenItem::get, - _redItem::get, - _blackItem::get, - ) + val blocks: Map by lazy { + check(registeredBlocks) { "Didn't register blocks yet" } + LazyMap(blockMap.map { it.key to it.value::get }) } - val mappedColoredItems: Map by lazy { - LazyMap( - DyeColor.WHITE to _whiteItem::get, - DyeColor.ORANGE to _orangeItem::get, - DyeColor.MAGENTA to _magentaItem::get, - DyeColor.LIGHT_BLUE to _lightBlueItem::get, - DyeColor.YELLOW to _yellowItem::get, - DyeColor.LIME to _limeItem::get, - DyeColor.PINK to _pinkItem::get, - DyeColor.GRAY to _grayItem::get, - DyeColor.LIGHT_GRAY to _lightGrayItem::get, - DyeColor.CYAN to _cyanItem::get, - DyeColor.PURPLE to _purpleItem::get, - DyeColor.BLUE to _blueItem::get, - DyeColor.BROWN to _brownItem::get, - DyeColor.GREEN to _greenItem::get, - DyeColor.RED to _redItem::get, - DyeColor.BLACK to _blackItem::get, - ) + val items: Map by lazy { + check(registeredItems) { "Didn't register items yet" } + LazyMap(itemMap.map { it.key to it.value::get }) } open fun registerBlocks(registry: DeferredRegister) { - _whiteBlock = registry.register("${baseName}_white") { provider.invoke(DyeColor.WHITE) } - _orangeBlock = registry.register("${baseName}_orange") { provider.invoke(DyeColor.ORANGE) } - _magentaBlock = registry.register("${baseName}_magenta") { provider.invoke(DyeColor.MAGENTA) } - _lightBlueBlock = registry.register("${baseName}_light_blue") { provider.invoke(DyeColor.LIGHT_BLUE) } - _yellowBlock = registry.register("${baseName}_yellow") { provider.invoke(DyeColor.YELLOW) } - _limeBlock = registry.register("${baseName}_lime") { provider.invoke(DyeColor.LIME) } - _pinkBlock = registry.register("${baseName}_pink") { provider.invoke(DyeColor.PINK) } - _grayBlock = registry.register("${baseName}_gray") { provider.invoke(DyeColor.GRAY) } - _lightGrayBlock = registry.register("${baseName}_light_gray") { provider.invoke(DyeColor.LIGHT_GRAY) } - _cyanBlock = registry.register("${baseName}_cyan") { provider.invoke(DyeColor.CYAN) } - _purpleBlock = registry.register("${baseName}_purple") { provider.invoke(DyeColor.PURPLE) } - _blueBlock = registry.register("${baseName}_blue") { provider.invoke(DyeColor.BLUE) } - _brownBlock = registry.register("${baseName}_brown") { provider.invoke(DyeColor.BROWN) } - _greenBlock = registry.register("${baseName}_green") { provider.invoke(DyeColor.GREEN) } - _redBlock = registry.register("${baseName}_red") { provider.invoke(DyeColor.RED) } - _blackBlock = registry.register("${baseName}_black") { provider.invoke(DyeColor.BLACK) } + 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) } + + registeredBlocks = true } private val properties = Item.Properties().tab(itemGroup).stacksTo(64) open fun registerItems(registry: DeferredRegister) { - _whiteItem = registry.register("${baseName}_white") { BlockItem(_whiteBlock.get(), properties) } - _orangeItem = registry.register("${baseName}_orange") { BlockItem(_orangeBlock.get(), properties) } - _magentaItem = registry.register("${baseName}_magenta") { BlockItem(_magentaBlock.get(), properties) } - _lightBlueItem = registry.register("${baseName}_light_blue") { BlockItem(_lightBlueBlock.get(), properties) } - _yellowItem = registry.register("${baseName}_yellow") { BlockItem(_yellowBlock.get(), properties) } - _limeItem = registry.register("${baseName}_lime") { BlockItem(_limeBlock.get(), properties) } - _pinkItem = registry.register("${baseName}_pink") { BlockItem(_pinkBlock.get(), properties) } - _grayItem = registry.register("${baseName}_gray") { BlockItem(_grayBlock.get(), properties) } - _lightGrayItem = registry.register("${baseName}_light_gray") { BlockItem(_lightGrayBlock.get(), properties) } - _cyanItem = registry.register("${baseName}_cyan") { BlockItem(_cyanBlock.get(), properties) } - _purpleItem = registry.register("${baseName}_purple") { BlockItem(_purpleBlock.get(), properties) } - _blueItem = registry.register("${baseName}_blue") { BlockItem(_blueBlock.get(), properties) } - _brownItem = registry.register("${baseName}_brown") { BlockItem(_brownBlock.get(), properties) } - _greenItem = registry.register("${baseName}_green") { BlockItem(_greenBlock.get(), properties) } - _redItem = registry.register("${baseName}_red") { BlockItem(_redBlock.get(), properties) } - _blackItem = registry.register("${baseName}_black") { BlockItem(_blackBlock.get(), properties) } + 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) } + + registeredItems = true } companion object { 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 8904090f6..6407e77fb 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 @@ -9,7 +9,6 @@ import net.minecraft.world.level.block.state.BlockBehaviour import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.RegistryObject import ru.dbotthepony.mc.otm.OverdriveThatMatters -import ru.dbotthepony.mc.otm.registry.LazyList import ru.dbotthepony.mc.otm.registry.LazyMap import ru.dbotthepony.mc.otm.registry.WriteOnce @@ -28,110 +27,23 @@ class DecorativeBlock( val block: Block get() = _block.get() val item: Item get() = _item.get() - val mappedColoredBlocksAll: Map by lazy { - LazyMap( - null to _block::get, - DyeColor.WHITE to _whiteBlock::get, - DyeColor.ORANGE to _orangeBlock::get, - DyeColor.MAGENTA to _magentaBlock::get, - DyeColor.LIGHT_BLUE to _lightBlueBlock::get, - DyeColor.YELLOW to _yellowBlock::get, - DyeColor.LIME to _limeBlock::get, - DyeColor.PINK to _pinkBlock::get, - DyeColor.GRAY to _grayBlock::get, - DyeColor.LIGHT_GRAY to _lightGrayBlock::get, - DyeColor.CYAN to _cyanBlock::get, - DyeColor.PURPLE to _purpleBlock::get, - DyeColor.BLUE to _blueBlock::get, - DyeColor.BROWN to _brownBlock::get, - DyeColor.GREEN to _greenBlock::get, - DyeColor.RED to _redBlock::get, - DyeColor.BLACK to _blackBlock::get, - ) + val allBlocks: Map by lazy { + check(registeredBlocks) { "Didn't register items yet" } + LazyMap(blockMap.map { it.key to it.value::get }.toMutableList().also { it.add(null to _block::get) }) } - val mappedColoredItemsAll: Map by lazy { - LazyMap( - null to _item::get, - DyeColor.WHITE to _whiteItem::get, - DyeColor.ORANGE to _orangeItem::get, - DyeColor.MAGENTA to _magentaItem::get, - DyeColor.LIGHT_BLUE to _lightBlueItem::get, - DyeColor.YELLOW to _yellowItem::get, - DyeColor.LIME to _limeItem::get, - DyeColor.PINK to _pinkItem::get, - DyeColor.GRAY to _grayItem::get, - DyeColor.LIGHT_GRAY to _lightGrayItem::get, - DyeColor.CYAN to _cyanItem::get, - DyeColor.PURPLE to _purpleItem::get, - DyeColor.BLUE to _blueItem::get, - DyeColor.BROWN to _brownItem::get, - DyeColor.GREEN to _greenItem::get, - DyeColor.RED to _redItem::get, - DyeColor.BLACK to _blackItem::get, - ) - } - - val blocks: List by lazy { - LazyList( - _block::get, - - _whiteBlock::get, - _orangeBlock::get, - _magentaBlock::get, - _lightBlueBlock::get, - _yellowBlock::get, - _limeBlock::get, - _pinkBlock::get, - _grayBlock::get, - _lightGrayBlock::get, - _cyanBlock::get, - _purpleBlock::get, - _blueBlock::get, - _brownBlock::get, - _greenBlock::get, - _redBlock::get, - _blackBlock::get, - ) - } - - val items: List by lazy { - LazyList( - _item::get, - - _whiteItem::get, - _orangeItem::get, - _magentaItem::get, - _lightBlueItem::get, - _yellowItem::get, - _limeItem::get, - _pinkItem::get, - _grayItem::get, - _lightGrayItem::get, - _cyanItem::get, - _purpleItem::get, - _blueItem::get, - _brownItem::get, - _greenItem::get, - _redItem::get, - _blackItem::get, - ) + val allItems: Map by lazy { + check(registeredItems) { "Didn't register items yet" } + LazyMap(itemMap.map { it.key to it.value::get }.toMutableList().also { it.add(null to _item::get) }) } override fun registerBlocks(registry: DeferredRegister) { - _block = registry.register(baseName) { provider.invoke(DyeColor.WHITE) } - + _block = registry.register(baseName) { provider.invoke(null) } super.registerBlocks(registry) } override fun registerItems(registry: DeferredRegister) { - _item = registry.register(baseName) { - BlockItem( - _block.get(), - Item.Properties().tab(baseItemGroup).stacksTo(64) - ) - } - + _item = registry.register(baseName) { BlockItem(_block.get(), Item.Properties().tab(baseItemGroup).stacksTo(64)) } super.registerItems(registry) } 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 36be5eada..e7a2259b3 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 @@ -25,34 +25,22 @@ class StripedColoredDecorativeBlock( private val mapItems = EnumMap>>(DyeColor::class.java) fun getBlockNullable(base: DyeColor, stripe: DyeColor): Block? { - if (!registeredBlocks) { - throw IllegalStateException("Not yet registered blocks") - } - + check(registeredBlocks) { "Didn't register items yet" } return mapBlocks.get(base)?.get(stripe)?.get() } fun getItemNullable(base: DyeColor, stripe: DyeColor): Item? { - if (!registeredItems) { - throw IllegalStateException("Not yet registered items") - } - + check(registeredItems) { "Didn't register items yet" } return mapItems.get(base)?.get(stripe)?.get() } fun getBlock(base: DyeColor, stripe: DyeColor): Block { - if (!registeredBlocks) { - throw IllegalStateException("Not yet registered blocks") - } - + check(registeredBlocks) { "Didn't register items yet" } return mapBlocks.get(base)?.get(stripe)?.get() ?: throw NoSuchElementException("$base colored $stripe striped block does not exist") } fun getItem(base: DyeColor, stripe: DyeColor): Item { - if (!registeredItems) { - throw IllegalStateException("Not yet registered items") - } - + check(registeredItems) { "Didn't register items yet" } return mapItems.get(base)?.get(stripe)?.get() ?: throw NoSuchElementException("$base colored $stripe striped item does not exist") } @@ -62,78 +50,38 @@ class StripedColoredDecorativeBlock( var registeredBlocks = false private set - val items: List by lazy { - if (!registeredItems) { - throw IllegalStateException("Not yet registered items") - } - - val build = ImmutableList.builder<() -> Item>() - - for (children in mapItems.values) { - for (registryObject in children.values) { - build.add(registryObject::get) - } - } - - LazyList(build.build()) - } - - val blocks: List by lazy { - if (!registeredBlocks) { - throw IllegalStateException("Not yet registered blocks") - } - - val build = ImmutableList.builder<() -> Block>() - - for (children in mapBlocks.values) { - for (registryObject in children.values) { - build.add(registryObject::get) - } - } - - LazyList(build.build()) - } - - val mappedBlocks: Map> by lazy { - if (!registeredBlocks) { - throw IllegalStateException("Not yet registered blocks") - } - - val builder = ImmutableMap.Builder>() - - for ((base, children) in mapBlocks) { - val result = ArrayList Block>>() - - for ((stripe, registryObject) in children) { - result.add(stripe to registryObject::get) - } - - builder.put(base, LazyMap(result)) - } - - builder.build() - } - - val mappedItems: Map> by lazy { - if (!registeredItems) { - throw IllegalStateException("Not yet registered items") - } - + val items: Map> by lazy { + check(registeredItems) { "Didn't register items yet" } val builder = ImmutableMap.Builder>() for ((base, children) in mapItems) { - val result = ArrayList Item>>() - - for ((stripe, registryObject) in children) { - result.add(stripe to registryObject::get) - } - - builder.put(base, LazyMap(result)) + builder.put(base, LazyMap(children.map { it.key to it.value::get })) } builder.build() } + val blocks: Map> by lazy { + check(registeredBlocks) { "Didn't register items yet" } + val builder = ImmutableMap.Builder>() + + for ((base, children) in mapBlocks) { + builder.put(base, LazyMap(children.map { it.key to it.value::get })) + } + + builder.build() + } + + val flatItems: List by lazy { + check(registeredItems) { "Didn't register items yet" } + LazyList(mapItems.flatMap { it.value.values }.map { it::get }) + } + + val flatBlocks: List by lazy { + check(registeredBlocks) { "Didn't register items yet" } + LazyList(mapBlocks.flatMap { it.value.values }.map { it::get }) + } + fun registerItems(registry: DeferredRegister) { for (base in DyeColor.values()) { for (stripe in DyeColor.values()) { diff --git a/src/main/resources/assets/overdrive_that_matters/blockstates/cargo_crate.json b/src/main/resources/assets/overdrive_that_matters/blockstates/cargo_crate.json deleted file mode 100644 index bcc47706a..000000000 --- a/src/main/resources/assets/overdrive_that_matters/blockstates/cargo_crate.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "variants": { - "facing=north,open=true": { - "model": "overdrive_that_matters:block/cargo_crate_open", - "y": 0 - }, - "facing=north,open=false": { - "model": "overdrive_that_matters:block/cargo_crate_closed", - "y": 0 - }, - "facing=south,open=true": { - "model": "overdrive_that_matters:block/cargo_crate_open", - "y": 180 - }, - "facing=south,open=false": { - "model": "overdrive_that_matters:block/cargo_crate_closed", - "y": 180 - }, - "facing=west,open=true": { - "model": "overdrive_that_matters:block/cargo_crate_open", - "y": 270 - }, - "facing=west,open=false": { - "model": "overdrive_that_matters:block/cargo_crate_closed", - "y": 270 - }, - "facing=east,open=true": { - "model": "overdrive_that_matters:block/cargo_crate_open", - "y": 90 - }, - "facing=east,open=false": { - "model": "overdrive_that_matters:block/cargo_crate_closed", - "y": 90 - } - } -} \ No newline at end of file