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

Moving blocks do not tick past the world border, causing them to stay offset when pushed by a piston


    • Icon: Bug Bug
    • Resolution: Unresolved
    • None
    • Minecraft 1.8.7, Minecraft 15w47c, Minecraft 15w51b, Minecraft 1.9, Minecraft 1.9.2, Minecraft 16w15b, Minecraft 1.10.2, Minecraft 16w42a, Minecraft 16w43a, Minecraft 16w44a, Minecraft 1.11, Minecraft 1.12.1, Minecraft 1.12.2, Minecraft 1.13, Minecraft 18w30b, Minecraft 1.13.1, Minecraft 1.13.2-pre2, Minecraft 1.13.2, Minecraft 18w48a, Minecraft 18w48b, Minecraft 19w08b, Minecraft 19w09a, Minecraft 19w12b, Minecraft 19w13b, Minecraft 19w14a, Minecraft 19w14b, Minecraft 1.14 Pre-Release 2, Minecraft 1.14 Pre-Release 3, Minecraft 1.14 Pre-Release 4, Minecraft 1.14 Pre-Release 5, 1.14.4, 1.15.2, 20w18a, 1.16.1, 20w28a, 20w30a, 1.16.2 Pre-release 1, 1.16.2 Release Candidate 1, 1.16.2 Release Candidate 2, 1.16.2, 1.16.3 Release Candidate 1, 1.16.3, 1.16.4 Pre-release 1, 1.16.4 Pre-release 2, 1.16.4 Release Candidate 1, 1.16.4, 20w46a, 20w48a, 20w51a, 21w03a, 1.16.5, 21w05a, 21w05b, 21w06a, 21w07a, 21w08b, 21w11a, 1.17 Pre-release 2, 1.17, 1.17.1, 21w37a, 21w43a, 1.20.2, 1.20.3 Pre-Release 2, 1.20.4, 24w12a, 24w18a, 1.20.6
    • Confirmed
    • Block states, Rendering
    • Low
    • Platform

      The bug

      Moving_Block do not tick past the worldborder causing them to stay offset / create a ghost block when pushed by a piston.

      This seems like a regression of MC-54366

      Pistons still try to push blocks through the worldborder, however they stay at the position they were as some kind of "ghost" blocks (very likely the piston_extension block, which the client still renders, however it doesn't exist anymore, /testforblock returns air). After reloading this area they are gone.

      Code analysis

      Based on 1.11 decompiled using MCP 9.35 rc1

      The method net.minecraft.block.BlockPistonBase.canPush(IBlockState, World, BlockPos, EnumFacing, boolean) only tests if the position of the block to move is inside the worldborder, but not if the new position is inside it as well.

      The reason why the piston_extension tile entity is not removed is because the method net.minecraft.world.World.updateEntities() removes only invalid tile entities inside the worldborder.

            Unassigned Unassigned
            marcono1234 Marcono1234
            28 Vote for this issue
            22 Start watching this issue