package net.shadowfacts.phycon.item import net.minecraft.entity.ItemEntity import net.minecraft.item.Item import net.minecraft.item.ItemStack import net.minecraft.item.ItemUsageContext import net.minecraft.util.ActionResult import net.minecraft.util.Identifier import net.shadowfacts.phycon.PhysicalConnectivity import net.shadowfacts.phycon.block.DeviceBlock /** * @author shadowfacts */ class ScrewdriverItem: Item(Settings()) { companion object { val ID = Identifier(PhysicalConnectivity.MODID, "screwdriver") } override fun useOnBlock(context: ItemUsageContext): ActionResult { val state = context.world.getBlockState(context.blockPos) val block = state.block if (block is DeviceBlock<*>) { if (!context.world.isClient) { val be = block.getBlockEntity(context.world, context.blockPos)!! val stack = ItemStack(block) val beTag = stack.getOrCreateSubTag("BlockEntityTag") // remove x, y, z entries for stacking purposes beTag.remove("x") beTag.remove("y") beTag.remove("z") be.toTag(beTag) val entity = ItemEntity(context.world, context.blockPos.x.toDouble(), context.blockPos.y.toDouble(), context.blockPos.z.toDouble(), stack) context.world.spawnEntity(entity) context.world.breakBlock(context.blockPos, false) } return ActionResult.SUCCESS } else { return ActionResult.PASS } } }