Jump to content

Recommended Posts

Posted

Hey guys,

 

So I'm trying to remove/disable wooden and stone tools for my mod. I would like to have a config file aswell where I can set the value to true or false.

So I have two questions, that I haven't been able to figure out myself, or find anything about on google.

Firstly, I can't figure out how to disable/remove any items.

And Secondly, I have no idea how the code should be when it gets the value from the config file. I know how to make the config file and how to add lines and stuff to it, but I don't know how to let the config file, choose wheither to remove/disable the items.

 

Any help would be great, even a link to a thread or tutorial is fine :)

Posted

I don't recommend you disable items completely since another mod may require an item for it's recipe and you would in effect, ruin that mod. But you could do something similar to what IguanaTweaks (or is it base Tinkers Construct?) and make the vanilla tools useless by removing their ability to mine blocks. I'm not entirely sure how it's implemented but you could perhaps subscribe to the ItemCraftedEvent which fires right before an item is created and remove it's damage if it's a vanilla tool.

Developing the Spiral Power Mod .

こんにちは!お元気ですか?

Posted

I don't recommend you disable items completely since another mod may require an item for it's recipe and you would in effect, ruin that mod. But you could do something similar to what IguanaTweaks (or is it base Tinkers Construct?) and make the vanilla tools useless by removing their ability to mine blocks. I'm not entirely sure how it's implemented but you could perhaps subscribe to the ItemCraftedEvent which fires right before an item is created and remove it's damage if it's a vanilla tool.

 

That's why I want to use the config file, so that people can allow the items, and make the mods works again.

 

Either way this mod, is most likely only going to be for my own private use on my own server/client.

Posted

Fair enough mate. I can't actually help you on the config part of things because I haven't played with it, hopefully someone else will come along for that. However if you want to straight up remove recipes you could get an instance of the recipe list from the CraftingManager class and iterate through removing the items you don't want from the list.. Something like this:

 

public static void removeRecipe()
{
     List<IRecipe> recipes = CraftingManager.getInstance().getRecipeList();
     Iterator<IRecipe> remover = recipes.iterator();
     
     while(remover.hasNext())
     {
          ItemStack itemStack = remover.next().getRecipeOutput();
          // check for items and remove them
     }
}

 

Developing the Spiral Power Mod .

こんにちは!お元気ですか?

Posted

Fair enough mate. I can't actually help you on the config part of things because I haven't played with it, hopefully someone else will come along for that. However if you want to straight up remove recipes you could get an instance of the recipe list from the CraftingManager class and iterate through removing the items you don't want from the list.. Something like this:

 

public static void removeRecipe()
{
     List<IRecipe> recipes = CraftingManager.getInstance().getRecipeList();
     Iterator<IRecipe> remover = recipes.iterator();
     
     while(remover.hasNext())
     {
          ItemStack itemStack = remover.next().getRecipeOutput();
          // check for items and remove them
     }
}

 

Cool I will try it first thing in the morning, thanks for your help ☺

Posted

Fair enough mate. I can't actually help you on the config part of things because I haven't played with it, hopefully someone else will come along for that. However if you want to straight up remove recipes you could get an instance of the recipe list from the CraftingManager class and iterate through removing the items you don't want from the list.. Something like this:

 

public static void removeRecipe()
{
     List<IRecipe> recipes = CraftingManager.getInstance().getRecipeList();
     Iterator<IRecipe> remover = recipes.iterator();
     
     while(remover.hasNext())
     {
          ItemStack itemStack = remover.next().getRecipeOutput();
          // check for items and remove them
     }
}

 

I can't get it work sadly, I might be doing something wrong when adding the items, it should remove.

I'm adding this line.

// check for items and remove them
itemStack = new ItemStack(Items.wooden_axe);

Posted

You'll want to pull the next ItemStack the remover is looking at out of the recipe list to check, and then check to see if it matches the item you want to remove.

 

     ItemStack itemstack = remover.next().getRecipeOutput();

     if(itemstack != null && itemstack.getItem() == Items.whatever this item is)
    {
          remover.remove();

     }

 

You could then expand with more else ifs in the list checking for more items or alternatively you could check for blocks with Item.getItemFromBlock(Blocks.the block to remove).

 

Personally I have it more modularized with:

 

public static void removeCraftingRecipe(Item item)
{
     List<IRecipe> recipes = CraftingManager.getInstance().getRecipeList();
     Iterator<IRecipe> remover = recipes.iterator();
     
     while(remover.hasNext())
     {
    	 ItemStack itemstack = remover.next().getRecipeOutput();

		if(itemstack != null && itemstack.getItem() == item)
		{
			remover.remove();
		}
     }
}

 

So I can just call it per item I want to remove instead of expanding the if statements to include new items

Developing the Spiral Power Mod .

こんにちは!お元気ですか?

Posted

You'll want to pull the next ItemStack the remover is looking at out of the recipe list to check, and then check to see if it matches the item you want to remove.

 

     ItemStack itemstack = remover.next().getRecipeOutput();

     if(itemstack != null && itemstack.getItem() == Items.whatever this item is)
    {
          remover.remove();

     }

 

You could then expand with more else ifs in the list checking for more items or alternatively you could check for blocks with Item.getItemFromBlock(Blocks.the block to remove).

 

Personally I have it more modularized with:

 

public static void removeCraftingRecipe(Item item)
{
     List<IRecipe> recipes = CraftingManager.getInstance().getRecipeList();
     Iterator<IRecipe> remover = recipes.iterator();
     
     while(remover.hasNext())
     {
    	 ItemStack itemstack = remover.next().getRecipeOutput();

		if(itemstack != null && itemstack.getItem() == item)
		{
			remover.remove();
		}
     }
}

 

So I can just call it per item I want to remove instead of expanding the if statements to include new items

 

I see, I will try it later, I don't really have the time right now :)

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



×
×
  • Create New...

Important Information

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