From a6e7f81322fa59c5710e6e74c7b05e4480ec35e5 Mon Sep 17 00:00:00 2001 From: patience Date: Sun, 1 Mar 2026 04:17:48 +0000 Subject: [PATCH] Wither skeletons sometimes start with a hoe --- .../mixin/mob/WitherSkeletonRework.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/mob/WitherSkeletonRework.java b/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/mob/WitherSkeletonRework.java index 0f65bfc..852daeb 100644 --- a/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/mob/WitherSkeletonRework.java +++ b/src/main/java/xyz/nearmisses/patience/mc_rebalance/mixin/mob/WitherSkeletonRework.java @@ -1,6 +1,8 @@ package xyz.nearmisses.patience.mc_rebalance.mixin.mob; import net.minecraft.core.Holder; +import net.minecraft.util.RandomSource; +import net.minecraft.world.DifficultyInstance; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; @@ -15,7 +17,9 @@ import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; 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.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.Map; @@ -26,6 +30,8 @@ public abstract class WitherSkeletonRework extends AbstractSkeleton { super(entityType, level); } + // Build up wither/wipe wither above a certain value + // Note: nerf Wither effect in general @Redirect(method = "doHurtTarget", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;addEffect(Lnet/minecraft/world/effect/MobEffectInstance;Lnet/minecraft/world/entity/Entity;)Z")) public boolean doHurtTarget(LivingEntity instance, MobEffectInstance mobEffectInstance, Entity entity) { Map, MobEffectInstance> effectsMap = instance.getActiveEffectsMap(); @@ -52,4 +58,15 @@ public abstract class WitherSkeletonRework extends AbstractSkeleton { } return true; } + + // To warn players in advance, make wither skeletons occasionally hold the hoe initially + @Inject(method = "populateDefaultEquipmentSlots", at = @At("HEAD"), cancellable = true) + public void populateDefaultEquipmentSlots(RandomSource randomSource, DifficultyInstance difficultyInstance, CallbackInfo ci){ + if(randomSource.nextBoolean()){ + this.setItemSlot(EquipmentSlot.MAINHAND, new ItemStack(Items.STONE_HOE)); + ci.cancel(); + } + } + + // Consider enchanting for added warning (omitted due to visual design concerns) } \ No newline at end of file