Uploaded image for project: 'Minecraft: Java Edition'
  1. Minecraft: Java Edition
  2. MC-258971

ClientboundUpdateRecipesPacket breaks after multiple recipes use big tags

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • None
    • 1.19.3, 23w03a, 1.19.4, 1.20.1, 1.20.4
    • None
    • Java: OpenJDK 64-Bit Server VM Temurin-17.0.1+12
      OS: Windows
    • Plausible
    • Crash, Data Packs, Networking
    • Normal
    • Platform

      When a datapack or server creates a tag that is big and uses those in multiple recipes when they are sent to the client they are sent as a list of items instead of a tag reference and therefore send multiple lists per recipe and eventually stop the players from being able to join after enough recipes use big tags.

      This can be fixed by not sending tag ingredients as a list but instead a reference to the tag, this would require the order of the packets to be changed as of right now tags are sent after recipes when a player joins but sent before recipes when /reload is initiated, it would require both join and reload to be tags sent then recipes.

      Here is a node js script that can generate the datapack that will cause the packet to break:
      https://gist.github.com/ThatGravyBoat/31838ed279e92a3a254af9a1089011f4
      If required I can also provide a datapack.zip version too of what the script above generates.

      It breaks after it generates 203 recipes with the giant tag that is without vanilla datapack enabled and with vanilla datapack enabled 140 is all that is required.

      This will start to become more of an issue in vanilla as vanilla is using more and more tags per update.

            Unassigned Unassigned
            TheGravyBoat ThatGravyBoat
            Votes:
            6 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              CHK: