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 057753da3..2f4278571 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt @@ -242,7 +242,10 @@ object DataGen { generated(MItems.PATTERN_DRIVE_CREATIVE) - block(MItems.CARGO_CRATE, "cargo_crate_closed") + for (item in MItems.CARGO_CRATES) { + block(item, "${item.registryName!!.path}_closed") + } + block(MItems.CHEMICAL_GENERATOR, "chemical_generator_working") block(MItems.ENERGY_COUNTER, "energy_counter_down") block(MItems.MATTER_BOTTLER, "matter_bottler_working") @@ -345,7 +348,11 @@ object DataGen { with(lootTableProvider) { simpleBlocks(MBlocks.CRATE_LIST) - simpleBlock(MBlocks.CARGO_CRATE) + + for (block in MBlocks.CARGO_CRATES) { + simpleBlock(block) + } + simpleBlock(MBlocks.CARBON_FIBRE_BLOCK) simpleBlock(MBlocks.TRITANIUM_RAW_BLOCK) simpleBlock(MBlocks.TRITANIUM_BLOCK) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/CargoCrateBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/CargoCrateBlock.kt index 7d267b726..8fdbfee55 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/CargoCrateBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/CargoCrateBlock.kt @@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.block import net.minecraft.core.BlockPos import net.minecraft.world.Containers import net.minecraft.world.inventory.AbstractContainerMenu +import net.minecraft.world.item.DyeColor import net.minecraft.world.item.context.BlockPlaceContext import net.minecraft.world.level.Level import net.minecraft.world.level.block.Block @@ -11,9 +12,13 @@ import net.minecraft.world.level.block.entity.BlockEntity import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.state.StateDefinition import net.minecraft.world.level.block.state.properties.BooleanProperty +import net.minecraft.world.level.material.Material +import net.minecraft.world.level.material.MaterialColor import ru.dbotthepony.mc.otm.block.entity.CargoCrateBlockEntity -class CargoCrateBlock : RotatableMatteryBlock(), EntityBlock { +class CargoCrateBlock(val color: DyeColor) : RotatableMatteryBlock( + Properties.of(Material.STONE, color.materialColor).requiresCorrectToolForDrops().strength(1.5f, 30.0f) +), EntityBlock { override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity { return CargoCrateBlockEntity(blockPos, blockState) } 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 b7a53a5df..c591f6df4 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlockEntities.kt @@ -31,7 +31,25 @@ object MBlockEntities { val MATTER_BOTTLER: BlockEntityType<*> by registry.register(MNames.MATTER_BOTTLER) { BlockEntityType.Builder.of(::MatterBottlerBlockEntity, MBlocks.MATTER_BOTTLER).build(null) } val DRIVE_VIEWER: BlockEntityType<*> by registry.register(MNames.DRIVE_VIEWER) { BlockEntityType.Builder.of(::DriveViewerBlockEntity, MBlocks.DRIVE_VIEWER).build(null) } 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, MBlocks.CARGO_CRATE).build(null) } + val CARGO_CRATE: BlockEntityType<*> by registry.register(MNames.CARGO_CRATE) { BlockEntityType.Builder.of( + ::CargoCrateBlockEntity, + MBlocks.CARGO_CRATE_WHITE, + MBlocks.CARGO_CRATE_ORANGE, + MBlocks.CARGO_CRATE_MAGENTA, + MBlocks.CARGO_CRATE_LIGHT_BLUE, + MBlocks.CARGO_CRATE_YELLOW, + MBlocks.CARGO_CRATE_LIME, + MBlocks.CARGO_CRATE_PINK, + MBlocks.CARGO_CRATE_GRAY, + MBlocks.CARGO_CRATE_LIGHT_GRAY, + MBlocks.CARGO_CRATE_CYAN, + MBlocks.CARGO_CRATE_PURPLE, + MBlocks.CARGO_CRATE_BLUE, + MBlocks.CARGO_CRATE_BROWN, + MBlocks.CARGO_CRATE_GREEN, + MBlocks.CARGO_CRATE_RED, + MBlocks.CARGO_CRATE_BLACK, + ).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) } val ENERGY_COUNTER: BlockEntityType<*> by registry.register(MNames.ENERGY_COUNTER) { BlockEntityType.Builder.of(::EnergyCounterBlockEntity, MBlocks.ENERGY_COUNTER).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 b004ed796..bb62ddcf0 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt @@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.registry import net.minecraft.client.renderer.ItemBlockRenderTypes import net.minecraft.client.renderer.RenderType import net.minecraft.util.valueproviders.UniformInt +import net.minecraft.world.item.DyeColor import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.OreBlock import net.minecraft.world.level.block.SoundType @@ -46,7 +47,6 @@ object MBlocks { 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 CARGO_CRATE: Block by registry.register(MNames.CARGO_CRATE) { CargoCrateBlock() } 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() } @@ -113,6 +113,41 @@ object MBlocks { .strength(3f) ) } + val CARGO_CRATE_WHITE: Block by registry.register(MNames.CARGO_CRATE_WHITE) { CargoCrateBlock(DyeColor.WHITE) } + val CARGO_CRATE_ORANGE: Block by registry.register(MNames.CARGO_CRATE_ORANGE) { CargoCrateBlock(DyeColor.ORANGE) } + val CARGO_CRATE_MAGENTA: Block by registry.register(MNames.CARGO_CRATE_MAGENTA) { CargoCrateBlock(DyeColor.MAGENTA) } + val CARGO_CRATE_LIGHT_BLUE: Block by registry.register(MNames.CARGO_CRATE_LIGHT_BLUE) { CargoCrateBlock(DyeColor.LIGHT_BLUE) } + val CARGO_CRATE_YELLOW: Block by registry.register(MNames.CARGO_CRATE_YELLOW) { CargoCrateBlock(DyeColor.YELLOW) } + val CARGO_CRATE_LIME: Block by registry.register(MNames.CARGO_CRATE_LIME) { CargoCrateBlock(DyeColor.LIME) } + val CARGO_CRATE_PINK: Block by registry.register(MNames.CARGO_CRATE_PINK) { CargoCrateBlock(DyeColor.PINK) } + val CARGO_CRATE_GRAY: Block by registry.register(MNames.CARGO_CRATE_GRAY) { CargoCrateBlock(DyeColor.GRAY) } + val CARGO_CRATE_LIGHT_GRAY: Block by registry.register(MNames.CARGO_CRATE_LIGHT_GRAY) { CargoCrateBlock(DyeColor.LIGHT_GRAY) } + val CARGO_CRATE_CYAN: Block by registry.register(MNames.CARGO_CRATE_CYAN) { CargoCrateBlock(DyeColor.CYAN) } + val CARGO_CRATE_PURPLE: Block by registry.register(MNames.CARGO_CRATE_PURPLE) { CargoCrateBlock(DyeColor.PURPLE) } + val CARGO_CRATE_BLUE: Block by registry.register(MNames.CARGO_CRATE_BLUE) { CargoCrateBlock(DyeColor.BLUE) } + val CARGO_CRATE_BROWN: Block by registry.register(MNames.CARGO_CRATE_BROWN) { CargoCrateBlock(DyeColor.BROWN) } + val CARGO_CRATE_GREEN: Block by registry.register(MNames.CARGO_CRATE_GREEN) { CargoCrateBlock(DyeColor.GREEN) } + val CARGO_CRATE_RED: Block by registry.register(MNames.CARGO_CRATE_RED) { CargoCrateBlock(DyeColor.RED) } + val CARGO_CRATE_BLACK: Block by registry.register(MNames.CARGO_CRATE_BLACK) { CargoCrateBlock(DyeColor.BLACK) } + + val CARGO_CRATES = LazyList( + { CARGO_CRATE_WHITE }, + { CARGO_CRATE_ORANGE }, + { CARGO_CRATE_MAGENTA }, + { CARGO_CRATE_LIGHT_BLUE }, + { CARGO_CRATE_YELLOW }, + { CARGO_CRATE_LIME }, + { CARGO_CRATE_PINK }, + { CARGO_CRATE_GRAY }, + { CARGO_CRATE_LIGHT_GRAY }, + { CARGO_CRATE_CYAN }, + { CARGO_CRATE_PURPLE }, + { CARGO_CRATE_BLUE }, + { CARGO_CRATE_BROWN }, + { CARGO_CRATE_GREEN }, + { CARGO_CRATE_RED }, + { CARGO_CRATE_BLACK }, + ) val CRATE_RED: Block by registry.register(MRegistry.CRATE_RED.name) { MRegistry.CRATE_RED.makeBlock() } val CRATE_BLUE: Block by registry.register(MRegistry.CRATE_BLUE.name) { MRegistry.CRATE_BLUE.makeBlock() } 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 1b1ddbcf5..0733f1f51 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt @@ -37,7 +37,7 @@ object MItems { val MATTER_PANEL: Item by registry.register(MNames.MATTER_PANEL) { BlockItem(MBlocks.MATTER_PANEL, DEFAULT_PROPERTIES) } val MATTER_REPLICATOR: Item by registry.register(MNames.MATTER_REPLICATOR) { BlockItem(MBlocks.MATTER_REPLICATOR, DEFAULT_PROPERTIES) } val MATTER_BOTTLER: Item by registry.register(MNames.MATTER_BOTTLER) { BlockItem(MBlocks.MATTER_BOTTLER, DEFAULT_PROPERTIES) } - val CARGO_CRATE: Item by registry.register(MNames.CARGO_CRATE) { BlockItem(MBlocks.CARGO_CRATE, DEFAULT_PROPERTIES) } + val TRITANIUM_ORE: Item by registry.register(MNames.TRITANIUM_ORE) { BlockItem(MBlocks.TRITANIUM_ORE, DEFAULT_PROPERTIES) } val DEEPSLATE_TRITANIUM_ORE: Item by registry.register(MNames.DEEPSLATE_TRITANIUM_ORE) { BlockItem(MBlocks.DEEPSLATE_TRITANIUM_ORE, DEFAULT_PROPERTIES) } val TRITANIUM_RAW_BLOCK: Item by registry.register(MNames.TRITANIUM_RAW_BLOCK) { BlockItem(MBlocks.TRITANIUM_RAW_BLOCK, DEFAULT_PROPERTIES) } @@ -122,7 +122,6 @@ object MItems { { TRITANIUM_BOOTS } ) - val ENERGY_SWORD: Item by registry.register(MNames.ENERGY_SWORD) { EnergySwordItem() } val PLASMA_RIFLE: Item by registry.register(MNames.PLASMA_RIFLE) { PlasmaRifleItem() } @@ -234,6 +233,42 @@ object MItems { { CRATE_PURPLE }, ) + val CARGO_CRATE_WHITE: Item by registry.register(MNames.CARGO_CRATE_WHITE) { BlockItem(MBlocks.CARGO_CRATE_WHITE, DEFAULT_PROPERTIES) } + val CARGO_CRATE_ORANGE: Item by registry.register(MNames.CARGO_CRATE_ORANGE) { BlockItem(MBlocks.CARGO_CRATE_ORANGE, DEFAULT_PROPERTIES) } + val CARGO_CRATE_MAGENTA: Item by registry.register(MNames.CARGO_CRATE_MAGENTA) { BlockItem(MBlocks.CARGO_CRATE_MAGENTA, DEFAULT_PROPERTIES) } + val CARGO_CRATE_LIGHT_BLUE: Item by registry.register(MNames.CARGO_CRATE_LIGHT_BLUE) { BlockItem(MBlocks.CARGO_CRATE_LIGHT_BLUE, DEFAULT_PROPERTIES) } + val CARGO_CRATE_YELLOW: Item by registry.register(MNames.CARGO_CRATE_YELLOW) { BlockItem(MBlocks.CARGO_CRATE_YELLOW, DEFAULT_PROPERTIES) } + val CARGO_CRATE_LIME: Item by registry.register(MNames.CARGO_CRATE_LIME) { BlockItem(MBlocks.CARGO_CRATE_LIME, DEFAULT_PROPERTIES) } + val CARGO_CRATE_PINK: Item by registry.register(MNames.CARGO_CRATE_PINK) { BlockItem(MBlocks.CARGO_CRATE_PINK, DEFAULT_PROPERTIES) } + val CARGO_CRATE_GRAY: Item by registry.register(MNames.CARGO_CRATE_GRAY) { BlockItem(MBlocks.CARGO_CRATE_GRAY, DEFAULT_PROPERTIES) } + val CARGO_CRATE_LIGHT_GRAY: Item by registry.register(MNames.CARGO_CRATE_LIGHT_GRAY) { BlockItem(MBlocks.CARGO_CRATE_LIGHT_GRAY, DEFAULT_PROPERTIES) } + val CARGO_CRATE_CYAN: Item by registry.register(MNames.CARGO_CRATE_CYAN) { BlockItem(MBlocks.CARGO_CRATE_CYAN, DEFAULT_PROPERTIES) } + val CARGO_CRATE_PURPLE: Item by registry.register(MNames.CARGO_CRATE_PURPLE) { BlockItem(MBlocks.CARGO_CRATE_PURPLE, DEFAULT_PROPERTIES) } + val CARGO_CRATE_BLUE: Item by registry.register(MNames.CARGO_CRATE_BLUE) { BlockItem(MBlocks.CARGO_CRATE_BLUE, DEFAULT_PROPERTIES) } + val CARGO_CRATE_BROWN: Item by registry.register(MNames.CARGO_CRATE_BROWN) { BlockItem(MBlocks.CARGO_CRATE_BROWN, DEFAULT_PROPERTIES) } + val CARGO_CRATE_GREEN: Item by registry.register(MNames.CARGO_CRATE_GREEN) { BlockItem(MBlocks.CARGO_CRATE_GREEN, DEFAULT_PROPERTIES) } + val CARGO_CRATE_RED: Item by registry.register(MNames.CARGO_CRATE_RED) { BlockItem(MBlocks.CARGO_CRATE_RED, DEFAULT_PROPERTIES) } + val CARGO_CRATE_BLACK: Item by registry.register(MNames.CARGO_CRATE_BLACK) { BlockItem(MBlocks.CARGO_CRATE_BLACK, DEFAULT_PROPERTIES) } + + val CARGO_CRATES = LazyList( + { CARGO_CRATE_WHITE }, + { CARGO_CRATE_ORANGE }, + { CARGO_CRATE_MAGENTA }, + { CARGO_CRATE_LIGHT_BLUE }, + { CARGO_CRATE_YELLOW }, + { CARGO_CRATE_LIME }, + { CARGO_CRATE_PINK }, + { CARGO_CRATE_GRAY }, + { CARGO_CRATE_LIGHT_GRAY }, + { CARGO_CRATE_CYAN }, + { CARGO_CRATE_PURPLE }, + { CARGO_CRATE_BLUE }, + { CARGO_CRATE_BROWN }, + { CARGO_CRATE_GREEN }, + { CARGO_CRATE_RED }, + { CARGO_CRATE_BLACK }, + ) + val TRITANIUM_BLOCK: Item by registry.register(MNames.TRITANIUM_BLOCK) { BlockItem(MBlocks.TRITANIUM_BLOCK, DEFAULT_PROPERTIES) } val TRITANIUM_STRIPED_BLOCK: Item by registry.register(MNames.TRITANIUM_STRIPED_BLOCK) { BlockItem(MBlocks.TRITANIUM_STRIPED_BLOCK, DEFAULT_PROPERTIES) } val CARBON_FIBRE_BLOCK: Item by registry.register(MNames.CARBON_FIBRE_BLOCK) { BlockItem(MBlocks.CARBON_FIBRE_BLOCK, DEFAULT_PROPERTIES) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt index 804f9e6b1..bf4cff630 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt @@ -32,7 +32,24 @@ object MNames { const val BLACK_HOLE = "black_hole" const val GRAVITATION_STABILIZER = "gravitation_stabilizer" // нужен рецепт const val GRAVITATION_STABILIZER_LENS = "gravitation_stabilizer_lens" - const val CARGO_CRATE = "cargo_crate" // нужен рецепт? + + const val CARGO_CRATE = "cargo_crate" + const val CARGO_CRATE_WHITE = "cargo_crate_white" // нужен рецепт + const val CARGO_CRATE_ORANGE = "cargo_crate_orange" // нужен рецепт + const val CARGO_CRATE_MAGENTA = "cargo_crate_magenta" // нужен рецепт + const val CARGO_CRATE_LIGHT_BLUE = "cargo_crate_light_blue" // нужен рецепт + const val CARGO_CRATE_YELLOW = "cargo_crate_yellow" // нужен рецепт + const val CARGO_CRATE_LIME = "cargo_crate_lime" // нужен рецепт + const val CARGO_CRATE_PINK = "cargo_crate_pink" // нужен рецепт + const val CARGO_CRATE_GRAY = "cargo_crate_gray" // нужен рецепт + const val CARGO_CRATE_LIGHT_GRAY = "cargo_crate_light_gray" // нужен рецепт + const val CARGO_CRATE_CYAN = "cargo_crate_cyan" // нужен рецепт + const val CARGO_CRATE_PURPLE = "cargo_crate_purple" // нужен рецепт + const val CARGO_CRATE_BLUE = "cargo_crate_blue" // нужен рецепт + const val CARGO_CRATE_BROWN = "cargo_crate_brown" // нужен рецепт + const val CARGO_CRATE_GREEN = "cargo_crate_green" // нужен рецепт + const val CARGO_CRATE_RED = "cargo_crate_red" // нужен рецепт + const val CARGO_CRATE_BLACK = "cargo_crate_black" // нужен рецепт const val STORAGE_BUS = "storage_bus" const val STORAGE_IMPORTER = "storage_importer"