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

Player-in-block checking happens after block collision events are done

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Open
    • Resolution: Unresolved
    • Affects Version/s: Minecraft 1.12.2, Minecraft 17w50a, Minecraft 18w22c, Minecraft 1.13-pre1, Minecraft 1.13-pre2, Minecraft 1.13-pre3, Minecraft 1.13-pre4, Minecraft 1.13-pre5, Minecraft 1.13-pre6, Minecraft 1.13-pre8, Minecraft 1.13, Minecraft 18w30b, Minecraft 18w32a, Minecraft 1.13.1-pre1, Minecraft 1.13.1-pre2, Minecraft 1.13.1, Minecraft 1.13.2, Minecraft 18w48a, Minecraft 18w48b, Minecraft 18w49a, Minecraft 18w50a, Minecraft 1.14 Pre-Release 2, Minecraft 1.14 Pre-Release 3, Minecraft 1.14.4 Pre-Release 2
    • Fix Version/s: None
    • Confirmation Status:
      Confirmed
    • Category:
      (Unassigned)

      Description

      The bug

      The NetHandlerPlayServer.processPlayer (MCP name) function checks if the player's bounding box is intersecting any blocks, and if it is, reverts the player's position to the old one.

      However, this check is done even if the player has been teleported by a portal block such as the end portal, which can lead to the following problem:

      1. A player somehow sends a move packet that places them halfway between an end portal block and an end portal frame block
      2. Even though the move is illegal, the end portal's collision function gets called and the player is teleported into the end (Bug 1)
      3. The collision checks whether the player's move was invalid and reverts the player's position, but not dimension change (Bug 2)
      4. The player is dropped into the end at their previous position, likely causing them to fall into the void and die

      Doing this check before block collision functions are called (or at least also cancelling the dimension change) would solve the problem.

      How to reproduce

      1. Use the following commands to make you intersect with a block and stand in front of an end portal
        /setblock ~2 ~ ~ end_portal
        /setblock ~1 ~ ~1 glass
        /execute align xz run teleport @s ~1.7 ~ ~0.75 -60 0
        
      2. Walk forward
        You enter the end but at your original position instead of on the platform

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                runemoro Runemoro
              • Votes:
                7 Vote for this issue
                Watchers:
                9 Start watching this issue

                Dates

                • Created:
                  Updated:
                  CHK: