Wither skeletons sometimes start with a hoe

This commit is contained in:
patience 2026-03-01 04:17:48 +00:00
parent 668d4eae08
commit a6e7f81322
No known key found for this signature in database

View file

@ -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<Holder<MobEffect>, 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)
}