Wither skeletons sometimes start with a hoe
This commit is contained in:
parent
668d4eae08
commit
a6e7f81322
|
|
@ -1,6 +1,8 @@
|
||||||
package xyz.nearmisses.patience.mc_rebalance.mixin.mob;
|
package xyz.nearmisses.patience.mc_rebalance.mixin.mob;
|
||||||
|
|
||||||
import net.minecraft.core.Holder;
|
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.MobEffect;
|
||||||
import net.minecraft.world.effect.MobEffectInstance;
|
import net.minecraft.world.effect.MobEffectInstance;
|
||||||
import net.minecraft.world.effect.MobEffects;
|
import net.minecraft.world.effect.MobEffects;
|
||||||
|
|
@ -15,7 +17,9 @@ import net.minecraft.world.item.Items;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
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.Redirect;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
@ -26,6 +30,8 @@ public abstract class WitherSkeletonRework extends AbstractSkeleton {
|
||||||
super(entityType, level);
|
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"))
|
@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) {
|
public boolean doHurtTarget(LivingEntity instance, MobEffectInstance mobEffectInstance, Entity entity) {
|
||||||
Map<Holder<MobEffect>, MobEffectInstance> effectsMap = instance.getActiveEffectsMap();
|
Map<Holder<MobEffect>, MobEffectInstance> effectsMap = instance.getActiveEffectsMap();
|
||||||
|
|
@ -52,4 +58,15 @@ public abstract class WitherSkeletonRework extends AbstractSkeleton {
|
||||||
}
|
}
|
||||||
return true;
|
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)
|
||||||
}
|
}
|
||||||
Loading…
Reference in a new issue