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

Player teleporting to unloaded chunks causing current chunks to be unloaded is removed from loaded entities list and not tracked by EntityTracker anymore resulting in client side desync

    Details

    • Type: Bug
    • Status: Reopened
    • Resolution: Unresolved
    • Affects Version/s: Minecraft 15w47a, Minecraft 15w47c, Minecraft 15w49a, Minecraft 1.9, Minecraft 1.9.1 Pre-Release 1, Minecraft 1.9.1 Pre-Release 2, Minecraft 1.9.1 Pre-Release 3, Minecraft 1.9.1, Minecraft 1.9.2, Minecraft 16w14a, Minecraft 16w15a, Minecraft 16w15b, Minecraft 1.9.3 Pre-Release 1, Minecraft 1.9.3 Pre-Release 3, Minecraft 1.9.4, Minecraft 16w20a, Minecraft 1.10 Pre-Release 2, Minecraft 1.10, Minecraft 1.10.2, Minecraft 16w36a, Minecraft 16w39b, Minecraft 16w39c, Minecraft 16w41a, Minecraft 16w42a, Minecraft 16w43a, Minecraft 1.11 Pre-Release 1, Minecraft 1.11.1, Minecraft 1.11.2, Minecraft 17w06a, Minecraft 17w14a, Minecraft 17w17b, Minecraft 17w18a, Minecraft 17w18b, Minecraft 1.12 Pre-Release 5, Minecraft 1.12 Pre-Release 7, Minecraft 1.12, Minecraft 1.12.1 Pre-Release 1
    • Confirmation Status:
      Confirmed

      Description

      The bug

      Players are removed from the list of loaded entities and the EntityTracker stops tracking them when they teleport out of non-spawn chunks which are not loaded afterwards anymore into currently unloaded chunks. This causes all kind of desynchronizations for the client and results in the @e selector not finding the player anymore (@a, @r and @p still do).

      Desynchronization examples

      • For any level of speed/slowness, it doesn't increase/decrease your walking speed, nor FOV and if you had speed or slowness before the glitch happens the speed/slowness will also stay after you clear it. (It won't show any particles or a tab in the GUI saying that you have the effect but your FOV is still increased/decreased and you still walk faster/slower)
      • Invisibility doesn't work.
      • Switching to spectator mode makes your head completely nontransparent (MC-93377) and when switching from spectator to another makes you invisible. (MC-92324)
      • You don't take knockback from any damage. (MC-98210)
      • You can't hear any damage sounds.
      • Elytras won't work (MC-89994) which might be the cause of MC-90035.
      • Targeting with @e and @r[type=player] becomes unreliable. (MC-100369)
      • If you have some armor equipped, then teleport, changing the armor values (changing, adding, removing) makes your armor points stay the same.
      • Players will be invisible. (MC-91236)
      • Potion effects are displayed incorrectly, went through a teleporter after getting absorption, and even after the absorption wore off minutes later, the particle effects from it were there.
      • Health is displayed incorrectly, health-boost/absorption before teleporting, and extra hearts did not show after teleporting.
      • Attack Indicator displays wrong animation (MC-97169)

      List by Spake Miner

      Steps to reproduce

      The main steps are always

      1. Use setup steps provided for the specific reproduction case
      2. Teleport away from any chunks which remain loaded after you teleport, example: spawn chunks, chunks with other player, chunks with hoppers...
        /tp ~ ~ ~100000
        
      3. Teleport away from these chunks making sure they get unloaded once you teleported
        /tp ~ ~ ~100000
        
      4. Use reproduction steps provided for the specific reproduction case

      Potion effects modifiers are not updated for client

      Reproduction steps
      1. Give yourself speed or slowness which both modify the movement speed
        /effect @p speed 10000 10 true
        
      2. Walk around
        → You will notice that you walk with normal movement speed

      Potion effect particles are not updated

      Setup steps
      1. Give yourself for example night vision
        /effect @p night_vision 1000 1
        
      Reproduction steps
      1. Clear the potion effects
        /effect @p clear
        

        → You will notice that the particles remain

      Actions modifying flags value

      The FLAGS data parameter stores the state for some entity states:

      • burning
      • sneaking
      • sprinting
      • invisible
      • glowing
      • elytra flying

      Data parameters are managed by the EntityTracker and therefor the player will not receive the change. The highlighted states cause client side problems. "Invisible" includes switching from Spectator mode to Creative mode.

      Setup steps

      Switch to Spectator mode or give yourself the invisibility effect

      /gamemode sp
      
      Reproduction steps
      • Switch back to a different game mode
      • Stand in fire
      • Use the glowing effect
        /effect @p glowing 1000 1 true
        
      • Use the invisibility effect
        /effect @p invisibility 1000 1 true
        
      • Try using the elytra

      Entity selector not finding player anymore

      Reproduction steps

      Use the following command

      /say @e
      

      Code analysis

      Based on 1.11.2 decompiled using MCP 9.35 rc1

      The problem is that the method net.minecraft.world.World.updateEntityWithOptionalForce(Entity, boolean) only updates the chunk an entity is in if the area around the entity is loaded, which causes other bugs like MC-81536 and might not be a good design as seen in MC-108469.
      When the server then receives a CPacketPlayer packet before the area around the player is loaded correcting the chunk the player is in, the chunks were the player was before are unloaded. This makes the server then later remove the player from the list of loaded entities (Side note: but not loaded players) and causes the EntityTracker to stop tracking the player which means no data parameter changes are send to the player anymore.

      Removing the condition for the area to be loaded could nearly completely solve this problem. It would however not solve the problem where entities teleported in unloaded chunks get lost.

      The reason why it only "nearly completely" solves this is because it might still be possible that this happens when the CPacketPlayer packet is received and processed before the player is updated, which might be possible because packets are processed before players are updated.

        Attachments

        1. 2015-11-26_17.35.53.png
          2015-11-26_17.35.53.png
          421 kB
        2. 2015-11-26_17.35.55.png
          2015-11-26_17.35.55.png
          419 kB
        3. 2015-11-30_16.49.28.png
          2015-11-30_16.49.28.png
          1.29 MB
        4. 2015-12-18_19.42.05.png
          2015-12-18_19.42.05.png
          766 kB
        5. 2016-03-03_18.39.50.png
          2016-03-03_18.39.50.png
          644 kB
        6. 2016-03-03_18.41.23.png
          2016-03-03_18.41.23.png
          292 kB
        7. 2016-03-03_18.41.27.png
          2016-03-03_18.41.27.png
          235 kB
        8. 2016-03-03_18.41.31.png
          2016-03-03_18.41.31.png
          152 kB
        9. bug.png
          bug.png
          1.09 MB
        10. client log.log
          4 kB
        11. crash-2015-11-12_17.10.24-client.txt
          14 kB
        12. crash-2015-11-27_16.58.42-client.txt
          7 kB
        13. crash report.txt
          11 kB
        14. crash report (Marcono1234).txt
          3 kB
        15. server log.log
          33 kB

          Issue Links

            Activity

              People

              • Assignee:
                dinnerbone [Mojang] Dinnerbone (Nathan Adams)
                Reporter:
                FVbico [Mod] FVbico (Steven Verberne)
              • Votes:
                83 Vote for this issue
                Watchers:
                58 Start watching this issue

                Dates

                • Created:
                  Updated:
                  CHK: