import java.util.Random; public class OBlockPortal extends OBlockBreakable { public OBlockPortal(int paramInt1, int paramInt2) { super(paramInt1, paramInt2, OMaterial.x, false); } @Override public OAxisAlignedBB d(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3) { return null; } @Override public void a(OIBlockAccess paramOIBlockAccess, int paramInt1, int paramInt2, int paramInt3) { float f1; float f2; if ((paramOIBlockAccess.a(paramInt1 - 1, paramInt2, paramInt3) == bl) || (paramOIBlockAccess.a(paramInt1 + 1, paramInt2, paramInt3) == bl)) { f1 = 0.5F; f2 = 0.125F; a(0.5F - f1, 0.0F, 0.5F - f2, 0.5F + f1, 1.0F, 0.5F + f2); } else { f1 = 0.125F; f2 = 0.5F; a(0.5F - f1, 0.0F, 0.5F - f2, 0.5F + f1, 1.0F, 0.5F + f2); } } @Override public boolean a() { return false; } public boolean a_(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3) { int i = 0; int j = 0; if ((paramOWorld.a(paramInt1 - 1, paramInt2, paramInt3) == OBlock.ap.bl) || (paramOWorld.a(paramInt1 + 1, paramInt2, paramInt3) == OBlock.ap.bl)) i = 1; if ((paramOWorld.a(paramInt1, paramInt2, paramInt3 - 1) == OBlock.ap.bl) || (paramOWorld.a(paramInt1, paramInt2, paramInt3 + 1) == OBlock.ap.bl)) j = 1; // Hmod: comment out debug message. // System.out.println(i + ", " + j); if (i == j) return false; if (paramOWorld.a(paramInt1 - i, paramInt2, paramInt3 - j) == 0) { paramInt1 -= i; paramInt3 -= j; } int m; for (int k = -1; k <= 2; k++) for (m = -1; m <= 3; m++) { int n = (k == -1) || (k == 2) || (m == -1) || (m == 3) ? 1 : 0; if (((k == -1) || (k == 2)) && ((m == -1) || (m == 3))) continue; int i1 = paramOWorld.a(paramInt1 + i * k, paramInt2 + m, paramInt3 + j * k); if (n != 0) { if (i1 != OBlock.ap.bl) return false; } else if ((i1 != 0) && (i1 != OBlock.ar.bl)) return false; } paramOWorld.h = true; for (int k = 0; k < 2; k++) for (m = 0; m < 3; m++) paramOWorld.e(paramInt1 + i * k, paramInt2 + m, paramInt3 + j * k, OBlock.be.bl); paramOWorld.h = false; return true; } @Override public void a(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3, int paramInt4) { int i = 0; int j = 1; if ((paramOWorld.a(paramInt1 - 1, paramInt2, paramInt3) == bl) || (paramOWorld.a(paramInt1 + 1, paramInt2, paramInt3) == bl)) { i = 1; j = 0; } if (!(Boolean) etc.getLoader().callHook(PluginLoader.Hook.BLOCK_PHYSICS, new Block(bl, paramInt1, paramInt2, paramInt3), false)) { int k = paramInt2; while (paramOWorld.a(paramInt1, k - 1, paramInt3) == bl) k--; if (paramOWorld.a(paramInt1, k - 1, paramInt3) != OBlock.ap.bl) { paramOWorld.e(paramInt1, paramInt2, paramInt3, 0); return; } int m = 1; while ((m < 4) && (paramOWorld.a(paramInt1, k + m, paramInt3) == bl)) m++; if ((m != 3) || (paramOWorld.a(paramInt1, k + m, paramInt3) != OBlock.ap.bl)) { paramOWorld.e(paramInt1, paramInt2, paramInt3, 0); return; } int n = (paramOWorld.a(paramInt1 - 1, paramInt2, paramInt3) == bl) || (paramOWorld.a(paramInt1 + 1, paramInt2, paramInt3) == bl) ? 1 : 0; int i1 = (paramOWorld.a(paramInt1, paramInt2, paramInt3 - 1) == bl) || (paramOWorld.a(paramInt1, paramInt2, paramInt3 + 1) == bl) ? 1 : 0; if ((n != 0) && (i1 != 0)) { paramOWorld.e(paramInt1, paramInt2, paramInt3, 0); return; } if (((paramOWorld.a(paramInt1 + i, paramInt2, paramInt3 + j) != OBlock.ap.bl) || (paramOWorld.a(paramInt1 - i, paramInt2, paramInt3 - j) != bl)) && ((paramOWorld.a(paramInt1 - i, paramInt2, paramInt3 - j) != OBlock.ap.bl) || (paramOWorld.a(paramInt1 + i, paramInt2, paramInt3 + j) != bl))) { paramOWorld.e(paramInt1, paramInt2, paramInt3, 0); return; } } } @Override public boolean a(OIBlockAccess paramOIBlockAccess, int paramInt1, int paramInt2, int paramInt3, int paramInt4) { return true; } @Override public int a(Random paramRandom) { return 0; } @Override public void a(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3, OEntity paramOEntity) { if (paramOWorld.t) return; paramOEntity.Y(); } }