From 56cce749f7d4c06a16c9356bf6b3f32a16fa26de Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 3 Mar 2025 13:40:33 +0700 Subject: [PATCH] Make HFB be correct tool for plants and cobwebs --- .../mc/otm/item/weapon/EnergySwordItem.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/EnergySwordItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/EnergySwordItem.kt index c5a97f16d..ec7cc1d4a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/EnergySwordItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/EnergySwordItem.kt @@ -1,6 +1,7 @@ package ru.dbotthepony.mc.otm.item.weapon import net.minecraft.core.BlockPos +import net.minecraft.core.component.DataComponents import net.minecraft.tags.BlockTags import net.minecraft.world.entity.EquipmentSlotGroup import net.minecraft.world.entity.LivingEntity @@ -138,7 +139,7 @@ class EnergySwordItem : MatteryItem(Properties().stacksTo(1).rarity(Rarity.RARE) p_41419_: BlockPos, user: LivingEntity ): Boolean { - if (blockState.getDestroySpeed(p_41417_, p_41419_) != 0f && (user !is Player || !user.isCreative)) { + if (blockState.getDestroySpeed(p_41417_, p_41419_) > 0f && (user !is Player || !user.isCreative)) { val energy = itemStack.matteryEnergy if (blockState.`is`(BlockTags.SWORD_EFFICIENT)) { @@ -155,6 +156,17 @@ class EnergySwordItem : MatteryItem(Properties().stacksTo(1).rarity(Rarity.RARE) return true } + override fun isCorrectToolForDrops(stack: ItemStack, state: BlockState): Boolean { + val energy = stack.matteryEnergy ?: return super.isCorrectToolForDrops(stack, state) + + if (state.`is`(BlockTags.SWORD_EFFICIENT) && energy.batteryLevel >= PLANT_POWER_COST) + return true + else if (state.`is`(Blocks.COBWEB) && energy.batteryLevel >= COBWEB_POWER_COST) + return true + + return super.isCorrectToolForDrops(stack, state) + } + private fun cap(stack: ItemStack) = EnergyConsumerItem(stack, MAX_ENERGY) override fun registerCapabilities(event: RegisterCapabilitiesEvent) {