From 82f09e2bac45ca17395ef53ccbf272f339c760bc Mon Sep 17 00:00:00 2001 From: patience Date: Sun, 22 Feb 2026 15:59:18 +0000 Subject: [PATCH] Added logic to Player class to read elytra cooldowns --- .../enchantment/effect/SmackEffect.java | 6 +----- ...ooldownAttacksTweak.java => PlayerTweaks.java} | 15 +++++++++++++-- src/main/resources/mc_rebalance.mixins.json | 3 ++- 3 files changed, 16 insertions(+), 8 deletions(-) rename src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/{CooldownAttacksTweak.java => PlayerTweaks.java} (58%) diff --git a/src/main/java/xyz/nearmisses/patience/mc_rebalance/enchantment/effect/SmackEffect.java b/src/main/java/xyz/nearmisses/patience/mc_rebalance/enchantment/effect/SmackEffect.java index 887126d..8a80806 100644 --- a/src/main/java/xyz/nearmisses/patience/mc_rebalance/enchantment/effect/SmackEffect.java +++ b/src/main/java/xyz/nearmisses/patience/mc_rebalance/enchantment/effect/SmackEffect.java @@ -21,11 +21,7 @@ public record SmackEffect(LevelBasedValue amount) implements EnchantmentEntityEf @Override public void apply(ServerLevel world, int level, EnchantedItemInUse context, Entity target, Vec3 pos) { - /*boolean playerAndCharged; - if(context.owner()!=null && context.owner() instanceof Player player && player){ - playerAndCharged=true; - }*/ - if (context.owner() != null && target instanceof Player player && player.getInventory().getArmor(1).is(Items.ELYTRA)) { + if (target instanceof Player player && player.getInventory().getArmor(2).is(Items.ELYTRA)) { player.getCooldowns().addCooldown(Items.ELYTRA, (int)(20 * this.amount.calculate(level)) ); // Tick conversion } } diff --git a/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/CooldownAttacksTweak.java b/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/PlayerTweaks.java similarity index 58% rename from src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/CooldownAttacksTweak.java rename to src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/PlayerTweaks.java index 2c38760..f6ca84f 100644 --- a/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/CooldownAttacksTweak.java +++ b/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/PlayerTweaks.java @@ -2,6 +2,7 @@ package xyz.nearmisses.patience.mc_rebalance.mixin; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemCooldowns; @@ -12,16 +13,18 @@ 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; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(Player.class) -public abstract class CooldownAttacksTweak extends LivingEntity { +public abstract class PlayerTweaks extends LivingEntity { @Shadow public abstract ItemCooldowns getCooldowns(); - protected CooldownAttacksTweak(EntityType entityType, Level level) { + protected PlayerTweaks(EntityType entityType, Level level) { super(entityType, level); } + // Disable attacks from tools on cooldown (item tier variants intentionally omitted out of curiosity) @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(); @@ -29,4 +32,12 @@ public abstract class CooldownAttacksTweak extends LivingEntity { ci.cancel(); } } + + // Disable elytra flight (should work on modded variants) + @Inject(method="tryToStartFallFlying", at=@At("HEAD"), cancellable = true) + private void tryToStartFallFlying(CallbackInfoReturnable cir){ + if(!this.getItemBySlot(EquipmentSlot.CHEST).isEmpty() && this.getCooldowns().isOnCooldown(this.getItemBySlot(EquipmentSlot.CHEST).getItem())){ + cir.setReturnValue(false); + } + } } diff --git a/src/main/resources/mc_rebalance.mixins.json b/src/main/resources/mc_rebalance.mixins.json index 3a9fbd7..767c25f 100644 --- a/src/main/resources/mc_rebalance.mixins.json +++ b/src/main/resources/mc_rebalance.mixins.json @@ -5,9 +5,10 @@ "mixins": [ "BlazeAIRework", "BlazeRework", - "CooldownAttacksTweak", + "PlayerTweaks", "CreakingRework", "ExperienceOrbRework", + "GrowRateTweak", "HappyGhastTweak", "WardenRework", "WitherSkeletonRework"