001    import java.util.ArrayList;
002    import java.util.List;
003    import java.util.Random;
004    
005    public class de extends is
006    {
007      private boolean a = false;
008    
009      private static List b = new ArrayList();
010    
011      private boolean a(fv paramfv, int paramInt1, int paramInt2, int paramInt3, boolean paramBoolean) {
012        if (paramBoolean) b.add(new lf(paramInt1, paramInt2, paramInt3, paramfv.e));
013        int i = 0;
014        for (int j = 0; j < b.size(); j++) {
015          lf locallf = (lf)b.get(j);
016          if ((locallf.a == paramInt1) && (locallf.b == paramInt2) && (locallf.c == paramInt3)) {
017            i++;
018            if (i >= 8) {
019              return true;
020            }
021          }
022        }
023        return false;
024      }
025    
026      protected de(int paramInt1, int paramInt2, boolean paramBoolean) {
027        super(paramInt1, paramInt2);
028        a = paramBoolean;
029        a(true);
030      }
031    
032      public int b() {
033        return 2;
034      }
035    
036      public void e(fv paramfv, int paramInt1, int paramInt2, int paramInt3) {
037        if (paramfv.b(paramInt1, paramInt2, paramInt3) == 0) super.e(paramfv, paramInt1, paramInt2, paramInt3);
038        if (a) {
039          paramfv.h(paramInt1, paramInt2 - 1, paramInt3, bi);
040          paramfv.h(paramInt1, paramInt2 + 1, paramInt3, bi);
041          paramfv.h(paramInt1 - 1, paramInt2, paramInt3, bi);
042          paramfv.h(paramInt1 + 1, paramInt2, paramInt3, bi);
043          paramfv.h(paramInt1, paramInt2, paramInt3 - 1, bi);
044          paramfv.h(paramInt1, paramInt2, paramInt3 + 1, bi);
045        }
046      }
047    
048      public void b(fv paramfv, int paramInt1, int paramInt2, int paramInt3) {
049        if (a) {
050          paramfv.h(paramInt1, paramInt2 - 1, paramInt3, bi);
051          paramfv.h(paramInt1, paramInt2 + 1, paramInt3, bi);
052          paramfv.h(paramInt1 - 1, paramInt2, paramInt3, bi);
053          paramfv.h(paramInt1 + 1, paramInt2, paramInt3, bi);
054          paramfv.h(paramInt1, paramInt2, paramInt3 - 1, bi);
055          paramfv.h(paramInt1, paramInt2, paramInt3 + 1, bi);
056        }
057      }
058    
059      public boolean b(la paramla, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
060        if (!a) return false;
061    
062        int i = paramla.b(paramInt1, paramInt2, paramInt3);
063    
064        if ((i == 5) && (paramInt4 == 1)) return false;
065        if ((i == 3) && (paramInt4 == 3)) return false;
066        if ((i == 4) && (paramInt4 == 2)) return false;
067        if ((i == 1) && (paramInt4 == 5)) return false;
068        return (i != 2) || (paramInt4 != 4);
069      }
070    
071      private boolean g(fv paramfv, int paramInt1, int paramInt2, int paramInt3)
072      {
073        int i = paramfv.b(paramInt1, paramInt2, paramInt3);
074    
075        if ((i == 5) && (paramfv.k(paramInt1, paramInt2 - 1, paramInt3, 0))) return true;
076        if ((i == 3) && (paramfv.k(paramInt1, paramInt2, paramInt3 - 1, 2))) return true;
077        if ((i == 4) && (paramfv.k(paramInt1, paramInt2, paramInt3 + 1, 3))) return true;
078        if ((i == 1) && (paramfv.k(paramInt1 - 1, paramInt2, paramInt3, 4))) return true;
079        return (i == 2) && (paramfv.k(paramInt1 + 1, paramInt2, paramInt3, 5));
080      }
081    
082      public void a(fv paramfv, int paramInt1, int paramInt2, int paramInt3, Random paramRandom)
083      {
084        boolean bool = g(paramfv, paramInt1, paramInt2, paramInt3);
085    
086        while ((b.size() > 0) && (paramfv.e - ((lf)b.get(0)).d > 100L)) {
087          b.remove(0);
088        }
089    
090        if (a) {
091          if (bool) {
092            paramfv.b(paramInt1, paramInt2, paramInt3, hr.aP.bi, paramfv.b(paramInt1, paramInt2, paramInt3));
093    
094            // hMod: Allow redstone torches to provide power
095                    int current = (Integer) etc.getLoader().callHook(PluginLoader.Hook.REDSTONE_CHANGE, new Object[]{new Block(this.bh, paramInt1, paramInt2, paramInt3), 1, 0});
096                    if (current == 0) {
097                        
098                    
099            if (a(paramfv, paramInt1, paramInt2, paramInt3, true)) {
100              paramfv.a(paramInt1 + 0.5F, paramInt2 + 0.5F, paramInt3 + 0.5F, "random.fizz", 0.5F, 2.6F + (paramfv.l.nextFloat() - paramfv.l.nextFloat()) * 0.8F);
101              for (int i = 0; i < 5; i++) {
102                double d1 = paramInt1 + paramRandom.nextDouble() * 0.6D + 0.2D;
103                double d2 = paramInt2 + paramRandom.nextDouble() * 0.6D + 0.2D;
104                double d3 = paramInt3 + paramRandom.nextDouble() * 0.6D + 0.2D;
105    
106                paramfv.a("smoke", d1, d2, d3, 0.0D, 0.0D, 0.0D);
107              }
108            }
109          }}
110        }
111        else if ((!bool) && 
112          (!a(paramfv, paramInt1, paramInt2, paramInt3, false))){
113            // hMod: Allow redstone torches to provide power
114                int current = (Integer) etc.getLoader().callHook(PluginLoader.Hook.REDSTONE_CHANGE, new Object[]{new Block(this.bh, paramInt1, paramInt2, paramInt3), 0, 1});
115                if (current > 0) {
116          paramfv.b(paramInt1, paramInt2, paramInt3, hr.aQ.bi, paramfv.b(paramInt1, paramInt2, paramInt3));}
117      }}
118    
119      public void b(fv paramfv, int paramInt1, int paramInt2, int paramInt3, int paramInt4)
120      {
121        super.b(paramfv, paramInt1, paramInt2, paramInt3, paramInt4);
122        paramfv.i(paramInt1, paramInt2, paramInt3, bi);
123      }
124    
125      public boolean d(fv paramfv, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
126        if (paramInt4 == 0) {
127            // hMod: forced downcast!
128          return b((la)paramfv, paramInt1, paramInt2, paramInt3, paramInt4);
129        }
130        return false;
131      }
132    
133      public int a(int paramInt, Random paramRandom) {
134        return hr.aQ.bi;
135      }
136    
137      public boolean c() {
138        return true;
139      }
140    }