blob: a445b770d58febd9a9bc705f975903e1f570028e [file] [log] [blame] [raw]
package net.glowstone.inventory.crafting;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.FireworkEffectMeta;
import org.bukkit.inventory.meta.FireworkMeta;
public class GlowFireworkMatcher extends ItemMatcher {
@Override
public ItemStack getResult(ItemStack[] matrix) {
int gunpowder = 0;
boolean hasPaper = false;
List<ItemStack> charges = new ArrayList<>();
for (ItemStack item : matrix) {
if (item == null) {
continue;
}
switch (item.getType()) {
case SULPHUR:
gunpowder++;
break;
case FIREWORK_CHARGE:
charges.add(item);
break;
case PAPER:
if (hasPaper) {
return null; // Only one paper allowed
}
hasPaper = true;
break;
default:
return null; // Wrong item on matrix
}
}
if (gunpowder < 1 || gunpowder > 3) {
return null; // Must have 1-3 gunpowder
}
if (!hasPaper) {
return null; // Paper needed
}
ItemStack ret = new ItemStack(Material.FIREWORK, 3);
if (charges.isEmpty()) { // This makes no sense Mojang, but whatever
return ret;
}
FireworkMeta firework = (FireworkMeta) ret.getItemMeta();
firework.setPower(gunpowder);
for (ItemStack item : charges) {
FireworkEffectMeta charge = (FireworkEffectMeta) item.getItemMeta();
if (!charge.hasEffect()) {
continue;
}
firework.addEffect(charge.getEffect());
}
ret.setItemMeta(firework);
return ret;
}
}