import java.util.Random; public class OBlockButton extends OBlock { protected OBlockButton(int paramInt1, int paramInt2) { super(paramInt1, paramInt2, OMaterial.n); a(true); } @Override public OAxisAlignedBB d(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3) { return null; } @Override public int b() { return 20; } @Override public boolean a() { return false; } @Override public boolean a(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3) { if (paramOWorld.d(paramInt1 - 1, paramInt2, paramInt3)) return true; if (paramOWorld.d(paramInt1 + 1, paramInt2, paramInt3)) return true; if (paramOWorld.d(paramInt1, paramInt2, paramInt3 - 1)) return true; return paramOWorld.d(paramInt1, paramInt2, paramInt3 + 1); } @Override public void d(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3, int paramInt4) { int i = paramOWorld.b(paramInt1, paramInt2, paramInt3); int j = i & 0x8; i &= 7; if ((paramInt4 == 2) && (paramOWorld.d(paramInt1, paramInt2, paramInt3 + 1))) i = 4; else if ((paramInt4 == 3) && (paramOWorld.d(paramInt1, paramInt2, paramInt3 - 1))) i = 3; else if ((paramInt4 == 4) && (paramOWorld.d(paramInt1 + 1, paramInt2, paramInt3))) i = 2; else if ((paramInt4 == 5) && (paramOWorld.d(paramInt1 - 1, paramInt2, paramInt3))) i = 1; else i = g(paramOWorld, paramInt1, paramInt2, paramInt3); paramOWorld.c(paramInt1, paramInt2, paramInt3, i + j); } private int g(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3) { if (paramOWorld.d(paramInt1 - 1, paramInt2, paramInt3)) return 1; if (paramOWorld.d(paramInt1 + 1, paramInt2, paramInt3)) return 2; if (paramOWorld.d(paramInt1, paramInt2, paramInt3 - 1)) return 3; if (paramOWorld.d(paramInt1, paramInt2, paramInt3 + 1)) return 4; return 1; } @Override public void a(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3, int paramInt4) { if (h(paramOWorld, paramInt1, paramInt2, paramInt3)) { int i = paramOWorld.b(paramInt1, paramInt2, paramInt3) & 0x7; int j = 0; if ((!paramOWorld.d(paramInt1 - 1, paramInt2, paramInt3)) && (i == 1)) j = 1; if ((!paramOWorld.d(paramInt1 + 1, paramInt2, paramInt3)) && (i == 2)) j = 1; if ((!paramOWorld.d(paramInt1, paramInt2, paramInt3 - 1)) && (i == 3)) j = 1; if ((!paramOWorld.d(paramInt1, paramInt2, paramInt3 + 1)) && (i == 4)) j = 1; if (j != 0) { a_(paramOWorld, paramInt1, paramInt2, paramInt3, paramOWorld.b(paramInt1, paramInt2, paramInt3)); paramOWorld.e(paramInt1, paramInt2, paramInt3, 0); } } } private boolean h(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3) { if (!a(paramOWorld, paramInt1, paramInt2, paramInt3)) { a_(paramOWorld, paramInt1, paramInt2, paramInt3, paramOWorld.b(paramInt1, paramInt2, paramInt3)); paramOWorld.e(paramInt1, paramInt2, paramInt3, 0); return false; } return true; } @Override public void a(OIBlockAccess paramOIBlockAccess, int paramInt1, int paramInt2, int paramInt3) { int i = paramOIBlockAccess.b(paramInt1, paramInt2, paramInt3); int j = i & 0x7; int k = (i & 0x8) > 0 ? 1 : 0; float f1 = 0.375F; float f2 = 0.625F; float f3 = 0.1875F; float f4 = 0.125F; if (k != 0) f4 = 0.0625F; if (j == 1) a(0.0F, f1, 0.5F - f3, f4, f2, 0.5F + f3); else if (j == 2) a(1.0F - f4, f1, 0.5F - f3, 1.0F, f2, 0.5F + f3); else if (j == 3) a(0.5F - f3, f1, 0.0F, 0.5F + f3, f2, f4); else if (j == 4) a(0.5F - f3, f1, 1.0F - f4, 0.5F + f3, f2, 1.0F); } @Override public void b(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3, OEntityPlayer paramOEntityPlayer) { a(paramOWorld, paramInt1, paramInt2, paramInt3, paramOEntityPlayer); } @Override public boolean a(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3, OEntityPlayer paramOEntityPlayer) { int i = paramOWorld.b(paramInt1, paramInt2, paramInt3); int j = i & 0x7; int k = 8 - (i & 0x8); if (k == 0) return true; // hMod: Allow button to provide power int change = (Integer) etc.getLoader().callHook(PluginLoader.Hook.REDSTONE_CHANGE, new Block(bl, paramInt1, paramInt2, paramInt3), 0, 1); if (change == 0) return true; paramOWorld.c(paramInt1, paramInt2, paramInt3, j + k); paramOWorld.b(paramInt1, paramInt2, paramInt3, paramInt1, paramInt2, paramInt3); paramOWorld.a(paramInt1 + 0.5D, paramInt2 + 0.5D, paramInt3 + 0.5D, "random.click", 0.3F, 0.6F); paramOWorld.h(paramInt1, paramInt2, paramInt3, bl); if (j == 1) paramOWorld.h(paramInt1 - 1, paramInt2, paramInt3, bl); else if (j == 2) paramOWorld.h(paramInt1 + 1, paramInt2, paramInt3, bl); else if (j == 3) paramOWorld.h(paramInt1, paramInt2, paramInt3 - 1, bl); else if (j == 4) paramOWorld.h(paramInt1, paramInt2, paramInt3 + 1, bl); else paramOWorld.h(paramInt1, paramInt2 - 1, paramInt3, bl); paramOWorld.c(paramInt1, paramInt2, paramInt3, bl, b()); return true; } @Override public void b(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3) { int i = paramOWorld.b(paramInt1, paramInt2, paramInt3); if ((i & 0x8) > 0) { paramOWorld.h(paramInt1, paramInt2, paramInt3, bl); int j = i & 0x7; if (j == 1) paramOWorld.h(paramInt1 - 1, paramInt2, paramInt3, bl); else if (j == 2) paramOWorld.h(paramInt1 + 1, paramInt2, paramInt3, bl); else if (j == 3) paramOWorld.h(paramInt1, paramInt2, paramInt3 - 1, bl); else if (j == 4) paramOWorld.h(paramInt1, paramInt2, paramInt3 + 1, bl); else paramOWorld.h(paramInt1, paramInt2 - 1, paramInt3, bl); } super.b(paramOWorld, paramInt1, paramInt2, paramInt3); } @Override public boolean b(OIBlockAccess paramOIBlockAccess, int paramInt1, int paramInt2, int paramInt3, int paramInt4) { return (paramOIBlockAccess.b(paramInt1, paramInt2, paramInt3) & 0x8) > 0; } @Override public boolean c(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3, int paramInt4) { int i = paramOWorld.b(paramInt1, paramInt2, paramInt3); if ((i & 0x8) == 0) return false; int j = i & 0x7; if ((j == 5) && (paramInt4 == 1)) return true; if ((j == 4) && (paramInt4 == 2)) return true; if ((j == 3) && (paramInt4 == 3)) return true; if ((j == 2) && (paramInt4 == 4)) return true; return (j == 1) && (paramInt4 == 5); } @Override public boolean c() { return true; } @Override public void a(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3, Random paramRandom) { if (paramOWorld.t) return; int i = paramOWorld.b(paramInt1, paramInt2, paramInt3); if ((i & 0x8) == 0) return; // hMod: Allow button to provide power int change = (Integer) etc.getLoader().callHook(PluginLoader.Hook.REDSTONE_CHANGE, new Block(bl, paramInt1, paramInt2, paramInt3), 1, 0); if (change > 0) return; paramOWorld.c(paramInt1, paramInt2, paramInt3, i & 0x7); paramOWorld.h(paramInt1, paramInt2, paramInt3, bl); int j = i & 0x7; if (j == 1) paramOWorld.h(paramInt1 - 1, paramInt2, paramInt3, bl); else if (j == 2) paramOWorld.h(paramInt1 + 1, paramInt2, paramInt3, bl); else if (j == 3) paramOWorld.h(paramInt1, paramInt2, paramInt3 - 1, bl); else if (j == 4) paramOWorld.h(paramInt1, paramInt2, paramInt3 + 1, bl); else paramOWorld.h(paramInt1, paramInt2 - 1, paramInt3, bl); paramOWorld.a(paramInt1 + 0.5D, paramInt2 + 0.5D, paramInt3 + 0.5D, "random.click", 0.3F, 0.5F); paramOWorld.b(paramInt1, paramInt2, paramInt3, paramInt1, paramInt2, paramInt3); } }