Allow Disabling Zombie Villager Aggression

Ability to configure if Zombies will be aggressive towards Villagers.

By: Dylan Xaldin <Puremin0rez515@gmail.com>
This commit is contained in:
CraftBukkit/Spigot 2013-12-12 18:05:03 -06:00
parent 3d4c222263
commit 0abc9c4cd1
2 changed files with 22 additions and 5 deletions

View File

@ -55,6 +55,15 @@
public Zombie(EntityType<? extends Zombie> type, Level world) {
super(type, world);
@@ -115,7 +123,7 @@
this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D));
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[0])).setAlertOthers(ZombifiedPiglin.class));
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
- this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false));
+ if ( this.level().spigotConfig.zombieAggressiveTowardsVillager ) this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); // Spigot
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true));
this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR));
}
@@ -203,7 +211,10 @@
public void tick() {
if (!this.level().isClientSide && this.isAlive() && !this.isNoAi()) {
@ -109,10 +118,12 @@
- entityzombievillager1.setVillagerXp(villager.getVillagerXp());
- if (!this.isSilent()) {
- world.levelEvent((Player) null, 1026, this.blockPosition(), 0);
- }
+ // CraftBukkit start
+ return Zombie.convertVillagerToZombieVillager(world, villager, this.blockPosition(), this.isSilent(), EntityTransformEvent.TransformReason.INFECTION, CreatureSpawnEvent.SpawnReason.INFECTION) != null;
+ }
+
- });
+ public static ZombieVillager convertVillagerToZombieVillager(ServerLevel worldserver, Villager entityvillager, net.minecraft.core.BlockPos blockPosition, boolean silent, EntityTransformEvent.TransformReason transformReason, CreatureSpawnEvent.SpawnReason spawnReason) {
+ // CraftBukkit end
+ ZombieVillager entityzombievillager = (ZombieVillager) entityvillager.convertTo(EntityType.ZOMBIE_VILLAGER, ConversionParams.single(entityvillager, true, true), (entityzombievillager1) -> {
@ -124,12 +135,11 @@
+ // CraftBukkit start
+ if (!silent) {
+ worldserver.levelEvent((Player) null, 1026, blockPosition, 0);
}
- });
+ }, transformReason, spawnReason);
+ }
- return entityzombievillager != null;
+ }, transformReason, spawnReason);
+
+ return entityzombievillager;
+ // CraftBukkit end
}

View File

@ -255,4 +255,11 @@ public class SpigotWorldConfig
this.tridentDespawnRate = this.getInt( "trident-despawn-rate", this.arrowDespawnRate );
this.log( "Arrow Despawn Rate: " + this.arrowDespawnRate + " Trident Respawn Rate:" + this.tridentDespawnRate );
}
public boolean zombieAggressiveTowardsVillager;
private void zombieAggressiveTowardsVillager()
{
this.zombieAggressiveTowardsVillager = this.getBoolean( "zombie-aggressive-towards-villager", true );
this.log( "Zombie Aggressive Towards Villager: " + this.zombieAggressiveTowardsVillager );
}
}