public class OBlockLever extends OBlock {
protected OBlockLever(int paramInt1, int paramInt2) {
super(paramInt1, paramInt2, OMaterial.n);
}
@Override
public OAxisAlignedBB d(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3) {
return null;
}
@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;
if (paramOWorld.d(paramInt1, paramInt2, paramInt3 + 1))
return true;
return paramOWorld.d(paramInt1, paramInt2 - 1, paramInt3);
}
@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 == 1) && (paramOWorld.d(paramInt1, paramInt2 - 1, paramInt3)))
i = 5 + paramOWorld.k.nextInt(2);
if ((paramInt4 == 2) && (paramOWorld.d(paramInt1, paramInt2, paramInt3 + 1)))
i = 4;
if ((paramInt4 == 3) && (paramOWorld.d(paramInt1, paramInt2, paramInt3 - 1)))
i = 3;
if ((paramInt4 == 4) && (paramOWorld.d(paramInt1 + 1, paramInt2, paramInt3)))
i = 2;
if ((paramInt4 == 5) && (paramOWorld.d(paramInt1 - 1, paramInt2, paramInt3)))
i = 1;
paramOWorld.c(paramInt1, paramInt2, paramInt3, i + j);
}
@Override
public void a(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
if (g(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 ((!paramOWorld.d(paramInt1, paramInt2 - 1, paramInt3)) && (i == 5))
j = 1;
if (j != 0) {
a_(paramOWorld, paramInt1, paramInt2, paramInt3, paramOWorld.b(paramInt1, paramInt2, paramInt3));
paramOWorld.e(paramInt1, paramInt2, paramInt3, 0);
}
}
}
private boolean g(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) & 0x7;
float f = 0.1875F;
if (i == 1)
a(0.0F, 0.2F, 0.5F - f, f * 2.0F, 0.8F, 0.5F + f);
else if (i == 2)
a(1.0F - f * 2.0F, 0.2F, 0.5F - f, 1.0F, 0.8F, 0.5F + f);
else if (i == 3)
a(0.5F - f, 0.2F, 0.0F, 0.5F + f, 0.8F, f * 2.0F);
else if (i == 4)
a(0.5F - f, 0.2F, 1.0F - f * 2.0F, 0.5F + f, 0.8F, 1.0F);
else {
f = 0.25F;
a(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.6F, 0.5F + f);
}
}
@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) {
if (paramOWorld.t)
return true;
int i = paramOWorld.b(paramInt1, paramInt2, paramInt3);
int j = i & 0x7;
int k = 8 - (i & 0x8);
// hMod: Allow the lever to change the current
/*
* first 3 bits are for postion 4th bit is for power.(on / off)
*/
int old = (k != 8) ? 1 : 0;
int current = (k == 8) ? 1 : 0;
current = ((Integer) etc.getLoader().callHook(PluginLoader.Hook.REDSTONE_CHANGE, new Block(bl, paramInt1, paramInt2, paramInt3), old, current)).intValue();
current = (current > 0) ? 8 : 0;
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, k > 0 ? 0.6F : 0.5F);
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);
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;
}
}