Jump to content

Recommended Posts

Posted (edited)

I have been doing some research to figure out how to remove recipes from the BrewingRecipeRegistry. Most of the results I have found pertain to crafting recipes and are all from 1.12.2. I have tried to use the information for my mod, which is in 1.16, but it doesn't work. I am assuming this is because I am either missing some key concept or I botched the code. Regardless, one of the solutions I found was using IForgeRegistryModifiable#remove, but I am having trouble casting BrewingRecipeRegistry to make it modifiable and am not even sure if that is the correct way to go about this.

But essentially what I want to do is this:

BrewingRecipeRegistry.getEntries().remove(1);

I know that is not the actual syntax and that it doesn't work because getEntries() returns an immutable list, but I hope you catch my gist.

I have found ways to add brewing recipes, and this is the next logical step in my mod.

Edited by OberonPuck
Posted

BrewingRecipeRegistry isn't a Forge registry, you need to use reflection to access the underlying array object.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted
1 hour ago, Draco18s said:

BrewingRecipeRegistry isn't a Forge registry, you need to use reflection to access the underlying array object.

Thanks, I will attempt to do so and let you know what ends up happening.

Posted

Okay, so I attempted to do as you said, but I think I went about it incorrectly. The crash log says that I cannot cast an ArrayList to an AccessibleObject. However, I do not know how to make the ArrayList accessible in another way.

Here is my code. If you know a way to correct it, I would appreciate the help:

private static List<IBrewingRecipe> recipeRegistryArray;

@SuppressWarnings("unchecked")
	private static List<IBrewingRecipe> recipes()
	{
		if(recipeRegistryArray == null)
		{
			try {
				recipeRegistryArray = (List<IBrewingRecipe>)((ObfuscationReflectionHelper.findField(BrewingRecipeRegistry.class, "recipes").get(null)));
			} catch (IllegalArgumentException | IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			((AccessibleObject) recipeRegistryArray).setAccessible(true);
		}
		return recipeRegistryArray;
	}

 

Posted
5 minutes ago, OberonPuck said:

ArrayList to an AccessibleObject

I agree. Trying to set something as accessible when ObfuscationReflectionHelper::findField already does that for you makes no sense. Also casting an object to another with no relation also is bonkers.

 

Just remove you trying to set accessible. Also, if you want to remove individual vanilla brewing recipes, you will need to access the data in PotionBrewing.

Posted

Also also, you need to pass in the SRG name, not the MCP name.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted
8 hours ago, Draco18s said:

Also also, you need to pass in the SRG name, not the MCP name.

So, I don't know how to do that, but removing the .setAccessible worked like a charm. Thank you so much @ChampionAsh5357, and @Draco18s as well. Though, I have another issue that is tangentially related to potion brewing. Should I just ask it here or create a new thread?

Posted
1 hour ago, ChampionAsh5357 said:

I thought Forge classes are not obfuscated?

Forge classes aren't, you are correct. I thought that BrewingRecipeRegistry was a Vanilla class.

Good catch.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

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

    • When I first heard about Bitcoin back in 2018, I was skeptical. The idea of a decentralized, digital currency seemed too good to be true. But I was intrigued as I learned more about the technology behind it and its potential. I started small, investing just a few hundred dollars, dipping my toes into the cryptocurrency waters. At first, it was exhilarating to watch the value of my investment grow exponentially. I felt like I was part of the future, an early adopter of this revolutionary new asset. But that euphoria was short-lived. One day, I logged into my digital wallet only to find it empty - my Bitcoin had vanished without a trace. It turned out that the online exchange I had trusted had been hacked, and my funds were stolen. I was devastated, both financially and emotionally. All the potential I had seen in Bitcoin was tainted by the harsh reality that with decentralization came a lack of regulation and oversight. My hard-earned money was gone, lost to the ether of the digital world. This experience taught me a painful lesson about the price of trust in the uncharted territory of cryptocurrency. While the technology holds incredible promise, the risks can be catastrophic if you don't approach it with extreme caution. My Bitcoin investment gamble had failed, and I was left to pick up the pieces, wiser but poorer for having placed my faith in the wrong hands. My sincere appreciation goes to MUYERN TRUST HACKER. You are my hero in recovering my lost funds. Send a direct m a i l ( muyerntrusted ( @ ) mail-me ( . )c o m ) or message on whats app : + 1 ( 4-4-0 ) ( 3 -3 -5 ) ( 0-2-0-5 )
    • You could try posting a log (if there is no log at all, it may be the launcher you are using, the FAQ may have info on how to enable the log) as described in the FAQ, however this will probably need to be reported to/remedied by the mod author.
    • So me and a couple of friends are playing with a shitpost mod pack and one of the mods in the pack is corail tombstone and for some reason there is a problem with it, where on death to fire the player will get kicked out of the server and the tombstone will not spawn basically deleting an entire inventory, it doesn't matter what type of fire it is, whether it's from vanilla fire/lava, or from modded fire like ice&fire/lycanites and it's common enough to where everyone on the server has experienced at least once or twice and it doesn't give any crash log. a solution to this would be much appreciated thank you!
    • It is 1.12.2 - I have no idea if there is a 1.12 pack
  • Topics

×
×
  • Create New...

Important Information

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