Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[1.7.10] I'm trying get minecraft to register a Recipe with a var. CRASH

Featured Replies

Posted

I'm trying get minecraft to register a Recipe with a var and it just keeps Crashing. I've been looking for a way to do this. Also this is my first time posting like this. Let me know If there is a better place for me to post questions like this.

 

This is my code.

 

package com.violet.violetmod;
import [ ... ]

@Mod(modid = VioletMod.MODID, version = VioletMod.VERSION)
public class VioletMod{

public static final String MODID = "violetMod";
public static final String VERSION = "0.1 Alpha";

public static Item violetShard;

public String coalNum = "Items.coal";


@EventHandler
public void init(FMLInitializationEvent event)
{
violetShard = new VioletShard().setUnlocalizedName("violetShard");
GameRegistry.registerItem(violetShard, violetShard.getUnlocalizedName().substring(5));

    	for(int i=1; i<9; i++){
    		coalNum = "Items.coal";
    		for(int r=1; r<i; r++){
    			coalNum = coalNum + ", Items.coal";
    		}
    		System.out.println(coalNum);
    	}

GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1), VioletMod.violetShard, coalNum);

}

}

 

I did cut out a large amount of code just to make it easier to troubleshoot.

Not completely sure, but I don't think you can use a string as an argument for a crafting recipe. I think that if you made coalNum an Item and set it to Items.coal, it'd work.

public Item coalNum = Items.coal;

should work.

 

EDIT: And that for loop thing won't work either as far as I know.

I'll put something here when I have something of value I need to put at the end of every post. For now it's this mostly pointless text.

  • Author

That was the problem. I'm going to try the loop thing for another 15 min then I'm going to give up.

Thank you for your help. That was a dumb mistake. Thank you

  • Author

realy what I'm trying to do is not this 256 times.

 

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 1), VioletMod.violetShard, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 2), VioletMod.violetShard, coalNum, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 3), VioletMod.violetShard, coalNum, coalNum, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 4), VioletMod.violetShard, coalNum, coalNum, coalNum, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 5), VioletMod.violetShard, coalNum, coalNum, coalNum, coalNum, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 6), VioletMod.violetShard, coalNum, coalNum, coalNum, coalNum, coalNum, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 7), VioletMod.violetShard, coalNum, coalNum, coalNum, coalNum, coalNum, coalNum, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 8), VioletMod.violetShard, coalNum, coalNum, coalNum, coalNum, coalNum, coalNum, coalNum, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 2), VioletMod.violetShard,1, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 3), VioletMod.violetShard,1, coalNum, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 4), VioletMod.violetShard,1, coalNum, coalNum, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 5), VioletMod.violetShard,1, coalNum, coalNum, coalNum, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 6), VioletMod.violetShard,1, coalNum, coalNum, coalNum, coalNum, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 7), VioletMod.violetShard,1, coalNum, coalNum, coalNum, coalNum, coalNum, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 8), VioletMod.violetShard,1, coalNum, coalNum, coalNum, coalNum, coalNum, coalNum, coalNum);

    GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard,1, 9), VioletMod.violetShard,1, coalNum, coalNum, coalNum, coalNum, coalNum, coalNum, coalNum, coalNum);

The last parameter of ItemStack is the damage value, not the stack size - do you have different item subtypes?

 

If not, and you just want one item per coal, i.e. 1 coal = 1 shard, 2 coals = 2 shards, etc., then all you need is to register the first recipe:

GameRegistry.addShapelessRecipe(new ItemStack(VioletMod.violetShard), VioletMod.violetShard, Items.coal);

Then the player just clicks away and voilá, they have tons of shards.

I do have subtypes

Well you can't very well have every single subtype crafted in exactly the same way - if I put in one shard and one coal, what type of shard do I get back? Does the recipe require the same type of shard as input?

 

Then you can just loop through the subtypes and add the one recipe for each:

for (int i = 0; i < numSubtypes; ++i) {
ItemStack stack = new ItemStack(shard, 1, i); // shard of appropriate subtype
GameRegistry.addShapelessRecipe(stack, stack, Items.coal); // combining the shard with coal gives you... itself?
}

You're going to have to explain exactly what you are trying to do - what items combined give what item?

  • Author

actually You just fixed my problem. Thank you. It just needed to restraint it by the number of subtypes.

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.