001    
002    public class cp extends hg {
003    
004        private int a;
005    
006        public cp(int paramInt) {
007            super(paramInt);
008            a = (paramInt + 256);
009            b(hr.m[(paramInt + 256)].a(2));
010        }
011    
012        public boolean a(jl paramjl, hl paramhl, fv paramfv, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
013            // hMod: Bail if we have nothing of the items in hand
014            if (paramjl.a == 0) {
015                return false;
016            }
017            // hMod: Store blockInfo of the one we clicked
018            int blockClickedId = paramfv.a(paramInt1, paramInt2, paramInt3);
019            Block blockClicked = new Block(blockClickedId, paramInt1, paramInt2, paramInt3);
020            if (paramfv.a(paramInt1, paramInt2, paramInt3) == hr.aS.bi) {
021                paramInt4 = 0;
022            } else {
023                if (paramInt4 == 0) {
024                    paramInt2--;
025                }
026                if (paramInt4 == 1) {
027                    paramInt2++;
028                }
029                if (paramInt4 == 2) {
030                    paramInt3--;
031                }
032                if (paramInt4 == 3) {
033                    paramInt3++;
034                }
035                if (paramInt4 == 4) {
036                    paramInt1--;
037                }
038                if (paramInt4 == 5) {
039                    paramInt1++;
040                }
041            }
042    
043            if (paramjl.a == 0) {
044                return false;
045            }
046    
047            // hMod: Store faceClicked (must be here to have the 'snow' special case).
048            blockClicked.setFaceClicked(Block.Face.fromId(paramInt4));
049    
050            // hMod: And the block we're about to place
051            Block blockPlaced = new Block(this.a, paramInt1, paramInt2, paramInt3);
052    
053            // hMod Store all the old settings 'externally' in case someone changes blockPlaced.
054            int oldMaterial = paramfv.a(paramInt1, paramInt2, paramInt3);
055            int oldData = paramfv.b(paramInt1, paramInt2, paramInt3);
056    
057            if (paramfv.a(a, paramInt1, paramInt2, paramInt3, false)) {
058                hr localhr = hr.m[a];
059                //hMod: Take over block placement
060                if (paramfv.a(paramInt1, paramInt2, paramInt3, this.a)) {
061                    // hMod: Check if this was playerPlaced and call the hook
062                    if (paramhl instanceof fy && (Boolean) etc.getLoader().callHook(PluginLoader.Hook.BLOCK_PLACE, ((fy) paramhl).getPlayer(), blockPlaced, blockClicked, new Item(paramjl))) {
063                        // hMod: Undo!
064    
065                        // Specialcase iceblocks, replace with 'glass' first (so it doesnt explode into water)
066                        if (this.a == 79) {
067                            paramfv.a(paramInt1, paramInt2, paramInt3, 20);
068                        }
069                        paramfv.a(paramInt1, paramInt2, paramInt3, oldMaterial);
070                        paramfv.c(paramInt1, paramInt2, paramInt3, oldData);
071    
072                        // hMod: Refund the item the player lost >.>
073                        // or not, this occasionally dupes items! we'lm do this when notch implements serverside invs.
074                        //((fi)paramgp).a.b(new fh(paramhn, 1));
075                        return false;
076                    } else {
077                        paramfv.g(paramInt1, paramInt2, paramInt3);
078                        paramfv.g(paramInt1, paramInt2, paramInt3, this.a);
079    
080                        hr.m[this.a].c(paramfv, paramInt1, paramInt2, paramInt3, paramInt4);
081                        // hMod: Downcast demanded for inheritance to work >.>
082                        hr.m[this.a].a(paramfv, paramInt1, paramInt2, paramInt3, (mj) paramhl);
083                        paramfv.a(paramInt1 + 0.5F, paramInt2 + 0.5F, paramInt3 + 0.5F, localhr.br.c(), (localhr.br.a() + 1.0F) / 2.0F, localhr.br.b() * 0.8F);
084                        paramjl.a -= 1;
085                    }
086                }
087    
088    
089            }
090    
091            return true;
092        }
093    
094        public String a() {
095            return hr.m[a].e();
096        }
097    }