[Req] TNT Dispenser

Discussion in 'Archived: Plugin Requests' started by tyrantelf, Apr 9, 2011.

  1. Offline

    tyrantelf

    I would like a TNT dispenser like this one for my bukkit server, as I'd like to use it to make cannons, but still be able to play with my friends (and give them things with the give command). I don't care if it shoots TNT, or does any of the other things, I just need it to place the TNT. I would like it if I could decide where it would place the TNT, all four cardinal directions and above and below if possible!

    If you think you could do it, and need more information about what I want, please post. I'd like to have this mod fairly soon if possible.

    Thanks for just looking, and even more if you try to make it,
    Tyrantelf

    Edit:

    I don't know if it would help any, but here is the decompiled tl.class that is in the Dispensers+ download.
    tl.class (open)

    import java.io.PrintStream;
    import java.util.Random;

    public class tl extends om
    {
    private Random rnd = new Random();
    private static boolean hasModLoader = false;

    protected tl(int paramInt)
    {
    super(paramInt, jh.d);
    this.bk = 45;
    try
    {
    Class.forName("ModLoader");
    hasModLoader = true;
    System.out.println("Dispensers+: ModLoader Beta 1.4_01 found");
    }
    catch (Exception localException)
    {
    System.out.println("Dispensers+: ModLoader not found");
    }
    }

    public int d()
    {
    return 4;
    }

    public int a(int paramInt, Random paramRandom)
    {
    return ra.P.bl;
    }

    public void e(eb parameb, int paramInt1, int paramInt2, int paramInt3)
    {
    super.e(parameb, paramInt1, paramInt2, paramInt3);
    h(parameb, paramInt1, paramInt2, paramInt3);
    }

    private void h(eb parameb, int paramInt1, int paramInt2, int paramInt3)
    {
    int i = parameb.a(paramInt1, paramInt2, paramInt3 - 1);
    int j = parameb.a(paramInt1, paramInt2, paramInt3 + 1);
    int k = parameb.a(paramInt1 - 1, paramInt2, paramInt3);
    int m = parameb.a(paramInt1 + 1, paramInt2, paramInt3);
    int n = 3;
    if ((ra.o != 0) && (ra.o[j] == 0))
    n = 3;
    if ((ra.o[j] != 0) && (ra.o == 0))
    n = 2;
    if ((ra.o[k] != 0) && (ra.o[m] == 0))
    n = 5;
    if ((ra.o[m] != 0) && (ra.o[k] == 0))
    n = 4;
    parameb.c(paramInt1, paramInt2, paramInt3, n);
    }

    public int a(tk paramtk, int paramInt1, int paramInt2, int paramInt3, int paramInt4)
    {
    if (paramInt4 == 1)
    return this.bk + 17;
    if (paramInt4 == 0)
    return this.bk + 17;
    int i = paramtk.e(paramInt1, paramInt2, paramInt3);
    if (paramInt4 != i)
    return this.bk;
    return this.bk + 1;
    }

    public int a(int paramInt)
    {
    if (paramInt == 1)
    return this.bk + 17;
    if (paramInt == 0)
    return this.bk + 17;
    if (paramInt == 3)
    return this.bk + 1;
    return this.bk;
    }

    public boolean a(eb parameb, int paramInt1, int paramInt2, int paramInt3, fm paramfm)
    {
    if (parameb.t)
    return true;
    al localal = (al)parameb.b(paramInt1, paramInt2, paramInt3);
    paramfm.a(localal);
    return true;
    }

    public void a(eb parameb, int paramInt1, int paramInt2, int paramInt3, int paramInt4)
    {
    if ((paramInt4 > 0) && (ra.m[paramInt4].e()))
    {
    int i = (parameb.q(paramInt1, paramInt2, paramInt3)) || (parameb.q(paramInt1, paramInt2 + 1, paramInt3)) ? 1 : 0;
    if (i != 0)
    parameb.c(paramInt1, paramInt2, paramInt3, this.bl, d());
    }
    }

    public void a(eb parameb, int paramInt1, int paramInt2, int paramInt3, Random paramRandom)
    {
    if ((parameb.q(paramInt1, paramInt2, paramInt3)) || (parameb.q(paramInt1, paramInt2 + 1, paramInt3)))
    onPowered(parameb, paramInt1, paramInt2, paramInt3, paramRandom);
    }

    protected ma a_()
    {
    return new al();
    }

    public void a(eb parameb, int paramInt1, int paramInt2, int paramInt3, jm paramjm)
    {
    int i = gz.b(paramjm.aP * 4.0F / 360.0F + 0.5D) & 0x3;
    if (i == 0)
    parameb.c(paramInt1, paramInt2, paramInt3, 2);
    if (i == 1)
    parameb.c(paramInt1, paramInt2, paramInt3, 5);
    if (i == 2)
    parameb.c(paramInt1, paramInt2, paramInt3, 3);
    if (i == 3)
    parameb.c(paramInt1, paramInt2, paramInt3, 4);
    }

    public void b(eb parameb, int paramInt1, int paramInt2, int paramInt3)
    {
    al localal = (al)parameb.b(paramInt1, paramInt2, paramInt3);
    System.out.println("onDestroy");
    for (int i = 0; i < localal.a(); i++)
    {
    hi localhi = localal.c_(i);
    if (localhi == null)
    continue;
    float f1 = this.rnd.nextFloat() * 0.8F + 0.1F;
    float f2 = this.rnd.nextFloat() * 0.8F + 0.1F;
    float f3 = this.rnd.nextFloat() * 0.8F + 0.1F;
    while (localhi.a > 0)
    {
    int j = this.rnd.nextInt(21) + 10;
    if (j > localhi.a)
    j = localhi.a;
    localhi.a -= j;
    gb localgb = new gb(parameb, paramInt1 + f1, paramInt2 + f2, paramInt3 + f3, new hi(localhi.c, j, localhi.i()));
    float f4 = 0.05F;
    localgb.aM = ((float)this.rnd.nextGaussian() * f4);
    localgb.aN = ((float)this.rnd.nextGaussian() * f4 + 0.2F);
    localgb.aO = ((float)this.rnd.nextGaussian() * f4);
    parameb.a(localgb);
    }
    }
    super.b(parameb, paramInt1, paramInt2, paramInt3);
    }

    public void a(eb parameb, int paramInt1, int paramInt2, int paramInt3, pb parampb)
    {
    al localal;
    if (((parampb instanceof ug)) && (((ug)parampb).d == 0))
    {
    localal = (al)parameb.b(paramInt1, paramInt2, paramInt3);
    if (addItemToTrap(localal, new hi(fg.ax)) != -1)
    parameb.d(parampb);
    }
    else if ((parampb instanceof ew))
    {
    localal = (al)parameb.b(paramInt1, paramInt2, paramInt3);
    if (addItemToTrap(localal, new hi(fg.aC)) != -1)
    parameb.d(parampb);
    }
    }

    private int addItemToTrap(al paramal, hi paramhi)
    {
    for (int i = 0; i < paramal.a(); i++)
    {
    if (paramal.c_(i) != null)
    continue;
    paramal.a(i, paramhi);
    return i;
    }
    return -1;
    }

    private void onPowered(eb parameb, int paramInt1, int paramInt2, int paramInt3, Random paramRandom)
    {
    int i = parameb.e(paramInt1, paramInt2, paramInt3);
    float f1 = 0.0F;
    float f2 = 0.0F;
    if (i == 3)
    f2 = 1.0F;
    else if (i == 2)
    f2 = -1.0F;
    else if (i == 5)
    f1 = 1.0F;
    else
    f1 = -1.0F;
    ay localay = new ay(paramInt1 + (int)f1, paramInt2, paramInt3 + (int)f2);
    int j = parameb.a(localay.a, localay.b, localay.c);
    int k = parameb.e(localay.a, localay.b, localay.c);
    al localal = (al)parameb.b(paramInt1, paramInt2, paramInt3);
    String str = "random.click";
    if ((j >= 8) && (j <= 11) && (k == 0))
    for (int m = 0; m < localal.a(); m++)
    {
    if ((localal.c_(m) == null) || (localal.c_(m).c != 325))
    continue;
    parameb.b(localay.a, localay.b, localay.c, 0, 0);
    parameb.h(paramInt1, paramInt2, paramInt3, 0);
    localal.a(m, 1);
    if ((j == 8) || (j == 9))
    localal.a(m, new hi(fg.av));
    else if ((j == 10) || (j == 11))
    localal.a(m, new hi(fg.aw));
    parameb.a(paramInt1, paramInt2, paramInt3, "random.click", 1.0F, 1.2F);
    return;
    }
    hi localhi = localal.b();
    double d1 = paramInt1 + f1 * 0.5D + 0.5D;
    double d2 = paramInt2 + 0.5D;
    double d3 = paramInt3 + f2 * 0.5D + 0.5D;
    if (localhi == null)
    {
    str = "random.click";
    }
    else if ((hasModLoader) && (ModLoader.DispenseEntity(parameb, d1, d2, d3, f1, f2, localhi)))
    {
    str = null;
    }
    else
    {
    Object localObject;
    if (localhi.c == fg.j.bd)
    {
    localObject = new oz(parameb, d1, d2, d3);
    ((oz)localObject).a(f1, 0.1000000014901161D, f2, 1.1F, 6.0F);
    parameb.a((pb)localObject);
    str = "random.bow";
    }
    else if (localhi.c == fg.aN.bd)
    {
    localObject = new rx(parameb, d1, d2, d3);
    ((rx)localObject).a(f1, 0.1000000014901161D, f2, 1.1F, 6.0F);
    parameb.a((pb)localObject);
    str = "random.bow";
    }
    else if (localhi.c == fg.aB.bd)
    {
    localObject = new bg(parameb, d1, d2, d3);
    ((bg)localObject).a(f1, 0.1000000014901161D, f2, 1.1F, 6.0F);
    parameb.a((pb)localObject);
    str = "random.bow";
    }
    else if ((localhi.c == ra.am.bl) && (parameb.a(paramInt1, paramInt2 - 1, paramInt3) == ra.ai.bl))
    {
    localObject = new np(parameb, d1, d2, d3);
    ((np)localObject).aM = f1;
    ((np)localObject).aN = 0.1000000014901161D;
    ((np)localObject).aO = f2;
    parameb.a((pb)localObject);
    str = "random.bow";
    }
    else
    {
    int n;
    if ((localhi.c == ra.am.bl) || (localhi.c == fg.av.bd) || (localhi.c == fg.aw.bd))
    {
    n = 0;
    if ((j == 0) || (j == 8) || (j == 9) || (j == 10) || (j == 11))
    {
    if (localhi.c == ra.am.bl)
    {
    n = ra.am.bl;
    str = "step.grass";
    }
    else
    {
    n = localhi.c == fg.av.bd ? ra.B.bl : ra.D.bl;
    addItemToTrap(localal, new hi(fg.au));
    }
    parameb.b(localay.a, localay.b, localay.c, n, 0);
    parameb.h(paramInt1, paramInt2, paramInt3, n);
    }
    }
    else if ((localhi.c == fg.ax.bd) || (localhi.c == fg.aL.bd) || (localhi.c == fg.aM.bd))
    {
    n = 0;
    if (localhi.c == fg.aL.bd)
    n = 1;
    else if (localhi.c == fg.aM.bd)
    n = 2;
    if (!parameb.t)
    parameb.a(new ug(parameb, d1 + f1 * 0.8D, d2, d3 + f2 * 0.8D, n));
    str = "random.click";
    }
    else if (localhi.c == fg.aC.bd)
    {
    if (!parameb.t)
    parameb.a(new ew(parameb, d1 + f1 * 0.8D, d2, d3 + f2 * 0.8D));
    str = "random.click";
    }
    else
    {
    launchPickup(parameb, f1, f2, d1, d2, d3, localhi, paramRandom);
    str = "random.click";
    }
    }
    }
    if (str != null)
    parameb.a(paramInt1, paramInt2, paramInt3, str, 1.0F, 1.2F);
    popSmoke(parameb, f1, f2, d1, d2, d3, paramRandom);
    }

    private void launchPickup(eb parameb, float paramFloat1, float paramFloat2, double paramDouble1, double paramDouble2, double paramDouble3, hi paramhi, Random paramRandom)
    {
    gb localgb = new gb(parameb, paramDouble1, paramDouble2 - 0.3D, paramDouble3, paramhi);
    double d = paramRandom.nextDouble() * 0.1D + 0.2D;
    localgb.aM = (paramFloat1 * d);
    localgb.aN = 0.2000000029802322D;
    localgb.aO = (paramFloat2 * d);
    localgb.aM += paramRandom.nextGaussian() * 0.007499999832361937D * 6.0D;
    localgb.aN += paramRandom.nextGaussian() * 0.007499999832361937D * 6.0D;
    localgb.aO += paramRandom.nextGaussian() * 0.007499999832361937D * 6.0D;
    parameb.a(localgb);
    }

    private void popSmoke(eb parameb, float paramFloat1, float paramFloat2, double paramDouble1, double paramDouble2, double paramDouble3, Random paramRandom)
    {
    for (int i = 0; i < 10; i++)
    {
    double d1 = paramRandom.nextDouble() * 0.2D + 0.01D;
    double d2 = paramDouble1 + paramFloat1 * 0.01D + (paramRandom.nextDouble() - 0.5D) * paramFloat2 * 0.5D;
    double d3 = paramDouble2 + (paramRandom.nextDouble() - 0.5D) * 0.5D;
    double d4 = paramDouble3 + paramFloat2 * 0.01D + (paramRandom.nextDouble() - 0.5D) * paramFloat1 * 0.5D;
    double d5 = paramFloat1 * d1 + paramRandom.nextGaussian() * 0.01D;
    double d6 = -0.03D + paramRandom.nextGaussian() * 0.01D;
    double d7 = paramFloat2 * d1 + paramRandom.nextGaussian() * 0.01D;
    parameb.a("smoke", d2, d3, d4, d5, d6, d7);
    }
    }
    }
     
  2. Offline

    tyrantelf

Share This Page