Jump to content

Recommended Posts

Posted

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)

  • 4 weeks later...
Posted

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 :)

Posted

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)

 

Posted

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

Posted

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 :)

Posted

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

Posted

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.

Posted

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!

  • 4 weeks later...
Posted

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?!?!

  • 2 weeks later...
Posted

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)

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I tried do download the essential mod to my mod pack but i didnt work. I paly on 1.21 and it should work. I use neoforge for my modding. The weird things is my friend somehow added the mod to his modpack and many others that I somehow can´t. Is there anything i can do? 
    • Thanks, I've now installed a slightly newer version and the server is at least starting up now.
    • i have the same issue. Found 1 Create mod class dependency(ies) in createdeco-1.3.3-1.19.2.jar, which are missing from the current create-1.19.2-0.5.1.i.jar Found 11 Create mod class dependency(ies) in createaddition-fabric+1.19.2-20230723a.jar, which are missing from the current create-1.19.2-0.5.1.i.jar Detailed walkthrough of mods which rely on missing Create mod classes: Mod: createaddition-fabric+1.19.2-20230723a.jar Missing classes of create: com/simibubi/create/compat/jei/category/sequencedAssembly/JeiSequencedAssemblySubCategory com/simibubi/create/compat/recipeViewerCommon/SequencedAssemblySubCategoryType com/simibubi/create/compat/rei/CreateREI com/simibubi/create/compat/rei/EmptyBackground com/simibubi/create/compat/rei/ItemIcon com/simibubi/create/compat/rei/category/CreateRecipeCategory com/simibubi/create/compat/rei/category/WidgetUtil com/simibubi/create/compat/rei/category/animations/AnimatedBlazeBurner com/simibubi/create/compat/rei/category/animations/AnimatedKinetics com/simibubi/create/compat/rei/category/sequencedAssembly/ReiSequencedAssemblySubCategory com/simibubi/create/compat/rei/display/CreateDisplay Mod: createdeco-1.3.3-1.19.2.jar Missing classes of create: com/simibubi/create/content/kinetics/fan/SplashingRecipe
    • The crash points to moonlight lib - try other builds or make a test without this mod and the mods requiring it
    • Do you have shaders enabled? There is an issue with the mod simpleclouds - remove this mod or disable shaders, if enabled  
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.