From 0b5ff224f8686a148dddc76dce0436c25a995dc3 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Fri, 21 Feb 2025 18:21:27 +0700 Subject: [PATCH] Allow interacting with essence storage as fluid tank --- .../mc/otm/block/tech/EssenceStorageBlock.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EssenceStorageBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EssenceStorageBlock.kt index 05e7ad8f9..b6187b6bf 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EssenceStorageBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/tech/EssenceStorageBlock.kt @@ -23,6 +23,7 @@ import net.minecraft.world.level.material.PushReaction import net.minecraft.world.phys.BlockHitResult import net.minecraft.world.phys.shapes.CollisionContext import net.minecraft.world.phys.shapes.VoxelShape +import net.neoforged.neoforge.fluids.FluidUtil import ru.dbotthepony.mc.otm.block.RotatableMatteryBlock import ru.dbotthepony.mc.otm.block.addSimpleDescription import ru.dbotthepony.mc.otm.block.entity.tech.EssenceStorageBlockEntity @@ -32,6 +33,7 @@ import ru.dbotthepony.mc.otm.client.minecraft import ru.dbotthepony.mc.otm.core.TranslatableComponent import ru.dbotthepony.mc.otm.core.get import ru.dbotthepony.mc.otm.core.util.getLevelFromXp +import ru.dbotthepony.mc.otm.item.EssenceServoItem import ru.dbotthepony.mc.otm.registry.game.MItems import ru.dbotthepony.mc.otm.shapes.BlockShapes @@ -65,8 +67,12 @@ class EssenceStorageBlock(val color: DyeColor?) : RotatableMatteryBlock(Properti } override fun useItemOn(itemStack: ItemStack, blockState: BlockState, level: Level, blockPos: BlockPos, ply: Player, hand: InteractionHand, blockHitResult: BlockHitResult): ItemInteractionResult { - if (itemStack.item == MItems.ESSENCE_SERVO) { - return MItems.ESSENCE_SERVO.useServo(ply, blockPos) + if (itemStack.item is EssenceServoItem) { + return (itemStack.item as EssenceServoItem).useServo(ply, blockPos) + } + + if (FluidUtil.interactWithFluidHandler(ply, hand, level, blockPos, blockHitResult.direction)) { + return ItemInteractionResult.sidedSuccess(level.isClientSide) } return super.useItemOn(itemStack, blockState, level, blockPos, ply, hand, blockHitResult)