diff --git a/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/CooldownAttacksTweak.java b/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/CooldownAttacksTweak.java new file mode 100644 index 0000000..2c38760 --- /dev/null +++ b/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/CooldownAttacksTweak.java @@ -0,0 +1,32 @@ +package xyz.nearmisses.patience.mc_rebalance.mixin; + +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemCooldowns; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Player.class) +public abstract class CooldownAttacksTweak extends LivingEntity { + @Shadow + public abstract ItemCooldowns getCooldowns(); + + protected CooldownAttacksTweak(EntityType entityType, Level level) { + super(entityType, level); + } + + @Inject(method="attack", at=@At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;getWeaponItem()Lnet/minecraft/world/item/ItemStack;"), cancellable = true) + private void attack(Entity entity, CallbackInfo ci){ + ItemStack itemStack = this.getWeaponItem(); + if(this.getCooldowns().isOnCooldown(itemStack.getItem())){ + ci.cancel(); + } + } +} diff --git a/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/DiggerItemHitCooldownsTweak.java b/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/DiggerItemHitCooldownsTweak.java deleted file mode 100644 index 50cc614..0000000 --- a/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/DiggerItemHitCooldownsTweak.java +++ /dev/null @@ -1,21 +0,0 @@ -package xyz.nearmisses.patience.mc_rebalance.mixin; - -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.DiggerItem; -import net.minecraft.world.item.ItemStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -// Required for the Windup enchantment effect to work correctly. Why would this not happen by default? -@Mixin(DiggerItem.class) -public class DiggerItemHitCooldownsTweak { - @Inject(method = "hurtEnemy", at = @At("HEAD"), cancellable = true) - private static void hurtEnemy(ItemStack itemStack, LivingEntity owner, LivingEntity target, CallbackInfoReturnable cir){ - if(owner instanceof Player && ((Player)owner).getCooldowns().isOnCooldown(itemStack.getItem())){ - cir.setReturnValue(false); - } - } -} diff --git a/src/main/resources/mc_rebalance.mixins.json b/src/main/resources/mc_rebalance.mixins.json index 92f8b4c..3a9fbd7 100644 --- a/src/main/resources/mc_rebalance.mixins.json +++ b/src/main/resources/mc_rebalance.mixins.json @@ -5,8 +5,8 @@ "mixins": [ "BlazeAIRework", "BlazeRework", + "CooldownAttacksTweak", "CreakingRework", - "DiggerItemHitCooldownsTweak", "ExperienceOrbRework", "HappyGhastTweak", "WardenRework",