Suggestion: Uncrafting Table Blacklist
esotericist opened this issue ยท 16 comments
In the modpack for the server I administrate, we currently have one (1) item that is problematic for uncrafting. If the uncrafting table had a blacklist, I could add it to that, instead of needing to disable the uncrafting table entirely.
This has been implemented into the base mod through a few different methods:
you can prevent certain items from being uncrafted by adding items to the banned_uncraftables tag.
you can prevent certain ingredients from appearing while uncrafting by adding items to the banned_uncrafting_ingredients tag.
you can disable recipe strings through a config option. (disableUncraftingRecipes in twilightforest-common.toml)
you can disable all recipes from a certain mod through a config option. (blacklistedUncraftingModIds in twilightforest-common.toml) This list can be flipped to function as a whitelist instead through another config option. (flipIdList in twilightforest-common.toml)
Disabling uncrafting as a whole is still an option, although it really shouldnt be necessary at this point.
Also worth noting this is available for 1.17+. There will NOT be a backport as we don't do that
I think adding a uncrafting blacklist or a craftweaker support question to remove, add or change somes Uncrafting recipes should be really nice, to avoid somes Dupe Bug possible with crafting recipes and somes machines, in somes modpack...
First example I saw a big number of case where uncrafting can be an issue in a pack if not controlled right...
Example: In SevTech or probably lot other modpack with immersive enginnering, you can craft with 2 Ingots + the Hammer a plate or do the same plate with 1 ingot in a machine... So, You make a lot of plate in machines and after you uncraft to double all the ingots... This is an example, but there have soo mutch more...
Ok, the dupe cost XP, but XP Farm is really easy to make in Minecraft...
With Reliquary installed, you can get a nearly fully charged Tome of Alkahestry back by putting two iron ingots in the uncrafting table at the cost of 2 levels of XP. It would be incredibly useful to blacklist the Tome of Alkahestry as well.
Edit: a single piece of redstone can return a nearly-fully-charged tome of Alkahestry (I think it is 999 charges out of 1000) for 1 level in the uncrafting table, which can be then used to create 999 more redstone or to duplicate any material that the tome supports.
It's the Random Things Slime Cube, which turns up as loot in "simple dungeon" chests, but has a nether star in its crafting recipe.
Gonna bump this, I just created a new issue about a dupe bug I discovered using the uncrafting table and evilcraft #615 (If you are interested)
I can say there's a workaround, but it also presents a problem of its own:
Using CraftTweaker, remove the Slime Cube's crafting recipe, and then add it back again.
Removing the original recipe causes the uncrafting table to stop providing the associated uncrafting recipe, but adding the recipe back again doesn't register the "new" recipe with the uncrafting table (in my experience).
(So, the problem that this workaround presents is that registering a recipe with CraftTweaker results in a crafting recipe that can't be undone.)
That said, a blacklist does seem like a good idea, and probably a relatively-easy thing to implement. I'm for it.
What would be nice if the underlying problems with the uncrafting table were dealt with so that a blacklist wasn't necessary.
-items that are not used up in the crafting recipe should not be eligible for uncrafting. You just shouldn't get them back to begin with.
-same for items that are damaged or otherwise transformed but otherwise not used up.
Short of that, a blacklist has been clamored for for ages and people are always pointed to "just disable the uncrafting table" each time it's suggested. It's an absurd deflection.
-items that are not used up in the crafting recipe should not be eligible for uncrafting. You just shouldn't get them back to begin with.
As a general note, most recipes that don't consume items (barring vanilla buckets and perhaps water bottles) are custom IRecipes that don't actually have a generalised way of determining if an item is returned or not. I imagine it would have to be done on a mod-by-mod basis.
I will give it it's due though. Immersive Engineering's grit recipes do in fact recognize the hammer shouldn't come with the uncrafting into ore. And one recipe that looks like it's broken on my modpack is really just because I'm working around MrCrayFish weird behavior that was causing duping on servers but not on clients. It's situations like these that a blacklist would be nice, or a way to specify that something in the recipe shouldn't be returned. (or in the case of soapy water, the bucket should be returned)
What would be nice if the underlying problems with the uncrafting table were dealt with so that a blacklist wasn't necessary.
The solutions you've described here are already part of the uncrafting table. If an item has a "container item", you can't get the container item from uncrafting a thing that requires it. Likewise, if an item is damaged, you won't get back all of the items used in making it when you uncraft. (A diamond pickaxe with 1 damage uncrafts to only give you 2 diamonds, after all,) If an item has been transformed away from its state on crafting (unless the transformation is done via NBT, which is reminding me of certain reasons that I freaking hate mekansim), you outright can't uncraft it.
None of this actually addresses the original issue: sometimes the recipe itself is just unbalanced. Back in 1.7.10, I loved to collect the Observations of an Immortal from Witchery and uncraft it to get a nether star, but I get how some people might not like that... especially if they're really trying to balance out a modpack.
Your comment basically said "if you just do this, no one will even want a blacklist." It's already being done, and people still want a blacklist.
Honestly, my original issue is how a blacklist has been asked for for years and we've been told by the mod maintainer to just turn it off. I was straight up unaware how much progress was made to fixing recipes until I started poking around with my current modpack.
Well, it's either that there's been progress made in general, or it's been on a specialized case by case basis. MrCrayfish's Furniture Mod, even with the axe duplication issue resolved server side, still has a recipe where the tool is damaged and returns logs, but UNcrafting the logs results in being able to reclaim an axe.
I don't get it. Why is something that can utterly destroy progression put on the back burner? It's been requested for years, almost as long as this mod has existed for.
Do it yourself instead of just saying in a glorified way of "these devs are slow" Pull Requests are welcome.
For 1.12 users use: https://www.curseforge.com/minecraft/mc-mods/uncrafting-blacklist/
This issue is to remain open until added into the base mod in whatever the current branch is at the time. (I cant stress enough how the actual porting of the mod and priority issues/bugs/whatever are to receive our full attention first and foremost.)