Zombies are faster and aggro for slightly less distance

This commit is contained in:
patience 2026-07-04 16:09:22 +01:00
parent 3108334b23
commit 96eb25aa78
No known key found for this signature in database

View file

@ -1,6 +1,8 @@
package xyz.nearmisses.patience.mc_rebalance.mixin.mob; package xyz.nearmisses.patience.mc_rebalance.mixin.mob;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.entity.monster.Monster; import net.minecraft.world.entity.monster.Monster;
import net.minecraft.world.entity.monster.Zombie; import net.minecraft.world.entity.monster.Zombie;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
@ -8,6 +10,7 @@ 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.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(Zombie.class) @Mixin(Zombie.class)
public class ZombieRework extends Monster{ public class ZombieRework extends Monster{
@ -16,13 +19,27 @@ public class ZombieRework extends Monster{
super(entityType, level); super(entityType, level);
} }
@Inject(method="createAttributes", at=@At("RETURN"), cancellable=true)
private static void createAttributes(CallbackInfoReturnable<AttributeSupplier.Builder> cir) {
cir.setReturnValue(Monster.createMonsterAttributes()
.add(Attributes.FOLLOW_RANGE, 30.0F) // -5 from vanilla
.add(Attributes.MOVEMENT_SPEED, 0.35F) // +.12 from vanilla
.add(Attributes.ATTACK_DAMAGE, 3.0F)
.add(Attributes.ARMOR, 2.0F)
.add(Attributes.SPAWN_REINFORCEMENTS_CHANCE)
);
}
@Inject(method="tick", at=@At("TAIL")) @Inject(method="tick", at=@At("TAIL"))
private void sprintNearToTarget(CallbackInfo ci){ private void sprintNearToTarget(CallbackInfo ci){
if(this.getTarget()!=null && this.getTarget().position().distanceTo(this.position())<8){ if(this.getTarget()!=null && this.getTarget().position().distanceTo(this.position())<12){
this.setSprinting(true); this.setSprinting(true);
} }
if(this.isSprinting() && this.getTarget()==null) { if(this.isSprinting()) {
if(this.canSpawnSprintParticle()){spawnSprintParticle();}
if(this.getTarget()==null) {
this.setSprinting(false); this.setSprinting(false);
} }
} }
}
} }