feat: simple automation for custom arch. cutter machine
This commit is contained in:
parent
69b8c79e57
commit
41deab1fea
2 changed files with 43 additions and 0 deletions
|
|
@ -9,6 +9,8 @@ import net.neoforged.fml.common.Mod
|
|||
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent
|
||||
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent
|
||||
import net.neoforged.fml.event.lifecycle.FMLDedicatedServerSetupEvent
|
||||
import net.neoforged.neoforge.capabilities.Capabilities
|
||||
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent
|
||||
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent
|
||||
import net.neoforged.neoforge.data.event.GatherDataEvent
|
||||
import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent
|
||||
|
|
@ -21,6 +23,7 @@ import thedarkcolour.kotlinforforge.neoforge.forge.MOD_BUS
|
|||
import thedarkcolour.kotlinforforge.neoforge.forge.runForDist
|
||||
import xyz.nuark.mcmod.mclschcannoncompat.block.ModBlockEntityTypes
|
||||
import xyz.nuark.mcmod.mclschcannoncompat.block.ModBlocks
|
||||
import xyz.nuark.mcmod.mclschcannoncompat.block.entity.OrnamentFabricatorBlockEntity
|
||||
import xyz.nuark.mcmod.mclschcannoncompat.comands.ModCommands
|
||||
import xyz.nuark.mcmod.mclschcannoncompat.datagen.ModItemModelProvider
|
||||
import xyz.nuark.mcmod.mclschcannoncompat.datagen.ModLanguageProviders
|
||||
|
|
@ -93,6 +96,16 @@ object Mclschcannoncompat {
|
|||
@Suppress("unused") val registrar = event.registrar(ID).versioned(modVersion)
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
fun onRegisterCapabilities(event: RegisterCapabilitiesEvent) {
|
||||
event.registerBlockEntity(
|
||||
Capabilities.ItemHandler.BLOCK,
|
||||
ModBlockEntityTypes.ORNAMENT_FABRICATOR.get()
|
||||
) { be, side ->
|
||||
(be as OrnamentFabricatorBlockEntity).getAutomationHandler(side)
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
fun gatherData(event: GatherDataEvent) {
|
||||
val existingFileHelper = event.existingFileHelper
|
||||
|
|
|
|||
|
|
@ -20,8 +20,10 @@ import net.minecraft.world.inventory.ContainerData
|
|||
import net.minecraft.world.item.BlockItem
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.component.BlockItemStateProperties
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.world.level.block.entity.BlockEntity
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.neoforged.neoforge.items.IItemHandler
|
||||
import net.neoforged.neoforge.items.ItemStackHandler
|
||||
import xyz.nuark.mcmod.mclschcannoncompat.block.ModBlockEntityTypes
|
||||
import xyz.nuark.mcmod.mclschcannoncompat.menu.OrnamentFabricatorMenu
|
||||
|
|
@ -291,6 +293,34 @@ class OrnamentFabricatorBlockEntity(
|
|||
level?.let { Containers.dropContents(it, blockPos, inventory) }
|
||||
}
|
||||
|
||||
fun getAutomationHandler(side: Direction?): IItemHandler {
|
||||
return object : IItemHandler {
|
||||
override fun getSlots(): Int = itemHandler.slots
|
||||
|
||||
override fun getStackInSlot(slot: Int): ItemStack = itemHandler.getStackInSlot(slot)
|
||||
|
||||
override fun insertItem(slot: Int, stack: ItemStack, simulate: Boolean): ItemStack {
|
||||
if (side != null && side != Direction.UP) return stack
|
||||
if (slot != SLOT_INPUT_A && slot != SLOT_INPUT_B) return stack
|
||||
return itemHandler.insertItem(slot, stack, simulate)
|
||||
}
|
||||
|
||||
override fun extractItem(slot: Int, amount: Int, simulate: Boolean): ItemStack {
|
||||
if (side != null && side != Direction.DOWN) return ItemStack.EMPTY
|
||||
if (slot != SLOT_OUTPUT) return ItemStack.EMPTY
|
||||
return itemHandler.extractItem(slot, amount, simulate)
|
||||
}
|
||||
|
||||
override fun getSlotLimit(slot: Int): Int = itemHandler.getSlotLimit(slot)
|
||||
|
||||
override fun isItemValid(slot: Int, stack: ItemStack): Boolean {
|
||||
if (side != null && side != Direction.UP) return false
|
||||
if (slot != SLOT_INPUT_A && slot != SLOT_INPUT_B) return false
|
||||
return itemHandler.isItemValid(slot, stack)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val SLOT_INPUT_A = 0
|
||||
const val SLOT_INPUT_B = 1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue