package net.minecraft.server; public class PathfinderGoalMakeLove extends PathfinderGoal { private final EntityVillager b; private EntityVillager c; private final World d; private int e; Village a; public PathfinderGoalMakeLove(EntityVillager entityvillager) { this.b = entityvillager; this.d = entityvillager.world; this.a(3); } public boolean a() { if (this.b.getAge() != 0) { return false; } else if (this.b.getRandom().nextInt(500) != 0) { return false; } else { this.a = this.d.ai().getClosestVillage(new BlockPosition(this.b), 0); if (this.a == null) { return false; } else if (this.f() && this.b.r(true)) { Entity entity = this.d.a(EntityVillager.class, this.b.getBoundingBox().grow(8.0D, 3.0D, 8.0D), (Entity) this.b); if (entity == null) { return false; } else { this.c = (EntityVillager) entity; return this.c.getAge() == 0 && this.c.r(true); } } else { return false; } } } public void c() { this.e = 300; this.b.p(true); } public void d() { this.a = null; this.c = null; this.b.p(false); } public boolean b() { return this.e >= 0 && this.f() && this.b.getAge() == 0 && this.b.r(false); } public void e() { --this.e; this.b.getControllerLook().a(this.c, 10.0F, 30.0F); if (this.b.h(this.c) > 2.25D) { this.b.getNavigation().a((Entity) this.c, 0.25D); } else if (this.e == 0 && this.c.di()) { this.i(); } if (this.b.getRandom().nextInt(35) == 0) { this.d.broadcastEntityEffect(this.b, (byte) 12); } } private boolean f() { if (!this.a.i()) { return false; } else { int i = (int) ((double) ((float) this.a.c()) * 0.35D); return this.a.e() < i; } } private void i() { EntityVillager entityvillager = this.b.b((EntityAgeable) this.c); // CraftBukkit start - call EntityBreedEvent if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(entityvillager, this.b, this.c, null, null, 0).isCancelled()) { return; } // CraftBukkit end this.c.setAgeRaw(6000); this.b.setAgeRaw(6000); this.c.s(false); this.b.s(false); entityvillager.setAgeRaw(-24000); entityvillager.setPositionRotation(this.b.locX, this.b.locY, this.b.locZ, 0.0F, 0.0F); this.d.addEntity(entityvillager, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason this.d.broadcastEntityEffect(entityvillager, (byte) 12); } }