Posted June 6, 201213 yr Hi im a nobe and i know it. Im working on a small mod thats based on Forge. I want to add an item that takes damage when used in a crafting recipe like the handsaws from redpower. I read that its uses Forge to function. I looked for something that could do that in the source files, google, Forge Wiki but i cant find anything. Please If you know how to do it please tell me or point me in the right direction. EDIT: Hi do annubody know how it works on 1.4? (Sorry For my Spelling)
June 6, 201213 yr i'm not sure which forge function does it but i think it involves returning an item into the crafting 3x3 with a different meta damage value. http://i577.photobucket.com/albums/ss215/bobstrong/ModBannerMed.png[/img]
June 6, 201213 yr look at the crafting handler interface. I do Forge for free, however the servers to run it arn't free, so anything is appreciated. Consider supporting the team on Patreon
June 30, 201213 yr hey, i am looking for some healp in the same thing like the author. i looked in the ICraftingHandler, but i dont understand how it works do i have to create a ItemTool with this handler implemented? and then make it like: stack.setItemDamage(stack.getItemDamage() - 1); greetz helfull Developing CocktailsMod
July 3, 201213 yr Success!!! After mining (get it through the source code for half a day (not to be provd of I at last came up with a method which does what you want (and so do I). !WARNING! This is a code which was a result of a half a day of reading through the internet so it's not writen well. Also... if you can rewrite in a better state then do that and post it here please. So here goes: @Override public void takenFromCrafting(EntityPlayer e, ItemStack item, IInventory m) { for(int i=0; i<m.getSizeInventory(); i++) { if(m.getStackInSlot(i) != null) { ItemStack j = m.getStackInSlot(i); if(j.getItem() != null && j.getItem() == this.pickSapphire) { ItemStack k = new ItemStack(pickSapphire, 2); k.damageItem(j.getItemDamage() + 1, e); m.setInventorySlotContents(i, k); } } } } I think I also have some explaining to do 1. This goes in the mod_xxx.java 2. For loop loops through the slots in the current inventory (crafting table/inventory crafting space) looking for the item stated in the if statement 3. Now this is the stupid part but I couldn't find a better way... The truth is that takenFromCrafting is called before the ingredients are destroied or at least that is what I've found (Lex?) that is why you have to make an ItemStack of two Items so that one is destroied and the other stays in the grid 4. this in the if statement is the BaseMod class or the class having your item defined in 5. Then is just the damage calculation depending on the ingredient (Item) This is it If you have some more questions be sure to ask and I'll respond asap. Have fun, JKK. EDIT: Eloraam if you see this, would you mind not die because of laughing Maybe even supply us with your code? (not begging ofc)
July 3, 201213 yr the line if(j.getItem() != null && j.getItem() == this.pickSapphire) could just be if(j.getItem() == this.pickSapphire) because if it equals pickSapphire it cannot be null
July 3, 201213 yr Not to be a smart ass but how are you going to get an Item out of Null? Tbh it is not needed as I checked if the Inventory slot was occupied but rather one too many then one too short
July 3, 201213 yr Thats actually quite similar to how El does it. Except instead of creating a new ItemStack like a berp, she just edits the ItemStack instance. stack.damage++; stack.stackSize++; Done. As for this line: if(j.getItem() != null && j.getItem() == this.pickSapphire) the PROPER line should be: if(j != null && j.getItem() == this.pickSapphire) I do Forge for free, however the servers to run it arn't free, so anything is appreciated. Consider supporting the team on Patreon
July 3, 201213 yr rly big thanks to JKK i got it now to work i am now 1 step closer to release my mod Developing CocktailsMod
July 5, 201213 yr Thats actually quite similar to how El does it. Except instead of creating a new ItemStack like a berp, she just edits the ItemStack instance. stack.damage++; stack.stackSize++; Done. As for this line: if(j.getItem() != null && j.getItem() == this.pickSapphire) the PROPER line should be: if(j != null && j.getItem() == this.pickSapphire) Thank you for the respons Lex. Tbh I was trying out the solution that you first stated (++) but at that time I didn't know I need 2 stacks so I thought it somehow isn't working. For the second one... makes sence to use it that way.
July 10, 201213 yr But when the item is damaged you cant use it in a crafting recipe again? how do I fix this? http://i.imgur.com/Hppni.png[/img]
July 12, 201213 yr Do not specify a damage value for it in the recipe and it will use all. My recipe: ModLoader.addShapelessRecipe(new ItemStack(DecPlanks, 4, 2),new Object[]{ Block.planks,Block.planks,Block.planks,Block.planks, Item.axeGold }); I can only use the golden axe once in the recipe, because when its damaged after the first time I use it in the recipe Its not new hence I cant use it anymore this is very frustrating. btw JKK, because you got it working, can you please help me out? I need this! Thank you! http://i.imgur.com/Hppni.png[/img]
August 10, 201213 yr Author Was Reading this and i was trying to get this working but i did something wrong. I got errors on the e and m's After i pieced together what the comments said and i got it to this. for(int i=0; i<m.getSizeInventory(); i++) { if(m.getStackInSlot(i) != null) { ItemStack j = m.getStackInSlot(i); if(j != null && j.getItem() == this.Test) { ItemStack k = new ItemStack(Test, 2); k.damageItem(j.getItemDamage() + 1, e); m.setInventorySlotContents(i, k); } } } What are wrong?!?!
August 21, 201213 yr Use -1 as damage value in recipe, it will then accept items with any damage. (Can't test this, I just read it from the source code)
August 25, 201213 yr Has anyone got this working in MC1.3.2, as I cant even find the takenFromCrafting function
August 26, 201213 yr I think theres some way of doing it, but I dont know how forge does it now. http://i.imgur.com/Hppni.png[/img]
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.