From bac536bf39e02bb4b10a1b80c256a85a78634410 Mon Sep 17 00:00:00 2001 From: SammySemicolon <69329424+SammySemicolon@users.noreply.github.com> Date: Thu, 26 Sep 2024 19:53:27 +0200 Subject: [PATCH] Update SpiritCrucibleCoreBlockEntity.java --- .../SpiritCrucibleCoreBlockEntity.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/main/java/com/sammy/malum/common/block/curiosities/spirit_crucible/SpiritCrucibleCoreBlockEntity.java b/src/main/java/com/sammy/malum/common/block/curiosities/spirit_crucible/SpiritCrucibleCoreBlockEntity.java index 407ca52d2..ed9a614f3 100644 --- a/src/main/java/com/sammy/malum/common/block/curiosities/spirit_crucible/SpiritCrucibleCoreBlockEntity.java +++ b/src/main/java/com/sammy/malum/common/block/curiosities/spirit_crucible/SpiritCrucibleCoreBlockEntity.java @@ -23,6 +23,7 @@ import net.minecraft.world.entity.item.*; import net.minecraft.world.entity.player.*; import net.minecraft.world.item.*; +import net.minecraft.world.level.*; import net.minecraft.world.level.block.entity.*; import net.minecraft.world.level.block.state.*; import net.minecraft.world.phys.*; @@ -155,6 +156,42 @@ public void loadAdditional(CompoundTag compound, HolderLookup.Provider pRegistri super.loadAdditional(compound, pRegistries); } + @Override + public ItemInteractionResult onUseWithItem(Player pPlayer, ItemStack pStack, InteractionHand pHand) { + if (pHand.equals(InteractionHand.MAIN_HAND)) { + var item = pStack.getItem(); + var level = pPlayer.level(); + if (item.equals(ItemRegistry.TUNING_FORK.get())) { + tuningType = tuningType.next(tuningType, this); + level.playSound(null, worldPosition, SoundRegistry.TUNING_FORK_TINKERS.get(), SoundSource.BLOCKS, 1.25f + level.random.nextFloat() * 0.5f, 0.75f + level.random.nextFloat() * 0.5f); + recalibrateAccelerators(level, worldPosition); + BlockHelper.updateAndNotifyState(level, worldPosition); + return ItemInteractionResult.SUCCESS; + } + final boolean augmentOnly = item instanceof AbstractAugmentItem; + final boolean isEmpty = pStack.isEmpty(); + if (augmentOnly || (isEmpty && inventory.isEmpty() && spiritInventory.isEmpty())) { + final boolean isCoreAugment = item instanceof AbstractCoreAugmentItem; + if ((augmentOnly && !isCoreAugment) || isEmpty) { + ItemStack stack = augmentInventory.interact(level, pPlayer, pHand); + if (!stack.isEmpty()) { + recalibrateAccelerators(this.level, worldPosition); + return InteractionResult.SUCCESS; + } + } + if ((augmentOnly && isCoreAugment) || isEmpty) { + ItemStack stack = coreAugmentInventory.interact(level, pPlayer, pHand); + if (!stack.isEmpty()) { + recalibrateAccelerators(this.level, worldPosition); + return InteractionResult.SUCCESS; + } + } + } + } + + return super.onUseWithItem(pPlayer, pStack, pHand); + } + @Override public InteractionResult onUse(Player player, InteractionHand hand) { if (level.isClientSide) {