summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/EntityLeash.java
blob: d7f33d03f4317543c94fffe6e43ad48820e343c2 (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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package net.minecraft.server;

import java.util.Iterator;
import java.util.List;

public class EntityLeash extends EntityHanging {

    public EntityLeash(World world) {
        super(world);
    }

    public EntityLeash(World world, int i, int j, int k) {
        super(world, i, j, k, 0);
        this.setPosition((double) i + 0.5D, (double) j + 0.5D, (double) k + 0.5D);
    }

    protected void a() {
        super.a();
    }

    public void setDirection(int i) {}

    public int d() {
        return 9;
    }

    public int e() {
        return 9;
    }

    public void b(Entity entity) {}

    public boolean d(NBTTagCompound nbttagcompound) {
        return false;
    }

    public void b(NBTTagCompound nbttagcompound) {}

    public void a(NBTTagCompound nbttagcompound) {}

    public boolean c(EntityHuman entityhuman) {
        ItemStack itemstack = entityhuman.aY();
        boolean flag = false;
        double d0;
        List list;
        Iterator iterator;
        EntityInsentient entityinsentient;

        if (itemstack != null && itemstack.id == Item.LEASH.id && !this.world.isStatic) {
            d0 = 7.0D;
            list = this.world.a(EntityInsentient.class, AxisAlignedBB.a().a(this.locX - d0, this.locY - d0, this.locZ - d0, this.locX + d0, this.locY + d0, this.locZ + d0));
            if (list != null) {
                iterator = list.iterator();

                while (iterator.hasNext()) {
                    entityinsentient = (EntityInsentient) iterator.next();
                    if (entityinsentient.bH() && entityinsentient.bI() == entityhuman) {
                        entityinsentient.b(this, true);
                        flag = true;
                    }
                }
            }
        }

        if (!this.world.isStatic && !flag) {
            this.die();
            if (entityhuman.abilities.canInstantlyBuild) {
                d0 = 7.0D;
                list = this.world.a(EntityInsentient.class, AxisAlignedBB.a().a(this.locX - d0, this.locY - d0, this.locZ - d0, this.locX + d0, this.locY + d0, this.locZ + d0));
                if (list != null) {
                    iterator = list.iterator();

                    while (iterator.hasNext()) {
                        entityinsentient = (EntityInsentient) iterator.next();
                        if (entityinsentient.bH() && entityinsentient.bI() == this) {
                            entityinsentient.a(true, false);
                        }
                    }
                }
            }
        }

        return true;
    }

    public boolean survives() {
        int i = this.world.getTypeId(this.x, this.y, this.z);

        return Block.byId[i] != null && Block.byId[i].d() == 11;
    }

    public static EntityLeash a(World world, int i, int j, int k) {
        EntityLeash entityleash = new EntityLeash(world, i, j, k);

        entityleash.p = true;
        world.addEntity(entityleash);
        return entityleash;
    }

    public static EntityLeash b(World world, int i, int j, int k) {
        List list = world.a(EntityLeash.class, AxisAlignedBB.a().a((double) i - 1.0D, (double) j - 1.0D, (double) k - 1.0D, (double) i + 1.0D, (double) j + 1.0D, (double) k + 1.0D));
        Object object = null;

        if (list != null) {
            Iterator iterator = list.iterator();

            while (iterator.hasNext()) {
                EntityLeash entityleash = (EntityLeash) iterator.next();

                if (entityleash.x == i && entityleash.y == j && entityleash.z == k) {
                    return entityleash;
                }
            }
        }

        return null;
    }
}