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

Block entities in spawn chunks are no longer updated upon player disconnecting/changing dimension

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Works As Intended
    • None
    • Minecraft 1.7.9, Minecraft 1.7.10-pre4, Minecraft 14w26b, Minecraft 14w26c, Minecraft 1.7.10, Minecraft 14w27b, Minecraft 14w28b, Minecraft 14w29b, Minecraft 14w30c, Minecraft 14w31a, Minecraft 14w33c, Minecraft 14w34b, Minecraft 1.8-pre1, Minecraft 1.8-pre3, Minecraft 1.8, Minecraft 1.8.1-pre2, Minecraft 1.8.1-pre3, Minecraft 1.8.1-pre4, Minecraft 1.8.1-pre5, Minecraft 1.8.1, Minecraft 1.8.2-pre1, Minecraft 1.8.2-pre4, Minecraft 1.8.7, Minecraft 1.8.8, Minecraft 15w39b, Minecraft 16w41a, Minecraft 16w43a, Minecraft 16w44a, Minecraft 1.11.2, Minecraft 17w06a, 20w07a, 1.16.5
    • Confirmed
    • Entities
    • Important
    • Platform

      First of all, you should be using a dedicated server for one variant of the bug. Probably best to try when no one else is using the server. Read on to find a way to reproduce it in singleplayer.

      Build a basic item transporter mockup within a few chunks of the world spawn (these are the spawn chunks, which generally remain loaded even if no one is there). Build a dropper pointing into a hopper pointing into anything with a decent inventory like another dropper, hopper, chest, etc. Fill the dropper to the brim with stacks of 64 for testing purposes, then hook it up to a clock (a period of about a second works well). Observe how with each tick of the clock, an item is put in the hopper, which will subsequently pass it on.

      Now leave the game. Wait for a few minutes, then rejoin. Inspect the inventory of the hopper that receives items from the dropper. Instead of alternating between being empty and containing a single item, it will be filled with a multitude of items depending on how long you waited. The hopper is active again at that point, working hard to get rid of the items. The redstone clock and dropper continued to function the whole time, whereas the hopper simply stopped a short time after disconnecting.

      If you've emptied the destination inventory immediately before leaving and checked it immediately after returning, you'll find as many items as would transfer in a minute plus a few to account for the time you've wasted, suggesting the hopper cuts out after one minute.

      Going to the Nether (and probably the End as well) for a few minutes has the same effect. This also works using the integrated server (i.e. singleplayer). Moving far away from the spawn but staying in the Overworld, so the setup would be unloaded if it weren't for being in the spawn chunks, doesn't trigger the bug.

      Edit: I read up on spawn chunks. According to the wiki, they do unload one minute after the last player enters another dimension (it says nothing about disconnecting). But that can't be true because the redstone and dropper are still active. It also says something about certain events not being processed in spawn chunks when nobody is in range. Why would hoppers specifically pause when all the other redstone keeps working? Not that I'm all that happy with some of the other things purported to pause, but this is even of the same category as things that don't pause. The wiki claims that hoppers are processed normally, by the way, but what does it know.

      I tested 1.7.9 both ways. I only tested 1.7.10-pre4 and 14w26b (and now the newer versions that I have added) in singleplayer.

      I used two hoppers in the build shown on my screenshots. The hopper pointing down can be anything else. I used a chest when I tested singleplayer. Doesn't really matter, as long as its inventory is large enough not to fill up in an instant. The redstone dust adjacent to the hoppers doesn't affect them. Obviously, if it did, you'd expect problems before and after disconnecting, too! Just to confirm I also built it with a rotated clock so only the dropper has any kind of contact, which didn't change anything.

      Code analysis

      Based on 1.11.2 decompiled using MCP 9.35 rc1

      The method net.minecraft.world.WorldServer.updateEntities() stops updating entities and tile entities (even in spawn chunks) once no player has been in the world (or rather the dimension) for 15 seconds.

            Unassigned Unassigned
            jonathan2520 jonathan2520
            Votes:
            24 Vote for this issue
            Watchers:
            15 Start watching this issue

              Created:
              Updated:
              Resolved:
              CHK: