Paper/src/main/java/net/minecraft/server/RecipeFireworks.java
2012-12-20 10:43:00 -06:00

177 Zeilen
6.6 KiB
Java

package net.minecraft.server;
import java.util.ArrayList;
public class RecipeFireworks extends ShapelessRecipes implements IRecipe { // CraftBukkit - added extends
private ItemStack a;
// CraftBukkit start - delegate to new parent class with bogus info
public RecipeFireworks() {
super(new ItemStack(Item.FIREWORKS, 0, 0), java.util.Arrays.asList(new ItemStack(Item.SULPHUR, 0, 5)));
}
// CraftBukkit end
public boolean a(InventoryCrafting inventorycrafting, World world) {
this.a = null;
int i = 0;
int j = 0;
int k = 0;
int l = 0;
int i1 = 0;
int j1 = 0;
for (int k1 = 0; k1 < inventorycrafting.getSize(); ++k1) {
ItemStack itemstack = inventorycrafting.getItem(k1);
if (itemstack != null) {
if (itemstack.id == Item.SULPHUR.id) {
++j;
} else if (itemstack.id == Item.FIREWORKS_CHARGE.id) {
++l;
} else if (itemstack.id == Item.INK_SACK.id) {
++k;
} else if (itemstack.id == Item.PAPER.id) {
++i;
} else if (itemstack.id == Item.GLOWSTONE_DUST.id) {
++i1;
} else if (itemstack.id == Item.DIAMOND.id) {
++i1;
} else if (itemstack.id == Item.FIREBALL.id) {
++j1;
} else if (itemstack.id == Item.FEATHER.id) {
++j1;
} else if (itemstack.id == Item.GOLD_NUGGET.id) {
++j1;
} else {
if (itemstack.id != Item.SKULL.id) {
return false;
}
++j1;
}
}
}
i1 += k + j1;
if (j <= 3 && i <= 1) {
NBTTagCompound nbttagcompound;
NBTTagCompound nbttagcompound1;
if (j >= 1 && i == 1 && i1 == 0) {
this.a = new ItemStack(Item.FIREWORKS);
if (l > 0) {
nbttagcompound = new NBTTagCompound();
nbttagcompound1 = new NBTTagCompound("Fireworks");
NBTTagList nbttaglist = new NBTTagList("Explosions");
for (int l1 = 0; l1 < inventorycrafting.getSize(); ++l1) {
ItemStack itemstack1 = inventorycrafting.getItem(l1);
if (itemstack1 != null && itemstack1.id == Item.FIREWORKS_CHARGE.id && itemstack1.hasTag() && itemstack1.getTag().hasKey("Explosion")) {
nbttaglist.add(itemstack1.getTag().getCompound("Explosion"));
}
}
nbttagcompound1.set("Explosions", nbttaglist);
nbttagcompound1.setByte("Flight", (byte) j);
nbttagcompound.set("Fireworks", nbttagcompound1);
this.a.setTag(nbttagcompound);
}
return true;
} else if (j == 1 && i == 0 && l == 0 && k > 0 && j1 <= 1) {
this.a = new ItemStack(Item.FIREWORKS_CHARGE);
nbttagcompound = new NBTTagCompound();
nbttagcompound1 = new NBTTagCompound("Explosion");
byte b0 = 0;
ArrayList arraylist = new ArrayList();
for (int i2 = 0; i2 < inventorycrafting.getSize(); ++i2) {
ItemStack itemstack2 = inventorycrafting.getItem(i2);
if (itemstack2 != null) {
if (itemstack2.id == Item.INK_SACK.id) {
arraylist.add(Integer.valueOf(ItemDye.b[itemstack2.getData()]));
} else if (itemstack2.id == Item.GLOWSTONE_DUST.id) {
nbttagcompound1.setBoolean("Flicker", true);
} else if (itemstack2.id == Item.DIAMOND.id) {
nbttagcompound1.setBoolean("Trail", true);
} else if (itemstack2.id == Item.FIREBALL.id) {
b0 = 1;
} else if (itemstack2.id == Item.FEATHER.id) {
b0 = 4;
} else if (itemstack2.id == Item.GOLD_NUGGET.id) {
b0 = 2;
} else if (itemstack2.id == Item.SKULL.id) {
b0 = 3;
}
}
}
int[] aint = new int[arraylist.size()];
for (int j2 = 0; j2 < aint.length; ++j2) {
aint[j2] = ((Integer) arraylist.get(j2)).intValue();
}
nbttagcompound1.setIntArray("Colors", aint);
nbttagcompound1.setByte("Type", b0);
nbttagcompound.set("Explosion", nbttagcompound1);
this.a.setTag(nbttagcompound);
return true;
} else if (j == 0 && i == 0 && l == 1 && k > 0 && k == i1) {
ArrayList arraylist1 = new ArrayList();
for (int k2 = 0; k2 < inventorycrafting.getSize(); ++k2) {
ItemStack itemstack3 = inventorycrafting.getItem(k2);
if (itemstack3 != null) {
if (itemstack3.id == Item.INK_SACK.id) {
arraylist1.add(Integer.valueOf(ItemDye.b[itemstack3.getData()]));
} else if (itemstack3.id == Item.FIREWORKS_CHARGE.id) {
this.a = itemstack3.cloneItemStack();
this.a.count = 1;
}
}
}
int[] aint1 = new int[arraylist1.size()];
for (int l2 = 0; l2 < aint1.length; ++l2) {
aint1[l2] = ((Integer) arraylist1.get(l2)).intValue();
}
if (this.a != null && this.a.hasTag()) {
NBTTagCompound nbttagcompound2 = this.a.getTag().getCompound("Explosion");
if (nbttagcompound2 == null) {
return false;
} else {
nbttagcompound2.setIntArray("FadeColors", aint1);
return true;
}
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
}
public ItemStack a(InventoryCrafting inventorycrafting) {
return this.a.cloneItemStack();
}
public int a() {
return 10;
}
public ItemStack b() {
return this.a;
}
}