Tesseract

Tesseract

16M Downloads

[Crash] Oritech Fluid Pipe inserting into a Tesseract causes a Save Bricking Crash

thebloxxer11 opened this issue ยท 2 comments

commented

Version Info

  • Minecraft, 1.21.1
  • Tesseract, 1.0.35+a
    Other Mods:
  • Oritech, 0.12.3
  • Forgified Fabric API (Dependency of Oritech), 0.107.0+2.0.22+1.21.1

Loader: Neoforge 21.1.89

Steps to Reproduce

Materials:
A new save (to protect existing saves), An Oritech Pump, A generator of some kind (like a lava generator), some kind of structural block (cobblestone works fine), a Tesseract from another mod listed below, and at least 2 Fluid pipes

  1. In a new save, make a nether portal and cross it.
  2. Navigate to a Lava Ocean, if not already over one.
  3. Use the structural blocks to bridge out over the ocean and make a platform
  4. Make a hole in the platform, ensuring it is over the lava.
  5. Place the pump over the hole.
  6. Place the generator adjacent to the pump.
  7. Place the pipes connecting the pump, generator, and Tesseract.
  8. Set the pipe connected to the pump to Extract.
  9. Fuel the generator.
  10. It should crash, and continue crashing on loading of the save.

Crash report (~/logs/latest.log)
crash-2024-12-23_09.42.07-server.txt

Notes:
This is EXCLUSIVE to the NeoForge branch. I tested it on Fabric and it works fine there.

Since this is a mod interoperability issue, see Rearth/Oritech#217 for the Oritech side. Rearth, the dev of Oritech, said he is near certain it isn't on their side.

commented

This seems to be caused by the combination of Fabric's transfer API through Forgified Fabric API with the NeoForge item handler API.

What happens in the crash:

  • A pipe from Oritech opens an outer transaction ticket and inserts into the tesseract with the ticket through Forgified Fabric API.
  • Forgified Fabric API converts the insertion into a call to NeoForge's item handler API. The ticket context is lost here as that is part of Fabric's API.
  • The tesseract inserts into some block which also uses Forgified Fabric API next to another tesseract on the same channel.
  • Forgified Fabric API converts the insertion into a call to Fabric's transfer API. As Fabric's transfer API requires a ticket and the NeoForge insertion call obviously provides none, Forgified Fabric API opens a new outer ticket.
  • Since there is already an open ticket on the thread, this now causes a crash.

There is nothing I can do about this as I am just using NeoForge's API. The problem comes from Forgified Fabric API converting between the two APIs.
This is something that would have to be worked around somehow in Forgified Fabric API. I would suggest reporting the issue to them.