summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/ItemInWorldManager.java
blob: 011ace1be13b2943943c096ec66598ec5ed96009 (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
119
120
121
122
123
124
125
126
127
128
129
130
package net.minecraft.server;


public class ItemInWorldManager {

    private World b; //currWorld
    public EntityPlayer a; //currPlayer
    private float c; // not used?
    //Craftbukkit start
    public float d; // blockDamage (0 up to 1) //Craftbukkit - Made public to get damage
    //Craftbukkit stop
    private int e; // funny counter
    private float f; // blockHits
    private int g; //posX
    private int h; //posY
    private int i; //posZ

    public ItemInWorldManager(World world) {
        d = 0.0F;
        e = 0;
        f = 0.0F;
        b = world;
    }

    public void a(int j, int k, int l) {
        int i1 = b.a(j, k, l);

        if (i1 > 0 && d == 0.0F) {
            Block.m[i1].b(b, j, k, l, a);
        }
        if (i1 > 0 && Block.m[i1].a(a) >= 1.0F) {
            c(j, k, l);
        }
    }

    public void a() {
        d = 0.0F;
        e = 0;
    }

    public void a(int j, int k, int l, int i1) {
        if (e > 0) {
            e--;
            return;
        }
        if (j == g && k == h && l == i) {
            int j1 = b.a(j, k, l);

            if (j1 == 0) {
                return;
            }
            Block block = Block.m[j1];

            d += block.a(a);
            f++;
            if (d >= 1.0F) {
                c(j, k, l);
                d = 0.0F;
                c = 0.0F;
                f = 0.0F;
                e = 5;
            }
        } else {
            d = 0.0F;
            c = 0.0F;
            f = 0.0F;
            g = j;
            h = k;
            i = l;
        }
    }

    public boolean b(int j, int k, int l) {
        Block block = Block.m[b.a(j, k, l)];
        int i1 = b.b(j, k, l);
        boolean flag = b.d(j, k, l, 0);

        if (block != null && flag) {
            block.a(b, j, k, l, i1);
        }
        return flag;
    }

    public boolean c(int j, int k, int l) {
        int i1 = b.a(j, k, l);
        int j1 = b.b(j, k, l);
        boolean flag = b(j, k, l);
        ItemStack itemstack = a.M();

        if (itemstack != null) {
            itemstack.a(i1, j, k, l);
            if (itemstack.a == 0) {
                itemstack.a(a);
                a.N();
            }
        }
        if (flag && a.b(Block.m[i1])) {
            Block.m[i1].g(b, j, k, l, j1);
        }
        return flag;
    }

    public boolean a(EntityPlayer entityplayer, World world, ItemStack itemstack) {
        int j = itemstack.a;
        ItemStack itemstack1 = itemstack.a(world, entityplayer);

        if (itemstack1 != itemstack || itemstack1 != null && itemstack1.a != j) {
            entityplayer.an.a[entityplayer.an.c] = itemstack1;
            if (itemstack1.a == 0) {
                entityplayer.an.a[entityplayer.an.c] = null;
            }
            return true;
        } else {
            return false;
        }
    }

    public boolean a(EntityPlayer entityplayer, World world, ItemStack itemstack, int j, int k, int l, int i1) {
        int j1 = world.a(j, k, l);

        if (j1 > 0 && Block.m[j1].a(world, j, k, l, entityplayer)) {
            return true;
        }
        if (itemstack == null) {
            return false;
        } else {
            return itemstack.a(entityplayer, world, j, k, l, i1);
        }
    }
}