Shadows-of-Fire / Placebo

A library mod
MIT License
23 stars 22 forks source link

[1.16.1] Mod removal prevents certain shapeless recipes from working on a world-by-world basis #16

Closed NoahJGersh closed 4 years ago

NoahJGersh commented 4 years ago

This is a bit of a weird one, and is best demonstrated by example with Industrial Foregoing's dry rubber recipe. By default, the recipe works fine. You can take 9 tiny dry rubber and get 1 dry rubber, which you then use to make plastic. Adding FastWorkbench and Placebo, specifically, still works. However, adding BiomesOPlenty on top stops the dry rubber recipe from working, though it still shows up in the JEI.

I've tested 4 cases:

I used JEI in all 4 cases to confirm the recipe is somehow still registered (at least to it), but removing JEI doesn't change the behavior in each case. It's important to note that BOP nor Placebo are causing the issue, except when they're installed together.

This case persists even when using other workbenches, such as the Immersive Engineering treated workbench, or even the Refined Storage crafting patterns. This is all using the latest versions of the respective mods, and Forge 32.0.75. I've heard from others that recipes from Potions Master things also don't work, and that the OpenBlocks Elevator recoloring recipes create blue cheese from Rats (when installed), so I'll update the issue after checking forge versions and confirming these recipes as well.

Logs don't seem problematic. Here's the log for the server I've been using for testing, Placebo doesn't note any recipe issues: https://pastebin.com/cRYvbi2F

Also see https://github.com/InnovativeOnlineIndustries/Industrial-Foregoing/issues/807 where this issue was first reported.

Please let me know if this issue should be in the FastWorkbench repo instead, it's here because it seems to be a problem with the fast recipe registration.

Shadows-of-Fire commented 4 years ago

I assume that's the latest.log and not the debug.log? The debug.log might hold some actual information, but yeah, that's... interesting, to say the least.

NoahJGersh commented 4 years ago

that's the latest.log yeah, I'll check the debug.log

But wait, there's more! I installed Potions Master to check those recipes, and it fixed the dry rubber recipe. Upon disabling Potions Master again, the dry rubber recipe still worked.

Shadows-of-Fire commented 4 years ago

God I hope this doesn't have anything to do with #13

NoahJGersh commented 4 years ago

alright, quick update. I ran client only and the recipe doesn't work. Modlist is the same on my client and server instance. Which means that the sequence of events was

  1. Recipe doesn't work in case 4
  2. Potions master added
  3. Recipe works on server
  4. Recipe fails on client
  5. Potions master removed
  6. Recipe still works on server
  7. Recipe still fails on client

Client does not get fixed, but somehow the server does.

NoahJGersh commented 4 years ago

This might shed some light on it: It succeeds or fails on a world-by-world basis. I set up two worlds, one of which I actually used while Potions Master was installed, the other of which was only used without Potions Master installed.

The world untouched by Potions Master just works. The world that had Potions Master just doesn't. I think it might be how the recipes are being cached when mods are removed? I'm uploading a video now to demonstrate the issue. I also can't get forge to give me a debug.log on my client, only on my server instance, so I'll try to break the server again and get a debug.log file that can actually help.

NoahJGersh commented 4 years ago

Video demonstrating the issue: https://youtu.be/nvK-9TXD4H0

Shadows-of-Fire commented 4 years ago

I guess uh, important question, does the recipe still break without FB? If the Placebo recipe changes are in fact causing the issue, then it should happen without FB present.

Problem is what is actually going on. The placebo recipe changes cause shapeless recipes without nbt-checking to use the int ids (which are quicker in list operations) for a performance gain. The ID's should never cause such an issue, but debugging this is incredibly difficult.

NoahJGersh commented 4 years ago

Just tested without FB. Same issues, so it sounds like a Placebo thing for sure. Using the ID's instead of NBT data would make sense as a cause though. How do the int ids change when mods are removed?

Shadows-of-Fire commented 4 years ago

they don't

NoahJGersh commented 4 years ago

Well that's certainly interesting. At least we know it's actually Placebo, and it happens when the world itself experiences mod loss. Other than that, no idea on my end.

Hotwire75 commented 4 years ago

Possibly related, I have a world that a while after I did quite a few updates to mods, I noticed I was no longer able to craft together uraninite from Powah. Created new world, it worked there. Saw this issue, installed Industrial Foregoing, with the new world tiny dry rubber worked, old world it didn't.

Removed Placebo & related (FastWorkBench, FastFurnaces, EnderBags), no change.

Just created a local server with the old singleplayer world (with Placebo & etc), everything worked. Went back into singleplayer... Tiny dry rubber & uraninite both worked in both worlds. Even after a restart.

I'm /so/ confused right now. lol

NickPancakes commented 4 years ago

@Shadows-of-Fire Any reason you can think of that a saved world would still be plagued by shapeless recipe issues even after updating to 4.0.2?

I can't say for sure it's Placebo related, but I'm unable to construct a handful of shapeless recipes on my server's current world. For example: mekanism's osmium block to osmium ingots, bronze ingots to nuggets, and the sign recipes in engineers-decor I linked to this issue yesterday.

Interestingly, these recipes all work just fine if I generate a new world on the same server setup, with all the same mods. I even went as far as deleting as much as I could reasonably think to delete from the problematic world folder (advancements, data, playerdata, serverconfig folders), and letting those regenerate on server start, with no affect on the problem.

Nothing of interest appears to show up in either the server or client logs. If there's anything you can think of that might help here, I'd highly appreciate it. I've attached the current mod list, if that's any help.

mods.txt

Shadows-of-Fire commented 4 years ago

I've got no idea, I moved the id caching to the first world tick, which should be far beyond the point of ids being generated, and I had a couple people test that 402 resolved this issue, but its possible placebo is still breaking them.

Shadows-of-Fire commented 4 years ago

FSR's are gone, since 1.16's changes do not really provide any way for me to play nice with the caching of the int id's for this purpose.