Posted July 31, 201411 yr i made a new special crafting recipe (it has its own class instead of using the normal way of making crafting recipes) and the first times i tried it, putting the materials in the crafting slots would cause a crash, so it is being called properly, i know that for sure and i have another crafting recipe that works and is called the excact same way, but with different arguments and of course with a different class. after i fixed that i realized that it didnt produce anything at all as if i didnt have the crafting recipe there at all! my code is a mess and i cant figure out what i have done wrong. can anyone help? public class RecipeWeaponReload implements IRecipe { private int ammount; private int ammoType; private Item weapon; private Item ammo1; private Item ammo2; private Item ammo3; private ItemStack itemstack; public RecipeWeaponReload(Item weapon, Item ammo1, Item ammo2, Item ammo3) { this.weapon = weapon; this.ammo1 = ammo1; this.ammo2 = ammo2; this.ammo3 = ammo3; } @Override public boolean matches(InventoryCrafting crafting, World world) { ItemStack itemstack1 = null; ItemStack itemstack2 = null; int w = 0; int a = 0; int a1 = 0; int a2 = 0; int a3 = 0; int at = 0; for (int k1 = 0; k1 < crafting.getSizeInventory(); ++k1) { itemstack1 = crafting.getStackInSlot(k1); if (itemstack1 != null) { if(itemstack1.getItem() == this.ammo1) { ++a; ++a1; at = 1; } else if(itemstack1.getItem() == this.ammo2) { ++a; ++a2; at = 2; } else if(itemstack1.getItem() == this.ammo3) { ++a; ++a3; at = 3; } else if(itemstack1.getItem() == this.weapon) { ++w; itemstack2 = itemstack1; } else { return false; } } } if(itemstack2 != null && ((w == 1 && a1 > 0 && a2 == 0 && a3 == 0) || (w == 1 && a1 == 0 && a2 > 0 && a3 == 0) || (w == 1 && a1 == 0 && a2 == 0 && a3 > 0))) { String t = null; if(itemstack2.getItem() instanceof ItemWeaponPistol) { if(at == 1) { t = ((ItemWeaponPistol)itemstack2.getItem()).ammo1Name; } else if(at == 2) { t = ((ItemWeaponPistol)itemstack2.getItem()).ammo2Name; } else if(at == 3) { t = ((ItemWeaponPistol)itemstack2.getItem()).ammo3Name; } } if(itemstack2.stackTagCompound.getInteger("Ammo")+a > itemstack2.stackTagCompound.getInteger("Capacity") && itemstack2.stackTagCompound.getString("AmmoType") == t) { return false; } else { this.ammount = a; this.ammoType = at; return true; } } else { this.itemstack = null; return false; } } @Override public ItemStack getCraftingResult(InventoryCrafting crafting) { if(this.itemstack != null) { ItemStack itemstack1 = ItemStack.copyItemStack(this.itemstack); if(itemstack1.getItem() instanceof ItemWeaponPistol) { ((ItemWeaponPistol)itemstack1.getItem()).createNbt(itemstack1); } if(itemstack1.stackTagCompound.getInteger("Ammo")+this.ammount > itemstack1.stackTagCompound.getInteger("Capacity")) { itemstack1.stackTagCompound.setInteger("Ammo", itemstack1.stackTagCompound.getInteger("Capacity")); } else { itemstack1.stackTagCompound.setInteger("Ammo", itemstack1.stackTagCompound.getInteger("Ammo")+this.ammount); } if(itemstack1.getItem() instanceof ItemWeaponPistol) { if(this.ammoType == 1) { itemstack1.stackTagCompound.setString("AmmoType", ((ItemWeaponPistol)itemstack1.getItem()).ammo1Name); } else if(this.ammoType == 2) { itemstack1.stackTagCompound.setString("AmmoType", ((ItemWeaponPistol)itemstack1.getItem()).ammo2Name); } else if(this.ammoType == 3) { itemstack1.stackTagCompound.setString("AmmoType", ((ItemWeaponPistol)itemstack1.getItem()).ammo3Name); } } return itemstack1; } else { return null; } } @Override public int getRecipeSize() { return 1; } @Override public ItemStack getRecipeOutput() { if(this.itemstack != null) { return this.itemstack; } else { return new ItemStack(this.weapon); } } } http://www.planetminecraft.com/member/sigurd4 I'm making the bioshock mod!
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.