maruohon / litematica

A modern client-side schematic mod for Minecraft
GNU Lesser General Public License v3.0
729 stars 220 forks source link

Minecraft freezes for 10-15 seconds when entering nether with large schematica #893

Open arsn98 opened 1 month ago

arsn98 commented 1 month ago

My friend encountered an issue with Litematica on a large server with 80-120 players. When a player enters the Nether portal, the game freezes for about 10-15 seconds before resuming normal operation. This problem seems to be related to very large schematics, specifically a large item sorter.

Steps to Reproduce:

  1. Load the specific schematic (a very large item sorter) on a large server.
  2. Enter the Nether portal.
  3. Observe the delay and temporary freezing of the game.

Expected Behavior: The game should transition smoothly between worlds without significant delays or freezing.

Actual Behavior: There is a noticeable delay and freezing when entering the Nether, lasting about 10-15 seconds.

Suspected Issue: It appears that Litematica may be trying to perform certain actions related to the schematic when changing worlds, especially given that the Nether and the End are likely hosted on different servers connected by a proxy server. This could be leading to excessive load times. It seems that Litematica repeatedly executes the Vanilla Data Fixer.

Additional Information: Disabling the problematic schematic resolved the issue, suggesting that the schematic's complexity or its specific features contribute to performance issues during world transitions.

Logs/Console Output: [21:43:51] [Render thread/INFO]: LitematicaSchematic: executing Vanilla DataFixer for Tile Entities DataVersion 3465 -> 3955 [21:44:02] [Render thread/INFO]: LitematicaSchematic: executing Vanilla DataFixer for Entities DataVersion 3465 -> 3955 [21:44:02] [Render thread/INFO]: LitematicaSchematic: executing Vanilla DataFixer for Block State Palette DataVersion 3465 -> 3955 [21:44:03] [Render thread/INFO]: LitematicaSchematic: executing Vanilla DataFixer for Tile Entities DataVersion 3465 -> 3955 [21:44:03] [Render thread/INFO]: LitematicaSchematic: executing Vanilla DataFixer for Entities DataVersion 3465 -> 3955 [21:44:03] [Render thread/INFO]: LitematicaSchematic: executing Vanilla DataFixer for Block State Palette DataVersion 3465 -> 3955

Environment:

Note: Unfortunately, I cannot share the schematic as it is a proprietary development by his team.

sakura-ryoko commented 1 month ago

Upgrade the litematic to 1.21 and it won't need to do a taxing Data Fixer pass every time. Use Schematic Manager and click on the file, and use the Import function, and save it as a new file.

This happens due to the heavy hitting Item Componentization Data Fixer which is especially taxing using large litematics with hundreds if not thousands of entries of NBT data, such as items in Hoppers for item sorters.

sakura-ryoko commented 1 month ago

The Code is working as intended; the problem is when you constantly keep loading a very large schematic, requiring the Data Fixer Conversions every single time. Without it, all of the items in your item containers will fail to load properly, and your Hoppers and chests in the litematic will break / lose data, along with all of the other relevant Data Components that are required for the Upgrade.