summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/PathfinderGoalMakeLove.java
blob: a51ce7a6bd2b8aeaf8fbe42f347b273f0c1a9031 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package net.minecraft.server;

public class PathfinderGoalMakeLove extends PathfinderGoal {

    private EntityVillager b;
    private EntityVillager c;
    private 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.aC().nextInt(500) != 0) {
            return false;
        } else {
            this.a = this.d.villages.getClosestVillage(MathHelper.floor(this.b.locX), MathHelper.floor(this.b.locY), MathHelper.floor(this.b.locZ), 0);
            if (this.a == null) {
                return false;
            } else if (!this.f()) {
                return false;
            } else {
                Entity entity = this.d.a(EntityVillager.class, this.b.boundingBox.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;
                }
            }
        }
    }

    public void c() {
        this.e = 300;
        this.b.i(true);
    }

    public void d() {
        this.a = null;
        this.c = null;
        this.b.i(false);
    }

    public boolean b() {
        return this.e >= 0 && this.f() && this.b.getAge() == 0;
    }

    public void e() {
        --this.e;
        this.b.getControllerLook().a(this.c, 10.0F, 30.0F);
        if (this.b.e(this.c) > 2.25D) {
            this.b.getNavigation().a((Entity) this.c, 0.25D);
        } else if (this.e == 0 && this.c.bU()) {
            this.g();
        }

        if (this.b.aC().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.getDoorCount()) * 0.35D);

            return this.a.getPopulationCount() < i;
        }
    }

    private void g() {
        EntityVillager entityvillager = this.b.b((EntityAgeable) this.c);

        this.c.setAge(6000);
        this.b.setAge(6000);
        entityvillager.setAge(-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);
    }
}