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

Spider and chicken jockeys only spawn the additional mob

    Details

    • Type: Bug
    • Status: Resolved
    • Resolution: Fixed
    • Affects Version/s: Minecraft 1.9.4, Minecraft 1.10, Minecraft 1.10.2, Minecraft 16w38a, Minecraft 16w41a, Minecraft 16w43a, Minecraft 1.11 Pre-Release 1, Minecraft 1.11, Minecraft 1.11.1, Minecraft 1.11.2, Minecraft 17w06a, Minecraft 17w14a, Minecraft 17w17b, Minecraft 1.12 Pre-Release 3, Minecraft 1.12 Pre-Release 6, Minecraft 1.12, Minecraft 1.12.1 Pre-Release 1, Minecraft 1.12.1, Minecraft 1.12.2, Minecraft 17w47b, Minecraft 17w48a, Minecraft 18w03b, Minecraft 18w05a, Minecraft 18w16a, Minecraft 18w19b, Minecraft 1.13-pre2
    • Fix Version/s: Minecraft 1.13-pre5
    • Confirmation Status:
      Confirmed

      Description

      The bug

      Spider and chicken jockeys only spawn the additional mob. This means spider jockeys will only spawn the skeleton and chicken jockeys only the chicken respectively set the IsChickenJockey tag of a nearby chicken to true without a zombie spawning on it.

      How to reproduce

      1. Create a Superflat world with the following preset to only allow spiders to spawn
        3;minecraft:stone,minecraft:air,minecraft:glass;1;
        
      2. Set the time to night
      3. Use the following command to get to a nearby skeleton spawned as a spider jockey
        /tp @p @e[type=skeleton,c=1]
        

        → You will see that the skeleton is not riding a spider

      Code analysis

      Based on 1.11.2 decompiled using MCP 9.35 rc1

      It looks like the method net.minecraft.world.World.checkNoEntityCollision(AxisAlignedBB, Entity) is not working correctly and counts entities riding the same entity as colliding while it should ignore them. See also net.minecraft.world.World.getCollisionBoxes(Entity, AxisAlignedBB).

      /**
       * Returns true if there are no solid, live entities in the specified AxisAlignedBB, excluding the given entity
       */
      public boolean checkNoEntityCollision(AxisAlignedBB bb, @Nullable Entity entityIn)
      {
          List<Entity> list = this.getEntitiesWithinAABBExcludingEntity((Entity)null, bb);
      
          for (int i = 0; i < list.size(); ++i)
          {
              Entity entity = (Entity)list.get(i);
      
              // Replaced this
              // if (!entity.isDead && entity.preventEntitySpawning && entity != entityIn && (entityIn == null || entity.isRidingSameEntity(entityIn)))
              if (!entity.isDead && entity.preventEntitySpawning && entity != entityIn && (entityIn == null || !entity.isRidingSameEntity(entityIn)))
              {
                  return false;
              }
          }
      
          return true;
      }
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                cojomax99 [Mojang] Cory Scheviak
                Reporter:
                Rays Ray
              • Votes:
                140 Vote for this issue
                Watchers:
                52 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  CHK: