geforkt von Mirrors/Paper
177 Zeilen
6.6 KiB
Java
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;
|
|
}
|
|
}
|