import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class OBlockRedstoneTorch extends OBlockTorch {
private boolean a = false;
private static List b = new ArrayList();
@Override
public int a(int paramInt1, int paramInt2) {
if (paramInt1 == 1)
return OBlock.av.a(paramInt1, paramInt2);
return super.a(paramInt1, paramInt2);
}
private boolean a(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3, boolean paramBoolean) {
if (paramBoolean)
b.add(new ORedstoneUpdateInfo(paramInt1, paramInt2, paramInt3, paramOWorld.l()));
int i = 0;
for (int j = 0; j < b.size(); j++) {
ORedstoneUpdateInfo localORedstoneUpdateInfo = (ORedstoneUpdateInfo) b.get(j);
if ((localORedstoneUpdateInfo.a == paramInt1) && (localORedstoneUpdateInfo.b == paramInt2) && (localORedstoneUpdateInfo.c == paramInt3)) {
i++;
if (i >= 8)
return true;
}
}
return false;
}
protected OBlockRedstoneTorch(int paramInt1, int paramInt2, boolean paramBoolean) {
super(paramInt1, paramInt2);
a = paramBoolean;
a(true);
}
@Override
public int b() {
return 2;
}
@Override
public void e(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3) {
if (paramOWorld.b(paramInt1, paramInt2, paramInt3) == 0)
super.e(paramOWorld, paramInt1, paramInt2, paramInt3);
if (a) {
paramOWorld.h(paramInt1, paramInt2 - 1, paramInt3, bl);
paramOWorld.h(paramInt1, paramInt2 + 1, paramInt3, bl);
paramOWorld.h(paramInt1 - 1, paramInt2, paramInt3, bl);
paramOWorld.h(paramInt1 + 1, paramInt2, paramInt3, bl);
paramOWorld.h(paramInt1, paramInt2, paramInt3 - 1, bl);
paramOWorld.h(paramInt1, paramInt2, paramInt3 + 1, bl);
}
}
@Override
public void b(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3) {
if (a) {
paramOWorld.h(paramInt1, paramInt2 - 1, paramInt3, bl);
paramOWorld.h(paramInt1, paramInt2 + 1, paramInt3, bl);
paramOWorld.h(paramInt1 - 1, paramInt2, paramInt3, bl);
paramOWorld.h(paramInt1 + 1, paramInt2, paramInt3, bl);
paramOWorld.h(paramInt1, paramInt2, paramInt3 - 1, bl);
paramOWorld.h(paramInt1, paramInt2, paramInt3 + 1, bl);
}
}
@Override
public boolean b(OIBlockAccess paramOIBlockAccess, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
if (!a)
return false;
int i = paramOIBlockAccess.b(paramInt1, paramInt2, paramInt3);
if ((i == 5) && (paramInt4 == 1))
return false;
if ((i == 3) && (paramInt4 == 3))
return false;
if ((i == 4) && (paramInt4 == 2))
return false;
if ((i == 1) && (paramInt4 == 5))
return false;
return (i != 2) || (paramInt4 != 4);
}
private boolean g(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3) {
int i = paramOWorld.b(paramInt1, paramInt2, paramInt3);
if ((i == 5) && (paramOWorld.j(paramInt1, paramInt2 - 1, paramInt3, 0)))
return true;
if ((i == 3) && (paramOWorld.j(paramInt1, paramInt2, paramInt3 - 1, 2)))
return true;
if ((i == 4) && (paramOWorld.j(paramInt1, paramInt2, paramInt3 + 1, 3)))
return true;
if ((i == 1) && (paramOWorld.j(paramInt1 - 1, paramInt2, paramInt3, 4)))
return true;
return (i == 2) && (paramOWorld.j(paramInt1 + 1, paramInt2, paramInt3, 5));
}
@Override
public void a(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3, Random paramRandom) {
boolean bool = g(paramOWorld, paramInt1, paramInt2, paramInt3);
while ((b.size() > 0) && (paramOWorld.l() - ((ORedstoneUpdateInfo) b.get(0)).d > 100L))
b.remove(0);
if (a) {
if (bool) {
paramOWorld.b(paramInt1, paramInt2, paramInt3, OBlock.aP.bl, paramOWorld.b(paramInt1, paramInt2, paramInt3));
// hMod: Allow redstone torches to provide power
int current = (Integer) etc.getLoader().callHook(PluginLoader.Hook.REDSTONE_CHANGE, new Object[] { new Block(bl, paramInt1, paramInt2, paramInt3), 1, 0 });
if (current == 0)
if (a(paramOWorld, paramInt1, paramInt2, paramInt3, true)) {
paramOWorld.a(paramInt1 + 0.5F, paramInt2 + 0.5F, paramInt3 + 0.5F, "random.fizz", 0.5F, 2.6F + (paramOWorld.k.nextFloat() - paramOWorld.k.nextFloat()) * 0.8F);
for (int i = 0; i < 5; i++) {
double d1 = paramInt1 + paramRandom.nextDouble() * 0.6D + 0.2D;
double d2 = paramInt2 + paramRandom.nextDouble() * 0.6D + 0.2D;
double d3 = paramInt3 + paramRandom.nextDouble() * 0.6D + 0.2D;
paramOWorld.a("smoke", d1, d2, d3, 0.0D, 0.0D, 0.0D);
}
}
}
} else if ((!bool) && (!a(paramOWorld, paramInt1, paramInt2, paramInt3, false))) {
// hMod: Allow redstone torches to provide power
int current = (Integer) etc.getLoader().callHook(PluginLoader.Hook.REDSTONE_CHANGE, new Object[] { new Block(bl, paramInt1, paramInt2, paramInt3), 0, 1 });
if (current > 0)
paramOWorld.b(paramInt1, paramInt2, paramInt3, OBlock.aQ.bl, paramOWorld.b(paramInt1, paramInt2, paramInt3));
}
}
@Override
public void a(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
super.a(paramOWorld, paramInt1, paramInt2, paramInt3, paramInt4);
paramOWorld.c(paramInt1, paramInt2, paramInt3, bl, b());
}
@Override
public boolean c(OWorld paramOWorld, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
if (paramInt4 == 0)
// hMod: forced downcast!
return b((OIBlockAccess) paramOWorld, paramInt1, paramInt2, paramInt3, paramInt4);
return false;
}
@Override
public int a(int paramInt, Random paramRandom) {
return OBlock.aQ.bl;
}
@Override
public boolean c() {
return true;
}
}