Colorable cargo crates

This commit is contained in:
DBotThePony 2022-05-15 01:15:35 +07:00
parent 81d29999d7
commit 2314dbfa85
Signed by: DBot
GPG Key ID: DCC23B5715498507
6 changed files with 125 additions and 8 deletions

View File

@ -242,7 +242,10 @@ object DataGen {
generated(MItems.PATTERN_DRIVE_CREATIVE) 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.CHEMICAL_GENERATOR, "chemical_generator_working")
block(MItems.ENERGY_COUNTER, "energy_counter_down") block(MItems.ENERGY_COUNTER, "energy_counter_down")
block(MItems.MATTER_BOTTLER, "matter_bottler_working") block(MItems.MATTER_BOTTLER, "matter_bottler_working")
@ -345,7 +348,11 @@ object DataGen {
with(lootTableProvider) { with(lootTableProvider) {
simpleBlocks(MBlocks.CRATE_LIST) simpleBlocks(MBlocks.CRATE_LIST)
simpleBlock(MBlocks.CARGO_CRATE)
for (block in MBlocks.CARGO_CRATES) {
simpleBlock(block)
}
simpleBlock(MBlocks.CARBON_FIBRE_BLOCK) simpleBlock(MBlocks.CARBON_FIBRE_BLOCK)
simpleBlock(MBlocks.TRITANIUM_RAW_BLOCK) simpleBlock(MBlocks.TRITANIUM_RAW_BLOCK)
simpleBlock(MBlocks.TRITANIUM_BLOCK) simpleBlock(MBlocks.TRITANIUM_BLOCK)

View File

@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.block
import net.minecraft.core.BlockPos import net.minecraft.core.BlockPos
import net.minecraft.world.Containers import net.minecraft.world.Containers
import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.inventory.AbstractContainerMenu
import net.minecraft.world.item.DyeColor
import net.minecraft.world.item.context.BlockPlaceContext import net.minecraft.world.item.context.BlockPlaceContext
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraft.world.level.block.Block 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.BlockState
import net.minecraft.world.level.block.state.StateDefinition import net.minecraft.world.level.block.state.StateDefinition
import net.minecraft.world.level.block.state.properties.BooleanProperty 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 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 { override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity {
return CargoCrateBlockEntity(blockPos, blockState) return CargoCrateBlockEntity(blockPos, blockState)
} }

View File

@ -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 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 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 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 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 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) } val ENERGY_COUNTER: BlockEntityType<*> by registry.register(MNames.ENERGY_COUNTER) { BlockEntityType.Builder.of(::EnergyCounterBlockEntity, MBlocks.ENERGY_COUNTER).build(null) }

View File

@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.registry
import net.minecraft.client.renderer.ItemBlockRenderTypes import net.minecraft.client.renderer.ItemBlockRenderTypes
import net.minecraft.client.renderer.RenderType import net.minecraft.client.renderer.RenderType
import net.minecraft.util.valueproviders.UniformInt 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.Block
import net.minecraft.world.level.block.OreBlock import net.minecraft.world.level.block.OreBlock
import net.minecraft.world.level.block.SoundType 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_PANEL: Block by registry.register(MNames.MATTER_PANEL) { MatterPanelBlock() }
val MATTER_REPLICATOR: Block by registry.register(MNames.MATTER_REPLICATOR) { MatterReplicatorBlock() } val MATTER_REPLICATOR: Block by registry.register(MNames.MATTER_REPLICATOR) { MatterReplicatorBlock() }
val MATTER_BOTTLER: Block by registry.register(MNames.MATTER_BOTTLER) { MatterBottlerBlock() } 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 ENERGY_COUNTER: Block by registry.register(MNames.ENERGY_COUNTER) { EnergyCounterBlock() }
val CHEMICAL_GENERATOR: Block by registry.register(MNames.CHEMICAL_GENERATOR) { ChemicalGeneratorBlock() } val CHEMICAL_GENERATOR: Block by registry.register(MNames.CHEMICAL_GENERATOR) { ChemicalGeneratorBlock() }
val PLATE_PRESS: Block by registry.register(MNames.PLATE_PRESS) { PlatePressBlock() } val PLATE_PRESS: Block by registry.register(MNames.PLATE_PRESS) { PlatePressBlock() }
@ -113,6 +113,41 @@ object MBlocks {
.strength(3f) .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_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() } val CRATE_BLUE: Block by registry.register(MRegistry.CRATE_BLUE.name) { MRegistry.CRATE_BLUE.makeBlock() }

View File

@ -37,7 +37,7 @@ object MItems {
val MATTER_PANEL: Item by registry.register(MNames.MATTER_PANEL) { BlockItem(MBlocks.MATTER_PANEL, DEFAULT_PROPERTIES) } 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_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 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 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 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) } 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 } { TRITANIUM_BOOTS }
) )
val ENERGY_SWORD: Item by registry.register(MNames.ENERGY_SWORD) { EnergySwordItem() } val ENERGY_SWORD: Item by registry.register(MNames.ENERGY_SWORD) { EnergySwordItem() }
val PLASMA_RIFLE: Item by registry.register(MNames.PLASMA_RIFLE) { PlasmaRifleItem() } val PLASMA_RIFLE: Item by registry.register(MNames.PLASMA_RIFLE) { PlasmaRifleItem() }
@ -234,6 +233,42 @@ object MItems {
{ CRATE_PURPLE }, { 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_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 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) } val CARBON_FIBRE_BLOCK: Item by registry.register(MNames.CARBON_FIBRE_BLOCK) { BlockItem(MBlocks.CARBON_FIBRE_BLOCK, DEFAULT_PROPERTIES) }

View File

@ -32,7 +32,24 @@ object MNames {
const val BLACK_HOLE = "black_hole" const val BLACK_HOLE = "black_hole"
const val GRAVITATION_STABILIZER = "gravitation_stabilizer" // нужен рецепт const val GRAVITATION_STABILIZER = "gravitation_stabilizer" // нужен рецепт
const val GRAVITATION_STABILIZER_LENS = "gravitation_stabilizer_lens" 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_BUS = "storage_bus"
const val STORAGE_IMPORTER = "storage_importer" const val STORAGE_IMPORTER = "storage_importer"