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 59daf53fe..34a26f3ab 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt @@ -35,6 +35,7 @@ import ru.dbotthepony.mc.otm.datagen.recipes.addBlastingRecipes import ru.dbotthepony.mc.otm.datagen.recipes.addCraftingTableRecipes import ru.dbotthepony.mc.otm.datagen.recipes.addDecorativesRecipes import ru.dbotthepony.mc.otm.datagen.recipes.addPlatePressRecipes +import ru.dbotthepony.mc.otm.datagen.recipes.addShapelessRecipes import ru.dbotthepony.mc.otm.datagen.tags.TagsProvider import ru.dbotthepony.mc.otm.datagen.tags.addTags import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock @@ -272,6 +273,7 @@ object DataGen { addCraftingTableRecipes(consumer) addBlastingRecipes(consumer) addDecorativesRecipes(recipeProvider, consumer) + addShapelessRecipes(consumer) } addPlatePressRecipes(recipeProvider) 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 1f83d381e..2cfa65f22 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 @@ -16,6 +16,14 @@ private fun decoratives(provider: MatteryLanguageProvider) { provider.englishColors.add(MRegistry.CARGO_CRATES, "%s Cargo Crate") provider.englishColors.add(MRegistry.DECORATIVE_CRATE, "%s Container Block") + for ((color, name) in provider.englishColors.dyeClassMapped) { + provider.english.add(MItems.CARGO_CRATE_MINECARTS[color]!!, "Minecart with $name Cargo Crate") + provider.english.add(MEntityTypes.CARGO_CRATE_MINECARTS[color]!!, "Minecart with $name Cargo Crate") + } + + provider.english.add(MItems.CARGO_CRATE_MINECARTS[null]!!, "Minecart with Cargo Crate") + provider.english.add(MEntityTypes.CARGO_CRATE_MINECARTS[null]!!, "Minecart with Cargo Crate") + with(provider.english) { add(MRegistry.CARGO_CRATES.block, "Cargo Crate") add(MRegistry.TRITANIUM_BLOCK.block, "Tritanium Block") 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 9a402b6d7..f67305f70 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 @@ -222,6 +222,12 @@ class MatteryLanguageProvider(private val gen: DataGenerator) { } } + fun forEach(consumer: (color: DyeColor, name: String) -> Unit) { + for ((a, b) in dyeClassPairs) { + consumer.invoke(a, b) + } + } + fun add( whiteBlock: Block, orangeBlock: Block, 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 7940c4699..015b1f65e 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 @@ -28,9 +28,9 @@ fun addCraftingTableRecipes(consumer: Consumer) { .save(consumer) ShapelessRecipeBuilder(crate, 1) - .requires(Ingredient.of(MItemTags.TRITANIUM_CRATES), 1) + .requires(Ingredient.of(MItemTags.CARGO_CRATES), 1) .requires(Ingredient.of(dye.tag), 1) - .unlockedBy("has_tritanium_crate", has(MItemTags.TRITANIUM_CRATES)) + .unlockedBy("has_tritanium_crate", has(MItemTags.CARGO_CRATES)) .save(consumer, "${crate.registryName}_alt") } diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/ShapelessRecipes.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/ShapelessRecipes.kt new file mode 100644 index 000000000..fb9d37a4a --- /dev/null +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/ShapelessRecipes.kt @@ -0,0 +1,36 @@ +package ru.dbotthepony.mc.otm.datagen.recipes + +import net.minecraft.data.recipes.FinishedRecipe +import net.minecraft.data.recipes.ShapelessRecipeBuilder +import net.minecraft.world.item.DyeColor +import net.minecraft.world.item.Items +import ru.dbotthepony.mc.otm.core.registryName +import ru.dbotthepony.mc.otm.datagen.modLocation +import ru.dbotthepony.mc.otm.registry.MItemTags +import ru.dbotthepony.mc.otm.registry.MItems +import ru.dbotthepony.mc.otm.registry.MRegistry +import java.util.function.Consumer + +fun addShapelessRecipes(consumer: Consumer) { + for (color in DyeColor.values()) { + ShapelessRecipeBuilder(MItems.CARGO_CRATE_MINECARTS[color]!!, 1) + .requires(Items.MINECART) + .requires(MRegistry.CARGO_CRATES.items[color]!!) + .unlockedBy(Items.MINECART) + .unlockedBy(MRegistry.CARGO_CRATES.items[color]!!) + .save(consumer) + + ShapelessRecipeBuilder(MItems.CARGO_CRATE_MINECARTS[color]!!, 1) + .requires(MItemTags.MINECART_CARGO_CRATES) + .requires(color.tag) + .unlockedBy(MItemTags.MINECART_CARGO_CRATES) + .save(consumer, modLocation(MItems.CARGO_CRATE_MINECARTS[color]!!.registryName!!.path + "_alt")) + } + + ShapelessRecipeBuilder(MItems.CARGO_CRATE_MINECARTS[null]!!, 1) + .requires(Items.MINECART) + .requires(MRegistry.CARGO_CRATES.item) + .unlockedBy(Items.MINECART) + .unlockedBy(MRegistry.CARGO_CRATES.item) + .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 bf22cafdb..3dbe5469e 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 @@ -5,6 +5,7 @@ import net.minecraft.world.item.DyeColor import net.minecraft.world.item.Items import net.minecraft.world.item.Tiers import ru.dbotthepony.mc.otm.registry.MBlocks +import ru.dbotthepony.mc.otm.registry.MItemTags import ru.dbotthepony.mc.otm.registry.MItems import ru.dbotthepony.mc.otm.registry.MRegistry import ru.dbotthepony.mc.otm.registry.MSoundEvents @@ -32,6 +33,8 @@ fun addTags(tagsProvider: TagsProvider) { MBlocks.STORAGE_CABLE ) + tagsProvider.items.appender(MItemTags.MINECART_CARGO_CRATES).add(MItems.CARGO_CRATE_MINECARTS.values) + tagsProvider.items.forge("hardened_glass").add(MRegistry.INDUSTRIAL_GLASS.allItems.values) tagsProvider.items.forge("hardened_glass/colorless").add(MRegistry.INDUSTRIAL_GLASS.item) tagsProvider.items.forge("hardened_glass/tinted").add(MRegistry.INDUSTRIAL_GLASS.items.values) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/CargoCrateScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/CargoCrateScreen.kt index dcaec248f..f941a1f48 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/CargoCrateScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/CargoCrateScreen.kt @@ -6,9 +6,22 @@ import ru.dbotthepony.mc.otm.client.screen.panels.FramePanel import ru.dbotthepony.mc.otm.client.screen.panels.GridPanel import ru.dbotthepony.mc.otm.client.screen.panels.SlotPanel import ru.dbotthepony.mc.otm.menu.CargoCrateMenu +import ru.dbotthepony.mc.otm.menu.MinecartCargoCrateMenu class CargoCrateScreen(menu: CargoCrateMenu, inventory: Inventory, title: Component) : MatteryScreen(menu, inventory, title) { - override fun makeMainFrame(): FramePanel> { + override fun makeMainFrame(): FramePanel> { + val frame = FramePanel(this, null, 0f, 0f, INVENTORY_FRAME_WIDTH, 22f + 4f + 6f * 18f, getTitle()) + val grid = GridPanel(this, frame, 8f, 18f, 9f * 18f, 6f * 18f, 9, 6) + + for (slot in menu.storageSlots) + SlotPanel(this, grid, slot) + + return frame + } +} + +class MinecartCargoCrateScreen(menu: MinecartCargoCrateMenu, inventory: Inventory, title: Component) : MatteryScreen(menu, inventory, title) { + override fun makeMainFrame(): FramePanel> { val frame = FramePanel(this, null, 0f, 0f, INVENTORY_FRAME_WIDTH, 22f + 4f + 6f * 18f, getTitle()) val grid = GridPanel(this, frame, 8f, 18f, 9f * 18f, 6f * 18f, 9, 6) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/entity/MinecartCargoCrate.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/entity/MinecartCargoCrate.kt new file mode 100644 index 000000000..01cc046f7 --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/entity/MinecartCargoCrate.kt @@ -0,0 +1,69 @@ +package ru.dbotthepony.mc.otm.entity + +import net.minecraft.core.NonNullList +import net.minecraft.world.entity.EntityType +import net.minecraft.world.entity.player.Inventory +import net.minecraft.world.entity.vehicle.AbstractMinecartContainer +import net.minecraft.world.inventory.AbstractContainerMenu +import net.minecraft.world.item.DyeColor +import net.minecraft.world.item.Item +import net.minecraft.world.item.ItemStack +import net.minecraft.world.level.Level +import net.minecraft.world.level.block.state.BlockState +import ru.dbotthepony.mc.otm.block.CargoCrateBlock +import ru.dbotthepony.mc.otm.block.entity.CargoCrateBlockEntity +import ru.dbotthepony.mc.otm.menu.MinecartCargoCrateMenu +import ru.dbotthepony.mc.otm.registry.MItems +import ru.dbotthepony.mc.otm.registry.MRegistry + +class MinecartCargoCrate( + type: EntityType<*>, + val color: DyeColor?, + level: Level, + x: Double = 0.0, + y: Double = 0.0, + z: Double = 0.0 +) : AbstractMinecartContainer(type, x, y, z, level) { + val block = MRegistry.CARGO_CRATES.allBlocks[color] ?: throw NullPointerException("No cargo crate block for color $color!") + val item = MItems.CARGO_CRATE_MINECARTS[color] ?: throw NullPointerException("No minecart cargo crate item for color $color!") + + private val itemStacksList = NonNullList.withSize(CargoCrateBlockEntity.CAPACITY, ItemStack.EMPTY) + + override fun getItemStacks(): NonNullList { + return itemStacksList + } + + override fun clearItemStacks() { + for (i in 0 until itemStacksList.size) { + itemStacksList[i] = ItemStack.EMPTY + } + } + + override fun getDropItem(): Item { + return item + } + + override fun getMinecartType(): Type { + return Type.CHEST + } + + override fun getDefaultDisplayBlockState(): BlockState { + return block.defaultBlockState().setValue(CargoCrateBlock.IS_OPEN, false) + } + + override fun getDefaultDisplayOffset(): Int { + return 8 + } + + override fun getContainerSize(): Int { + return CargoCrateBlockEntity.CAPACITY + } + + override fun createMenu(p_38222_: Int, p_38223_: Inventory): AbstractContainerMenu { + return MinecartCargoCrateMenu(p_38222_, p_38223_, this) + } + + override fun getPickResult(): ItemStack { + return ItemStack(item, 1) + } +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/MinecartCargoCrateItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/MinecartCargoCrateItem.kt new file mode 100644 index 000000000..09174e116 --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/MinecartCargoCrateItem.kt @@ -0,0 +1,53 @@ +package ru.dbotthepony.mc.otm.item + +import net.minecraft.tags.BlockTags +import net.minecraft.world.InteractionResult +import net.minecraft.world.entity.vehicle.AbstractMinecart +import net.minecraft.world.item.DyeColor +import net.minecraft.world.item.Item +import net.minecraft.world.item.context.UseOnContext +import net.minecraft.world.level.block.BaseRailBlock +import net.minecraft.world.level.block.state.properties.RailShape +import net.minecraft.world.level.gameevent.GameEvent +import ru.dbotthepony.mc.otm.OverdriveThatMatters +import ru.dbotthepony.mc.otm.entity.MinecartCargoCrate +import ru.dbotthepony.mc.otm.registry.MEntityTypes + +class MinecartCargoCrateItem(val color: DyeColor?) : Item(Properties().stacksTo(64).tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB)) { + override fun useOn(useOnContext: UseOnContext): InteractionResult { + val level = useOnContext.level + val blockpos = useOnContext.clickedPos + val blockstate = level.getBlockState(blockpos) + + if (!blockstate.`is`(BlockTags.RAILS)) { + return InteractionResult.FAIL + } + + val itemstack = useOnContext.itemInHand + + if (!level.isClientSide) { + val railshape = + if (blockstate.block is BaseRailBlock) + (blockstate.block as BaseRailBlock).getRailDirection(blockstate, level, blockpos, null) + else + RailShape.NORTH_SOUTH + + val d0 = if (railshape.isAscending) 0.5 else 0.0 + val type = MEntityTypes.CARGO_CRATE_MINECARTS[color] ?: throw NullPointerException("Unable to find minecart entity type for color $color!") + val entity = MinecartCargoCrate(type, color, level, blockpos.x.toDouble() + 0.5, blockpos.y.toDouble() + 0.0625 + d0, blockpos.z.toDouble() + 0.5) + + if (itemstack.hasCustomHoverName()) { + entity.customName = itemstack.hoverName + } + + level.addFreshEntity(entity) + level.gameEvent(GameEvent.ENTITY_PLACE, blockpos, GameEvent.Context.of(useOnContext.player, level.getBlockState(blockpos.below()))) + } + + if (useOnContext.player?.abilities?.instabuild != true) { + itemstack.shrink(1) + } + + return InteractionResult.sidedSuccess(level.isClientSide) + } +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/MinecartCargoCrateMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/MinecartCargoCrateMenu.kt new file mode 100644 index 000000000..db2319829 --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/MinecartCargoCrateMenu.kt @@ -0,0 +1,34 @@ +package ru.dbotthepony.mc.otm.menu + +import net.minecraft.world.Container +import net.minecraft.world.SimpleContainer +import net.minecraft.world.entity.player.Inventory +import net.minecraft.world.entity.player.Player +import ru.dbotthepony.mc.otm.core.ImmutableList +import ru.dbotthepony.mc.otm.block.entity.CargoCrateBlockEntity +import ru.dbotthepony.mc.otm.entity.MinecartCargoCrate +import ru.dbotthepony.mc.otm.registry.MMenus + +class MinecartCargoCrateMenu @JvmOverloads constructor( + p_38852_: Int, + inventory: Inventory, + val cart: MinecartCargoCrate? = null +) : MatteryMenu(MMenus.CARGO_CRATE, p_38852_, inventory) { + override val storageSlots: List + + init { + val container = cart as Container? ?: SimpleContainer(CargoCrateBlockEntity.CAPACITY) + + storageSlots = ImmutableList(CargoCrateBlockEntity.CAPACITY) { + val slot = MatterySlot(container, it) + addSlot(slot) + return@ImmutableList slot + } + + addInventorySlots() + } + + override fun stillValid(player: Player): Boolean { + return cart?.stillValid(player) ?: true + } +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt new file mode 100644 index 000000000..a43f5f3d4 --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Ext.kt @@ -0,0 +1,35 @@ +package ru.dbotthepony.mc.otm.registry + +import net.minecraft.world.item.DyeColor +import net.minecraftforge.registries.DeferredRegister +import ru.dbotthepony.mc.otm.item.MinecartCargoCrateItem + +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, + ) +} + +fun DeferredRegister.colored(prefix: String, factory: (color: DyeColor, name: String) -> T): Map { + return LazyMap(doColored(prefix, factory)) +} + +@Suppress("unchecked_cast") +fun DeferredRegister.allColored(prefix: String, factory: (color: DyeColor?, name: String) -> T): Map { + return LazyMap(doColored(prefix, factory).also { (it as MutableCollection T>>).add((null as DyeColor?) to register(prefix) { factory.invoke(null, prefix) }::get) }) +} 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 1ca2dd606..2076a4323 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MEntityTypes.kt @@ -1,10 +1,13 @@ package ru.dbotthepony.mc.otm.registry +import net.minecraft.client.model.geom.ModelLayers import net.minecraft.client.renderer.entity.EntityRenderer import net.minecraft.client.renderer.entity.EntityRenderers +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 @@ -12,6 +15,7 @@ import net.minecraftforge.registries.DeferredRegister import net.minecraftforge.registries.ForgeRegistries import ru.dbotthepony.mc.otm.OverdriveThatMatters import ru.dbotthepony.mc.otm.client.render.entity.PlasmaProjectileRenderer +import ru.dbotthepony.mc.otm.entity.MinecartCargoCrate import ru.dbotthepony.mc.otm.entity.PlasmaProjectile object MEntityTypes { @@ -21,6 +25,10 @@ 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 -> + EntityType.Builder.of({ it, level -> MinecartCargoCrate(it, color, level)}, MobCategory.MISC).sized(0.98F, 0.7F).clientTrackingRange(8).build(name) + } + internal fun register(bus: IEventBus) { registry.register(bus) bus.addListener(this::registerClient) @@ -30,6 +38,10 @@ object MEntityTypes { private fun registerClient(event: FMLClientSetupEvent) { event.enqueueWork { EntityRenderers.register(PLASMA) { PlasmaProjectileRenderer(it) as EntityRenderer } + + for (type in CARGO_CRATE_MINECARTS.values) { + EntityRenderers.register(type) { MinecartRenderer(it, ModelLayers.CHEST_MINECART) as EntityRenderer } + } } } } 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 79e4074a7..568b96be5 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItems.kt @@ -277,6 +277,8 @@ object MItems { { MIRROR }, ) + val CARGO_CRATE_MINECARTS = registry.allColored(MNames.MINECART_CARGO_CRATE) { color, _ -> MinecartCargoCrateItem(color) } + val EXOSUIT_PROBE: Item by registry.register(MNames.EXOSUIT_PROBE, ::ExoSuitProbeItem) val EXOSUIT_INVENTORY_UPGRADE_CREATIVE: Item by registry.register("exosuit_inventory_upgrade_creative") { ExoSuitSlotUpgradeItem(null, 9, Item.Properties().stacksTo(8).rarity(Rarity.EPIC).tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB)) } val EXOSUIT_CRAFTING_UPGRADE: Item by registry.register("exosuit_crafting_upgrade", ::ExoSuitCraftingUpgradeItem) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MMenus.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MMenus.kt index e1f7f81f2..ec03ab814 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MMenus.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MMenus.kt @@ -25,6 +25,7 @@ object MMenus { val MATTER_BOTTLER: MenuType<*> by registry.register(MNames.MATTER_BOTTLER) { MenuType(::MatterBottlerMenu) } val DRIVE_VIEWER: MenuType<*> by registry.register(MNames.DRIVE_VIEWER) { MenuType(::DriveViewerMenu) } val CARGO_CRATE: MenuType<*> by registry.register(MNames.CARGO_CRATE) { MenuType(::CargoCrateMenu) } + val MINECART_CARGO_CRATE: MenuType<*> by registry.register(MNames.MINECART_CARGO_CRATE) { MenuType(::MinecartCargoCrateMenu) } val DRIVE_RACK: MenuType<*> by registry.register(MNames.DRIVE_RACK) { MenuType(::DriveRackMenu) } val ITEM_MONITOR: MenuType<*> by registry.register(MNames.ITEM_MONITOR) { MenuType(::ItemMonitorMenu) } val ENERGY_COUNTER: MenuType<*> by registry.register(MNames.ENERGY_COUNTER) { MenuType(::EnergyCounterMenu) } @@ -57,6 +58,7 @@ object MMenus { MenuScreens.register(MATTER_BOTTLER as MenuType, ::MatterBottlerScreen) MenuScreens.register(DRIVE_VIEWER as MenuType, ::DriveViewerScreen) MenuScreens.register(CARGO_CRATE as MenuType, ::CargoCrateScreen) + MenuScreens.register(MINECART_CARGO_CRATE as MenuType, ::MinecartCargoCrateScreen) MenuScreens.register(DRIVE_RACK as MenuType, ::DriveRackScreen) MenuScreens.register(ITEM_MONITOR as MenuType, ::ItemMonitorScreen) MenuScreens.register(ENERGY_COUNTER as MenuType, ::EnergyCounterScreen) 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 b096bd7fe..ab1091a34 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt @@ -41,6 +41,7 @@ object MNames { const val GRAVITATION_STABILIZER_LENS = "gravitation_stabilizer_lens" const val CARGO_CRATE = "cargo_crate" + const val MINECART_CARGO_CRATE = "minecart_cargo_crate" const val DECORATIVE_CRATE = "decorative_crate" const val STORAGE_BUS = "storage_bus" diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Tags.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Tags.kt index 49008ff18..d7cc5bc49 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Tags.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/Tags.kt @@ -12,7 +12,8 @@ object MItemTags { val TRITANIUM_PLATES: TagKey = ItemTags.create(ResourceLocation("forge", "plates/tritanium")) val IRON_PLATES: TagKey = ItemTags.create(ResourceLocation("forge", "plates/iron")) val GOLD_PLATES: TagKey = ItemTags.create(ResourceLocation("forge", "plates/gold")) - val TRITANIUM_CRATES: TagKey = ItemTags.create(ResourceLocation(OverdriveThatMatters.MOD_ID, "tritanium_crates")) + val CARGO_CRATES: TagKey = ItemTags.create(ResourceLocation(OverdriveThatMatters.MOD_ID, "cargo_crates")) + val MINECART_CARGO_CRATES: TagKey = ItemTags.create(ResourceLocation(OverdriveThatMatters.MOD_ID, "minecart_cargo_crates")) val INDUSTRIAL_GLASS: TagKey = ItemTags.create(ResourceLocation(OverdriveThatMatters.MOD_ID, "industrial_glass")) val BASIC_CIRCUIT: TagKey = ItemTags.create(ResourceLocation("forge", "circuits/basic"))