001 002 import java.util.Random; 003 004 public class bb extends hr { 005 006 protected bb(int paramInt1, int paramInt2) { 007 super(paramInt1, paramInt2, mh.n); 008 a(true); 009 } 010 011 public fa d(fv paramfv, int paramInt1, int paramInt2, int paramInt3) { 012 return null; 013 } 014 015 public int b() { 016 return 20; 017 } 018 019 public boolean a() { 020 return false; 021 } 022 023 public boolean a(fv paramfv, int paramInt1, int paramInt2, int paramInt3) { 024 if (paramfv.d(paramInt1 - 1, paramInt2, paramInt3)) { 025 return true; 026 } 027 if (paramfv.d(paramInt1 + 1, paramInt2, paramInt3)) { 028 return true; 029 } 030 if (paramfv.d(paramInt1, paramInt2, paramInt3 - 1)) { 031 return true; 032 } 033 return paramfv.d(paramInt1, paramInt2, paramInt3 + 1); 034 } 035 036 public void c(fv paramfv, int paramInt1, int paramInt2, int paramInt3, int paramInt4) { 037 int i = paramfv.b(paramInt1, paramInt2, paramInt3); 038 039 int j = i & 0x8; 040 i &= 7; 041 042 if ((paramInt4 == 2) && (paramfv.d(paramInt1, paramInt2, paramInt3 + 1))) { 043 i = 4; 044 } 045 if ((paramInt4 == 3) && (paramfv.d(paramInt1, paramInt2, paramInt3 - 1))) { 046 i = 3; 047 } 048 if ((paramInt4 == 4) && (paramfv.d(paramInt1 + 1, paramInt2, paramInt3))) { 049 i = 2; 050 } 051 if ((paramInt4 == 5) && (paramfv.d(paramInt1 - 1, paramInt2, paramInt3))) { 052 i = 1; 053 } 054 055 paramfv.c(paramInt1, paramInt2, paramInt3, i + j); 056 } 057 058 public void e(fv paramfv, int paramInt1, int paramInt2, int paramInt3) { 059 if (paramfv.d(paramInt1 - 1, paramInt2, paramInt3)) { 060 paramfv.c(paramInt1, paramInt2, paramInt3, 1); 061 } else if (paramfv.d(paramInt1 + 1, paramInt2, paramInt3)) { 062 paramfv.c(paramInt1, paramInt2, paramInt3, 2); 063 } else if (paramfv.d(paramInt1, paramInt2, paramInt3 - 1)) { 064 paramfv.c(paramInt1, paramInt2, paramInt3, 3); 065 } else if (paramfv.d(paramInt1, paramInt2, paramInt3 + 1)) { 066 paramfv.c(paramInt1, paramInt2, paramInt3, 4); 067 } 068 g(paramfv, paramInt1, paramInt2, paramInt3); 069 } 070 071 public void b(fv paramfv, int paramInt1, int paramInt2, int paramInt3, int paramInt4) { 072 if (g(paramfv, paramInt1, paramInt2, paramInt3)) { 073 int i = paramfv.b(paramInt1, paramInt2, paramInt3) & 0x7; 074 int j = 0; 075 076 if ((!paramfv.d(paramInt1 - 1, paramInt2, paramInt3)) && (i == 1)) { 077 j = 1; 078 } 079 if ((!paramfv.d(paramInt1 + 1, paramInt2, paramInt3)) && (i == 2)) { 080 j = 1; 081 } 082 if ((!paramfv.d(paramInt1, paramInt2, paramInt3 - 1)) && (i == 3)) { 083 j = 1; 084 } 085 if ((!paramfv.d(paramInt1, paramInt2, paramInt3 + 1)) && (i == 4)) { 086 j = 1; 087 } 088 089 if (j != 0) { 090 a_(paramfv, paramInt1, paramInt2, paramInt3, paramfv.b(paramInt1, paramInt2, paramInt3)); 091 paramfv.e(paramInt1, paramInt2, paramInt3, 0); 092 } 093 } 094 } 095 096 private boolean g(fv paramfv, int paramInt1, int paramInt2, int paramInt3) { 097 if (!a(paramfv, paramInt1, paramInt2, paramInt3)) { 098 a_(paramfv, paramInt1, paramInt2, paramInt3, paramfv.b(paramInt1, paramInt2, paramInt3)); 099 paramfv.e(paramInt1, paramInt2, paramInt3, 0); 100 return false; 101 } 102 return true; 103 } 104 105 public void a(la paramla, int paramInt1, int paramInt2, int paramInt3) { 106 int i = paramla.b(paramInt1, paramInt2, paramInt3); 107 int j = i & 0x7; 108 int k = (i & 0x8) > 0 ? 1 : 0; 109 110 float f1 = 0.375F; 111 float f2 = 0.625F; 112 float f3 = 0.1875F; 113 float f4 = 0.125F; 114 if (k != 0) { 115 f4 = 0.0625F; 116 } 117 118 if (j == 1) { 119 a(0.0F, f1, 0.5F - f3, f4, f2, 0.5F + f3); 120 } else if (j == 2) { 121 a(1.0F - f4, f1, 0.5F - f3, 1.0F, f2, 0.5F + f3); 122 } else if (j == 3) { 123 a(0.5F - f3, f1, 0.0F, 0.5F + f3, f2, f4); 124 } else if (j == 4) { 125 a(0.5F - f3, f1, 1.0F - f4, 0.5F + f3, f2, 1.0F); 126 } 127 } 128 129 public void b(fv paramfv, int paramInt1, int paramInt2, int paramInt3, hl paramhl) { 130 a(paramfv, paramInt1, paramInt2, paramInt3, paramhl); 131 } 132 133 public boolean a(fv paramfv, int paramInt1, int paramInt2, int paramInt3, hl paramhl) { 134 if (paramfv.z) { 135 return true; 136 } 137 138 int i = paramfv.b(paramInt1, paramInt2, paramInt3); 139 int j = i & 0x7; 140 int k = 8 - (i & 0x8); 141 if (k == 0) { 142 return true; 143 } 144 145 // hMod: Allow button to provide power 146 int change = (Integer) etc.getLoader().callHook(PluginLoader.Hook.REDSTONE_CHANGE, new Block(this.bh, paramInt1, paramInt2, paramInt3), 0, 1); 147 if (change == 0) { 148 return true; 149 } 150 151 paramfv.c(paramInt1, paramInt2, paramInt3, j + k); 152 paramfv.b(paramInt1, paramInt2, paramInt3, paramInt1, paramInt2, paramInt3); 153 154 paramfv.a(paramInt1 + 0.5D, paramInt2 + 0.5D, paramInt3 + 0.5D, "random.click", 0.3F, 0.6F); 155 156 paramfv.h(paramInt1, paramInt2, paramInt3, bi); 157 if (j == 1) { 158 paramfv.h(paramInt1 - 1, paramInt2, paramInt3, bi); 159 } else if (j == 2) { 160 paramfv.h(paramInt1 + 1, paramInt2, paramInt3, bi); 161 } else if (j == 3) { 162 paramfv.h(paramInt1, paramInt2, paramInt3 - 1, bi); 163 } else if (j == 4) { 164 paramfv.h(paramInt1, paramInt2, paramInt3 + 1, bi); 165 } else { 166 paramfv.h(paramInt1, paramInt2 - 1, paramInt3, bi); 167 } 168 169 paramfv.i(paramInt1, paramInt2, paramInt3, bi); 170 171 return true; 172 } 173 174 public void b(fv paramfv, int paramInt1, int paramInt2, int paramInt3) { 175 int i = paramfv.b(paramInt1, paramInt2, paramInt3); 176 if ((i & 0x8) > 0) { 177 paramfv.h(paramInt1, paramInt2, paramInt3, bi); 178 int j = i & 0x7; 179 if (j == 1) { 180 paramfv.h(paramInt1 - 1, paramInt2, paramInt3, bi); 181 } else if (j == 2) { 182 paramfv.h(paramInt1 + 1, paramInt2, paramInt3, bi); 183 } else if (j == 3) { 184 paramfv.h(paramInt1, paramInt2, paramInt3 - 1, bi); 185 } else if (j == 4) { 186 paramfv.h(paramInt1, paramInt2, paramInt3 + 1, bi); 187 } else { 188 paramfv.h(paramInt1, paramInt2 - 1, paramInt3, bi); 189 } 190 } 191 super.b(paramfv, paramInt1, paramInt2, paramInt3); 192 } 193 194 public boolean b(la paramla, int paramInt1, int paramInt2, int paramInt3, int paramInt4) { 195 return (paramla.b(paramInt1, paramInt2, paramInt3) & 0x8) > 0; 196 } 197 198 public boolean d(fv paramfv, int paramInt1, int paramInt2, int paramInt3, int paramInt4) { 199 int i = paramfv.b(paramInt1, paramInt2, paramInt3); 200 if ((i & 0x8) == 0) { 201 return false; 202 } 203 int j = i & 0x7; 204 205 if ((j == 5) && (paramInt4 == 1)) { 206 return true; 207 } 208 if ((j == 4) && (paramInt4 == 2)) { 209 return true; 210 } 211 if ((j == 3) && (paramInt4 == 3)) { 212 return true; 213 } 214 if ((j == 2) && (paramInt4 == 4)) { 215 return true; 216 } 217 return (j == 1) && (paramInt4 == 5); 218 } 219 220 public boolean c() { 221 return true; 222 } 223 224 public void a(fv paramfv, int paramInt1, int paramInt2, int paramInt3, Random paramRandom) { 225 if (paramfv.z) { 226 return; 227 } 228 int i = paramfv.b(paramInt1, paramInt2, paramInt3); 229 if ((i & 0x8) == 0) { 230 return; 231 } 232 // hMod: Allow button to provide power 233 int change = (Integer) etc.getLoader().callHook(PluginLoader.Hook.REDSTONE_CHANGE, new Block(this.bh, paramInt1, paramInt2, paramInt3), 1, 0); 234 if (change > 0) { 235 return; 236 } 237 238 paramfv.c(paramInt1, paramInt2, paramInt3, i & 0x7); 239 240 paramfv.h(paramInt1, paramInt2, paramInt3, bi); 241 int j = i & 0x7; 242 if (j == 1) { 243 paramfv.h(paramInt1 - 1, paramInt2, paramInt3, bi); 244 } else if (j == 2) { 245 paramfv.h(paramInt1 + 1, paramInt2, paramInt3, bi); 246 } else if (j == 3) { 247 paramfv.h(paramInt1, paramInt2, paramInt3 - 1, bi); 248 } else if (j == 4) { 249 paramfv.h(paramInt1, paramInt2, paramInt3 + 1, bi); 250 } else { 251 paramfv.h(paramInt1, paramInt2 - 1, paramInt3, bi); 252 } 253 254 paramfv.a(paramInt1 + 0.5D, paramInt2 + 0.5D, paramInt3 + 0.5D, "random.click", 0.3F, 0.5F); 255 paramfv.b(paramInt1, paramInt2, paramInt3, paramInt1, paramInt2, paramInt3); 256 } 257 }