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 }