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

Clients ignore Packets if there is not at least a tick between them ( 'Invisibile Entities' )

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Awaiting Response
    • None
    • Minecraft 1.8.1, Minecraft 1.8.3, Minecraft 1.8.4
    • None
    • AFAIK this affects all Client-Versions
      (Windows 8, Java(TM) SE Runtime Environment (build 1.7.0_71-b14))
    • Unconfirmed

      The MC-Client will ignore specific packages if there is not a minimum amount of time between them (i suspect a client-side game tick and two packet queues depending on destroy or create events. Rather than using only one queue to keep the packetsequence in order).

      Unfortunately i dont know how to reproduce this problem without altering the server code. In theory it works by:

      Case 1 (Problem occuring) :
      1. Having an entity ( ID = 1)
      2. Sending a destroy-packet ( ID = 1)
      3. Sending a spawn-packet (ID = 1)
      The spawn-packet will be ignored and the client wont track the entity with ID = 1 again.
      (This might happen with network instability or high-pings and routing-changes)

      Case 2 (No Problem occuring)
      This does not happen if:
      1. Having an entity ( ID = 1)
      2. Sending a destroy-packet ( ID = 1)
      3. Wait some milliseconds on the server-process
      3. Sending a spawn-packet (ID = 1)

      Code Example for # Case 1:
      Packet destroy = new PacketPlayOutEntityDestroy(entityId);
      player.sendPacket(destroy);
      Packet packet = new PacketPlayOutSpawnEntityLiving(entityLiving);
      player.sendPacket(packet);

      Code Example for # Case 2:
      Packet destroy = new PacketPlayOutEntityDestroy(entityId);
      player.sendPacket(destroy);
      Thread.sleep(50);
      Packet packet = new PacketPlayOutSpawnEntityLiving(entityLiving);
      player.sendPacket(packet);

      Workaround
      As this problem is dependent on the entity-ID it is possible to trick the client by changing the entity-ID
      1. Having an entity ( ID = 1)
      2. Sending a destroy-packet ( ID = 1)
      3. Change the ID of the entity fom 1 to 2
      4. Sending a spawn-packet (ID = 2)
      This scenario will not present the bug.

      This Bug can result in some common things like:

      • Items that are impossible to pick up
      • Invisible entities/players for some players
      • Visible entities a player is not able to interact with

      This might be considered a duplicate of MC-65040 but as this ticket describes a very specific way to create this condition it may be either another problem or a sub-problem because MC-65040 might be caused by different things.

            Unassigned Unassigned
            Kademlia Kademlia
            Votes:
            10 Vote for this issue
            Watchers:
            11 Start watching this issue

              Created:
              Updated:
              Resolved: