diff --git a/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/EraseVanillaResistance.java b/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/EraseVanillaResistance.java new file mode 100644 index 0000000..9ee5f28 --- /dev/null +++ b/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/EraseVanillaResistance.java @@ -0,0 +1,22 @@ +package xyz.nearmisses.patience.mc_rebalance.mixin; + +import net.minecraft.core.Holder; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; +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.Redirect; + +@Mixin(LivingEntity.class) +public abstract class EraseVanillaResistance { + @Shadow + public abstract boolean hasEffect(Holder holder); + + @Redirect(method="getDamageAfterMagicAbsorb", at=@At(value="INVOKE", target="Lnet/minecraft/world/entity/LivingEntity;hasEffect(Lnet/minecraft/core/Holder;)Z")) + private boolean iDenyYourResistanceAndSubstituteMyOwn(LivingEntity instance, Holder holder){ + if(holder==MobEffects.DAMAGE_RESISTANCE){return false;} + return this.hasEffect(holder); + } +} diff --git a/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/ResistanceEffectRework.java b/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/ResistanceEffectRework.java new file mode 100644 index 0000000..9330b17 --- /dev/null +++ b/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/ResistanceEffectRework.java @@ -0,0 +1,42 @@ +package xyz.nearmisses.patience.mc_rebalance.mixin; + +import net.minecraft.core.Holder; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +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.Redirect; + +import java.util.Objects; + + +@Mixin(MobEffects.class) +public class ResistanceEffectRework { + @Shadow + private static Holder register(String string, MobEffect mobEffect) { + throw new UnsupportedOperationException("Implemented via mixin"); + } + + @Redirect(method="", at=@At(value="INVOKE", target = "Lnet/minecraft/world/effect/MobEffects;register(Ljava/lang/String;Lnet/minecraft/world/effect/MobEffect;)Lnet/minecraft/core/Holder;")) + private static Holder resistanceGrantsArmor(String string, MobEffect mobEffect){ + if(Objects.equals(string, "resistance")){ + return register(string, mobEffect + .addAttributeModifier(Attributes.ARMOR, + ResourceLocation.withDefaultNamespace("effect.resistance"), + 2.0F, + AttributeModifier.Operation.ADD_VALUE) + .addAttributeModifier(Attributes.ARMOR_TOUGHNESS, + ResourceLocation.withDefaultNamespace("effect.resistance"), + 2.0F, + AttributeModifier.Operation.ADD_VALUE + ) + ); + }else{ + return register(string, mobEffect); + } + } +} diff --git a/src/main/resources/mc_rebalance.mixins.json b/src/main/resources/mc_rebalance.mixins.json index 7671258..0c34ecd 100644 --- a/src/main/resources/mc_rebalance.mixins.json +++ b/src/main/resources/mc_rebalance.mixins.json @@ -3,12 +3,14 @@ "package": "xyz.nearmisses.patience.mc_rebalance.mixin", "compatibilityLevel": "JAVA_21", "mixins": [ + "EraseVanillaResistance", "ExperienceOrbRework", "GrowRateTweak", "LingeringCooldownTweak", "PlayerTweaks", "PotionThrowRework", "PotionVisualsRework", + "ResistanceEffectRework", "SplashCooldownTweak", "mob.BlazeAIRework", "mob.BlazeRework",