public void receive(Entity entity, int i) {
    if (!entity.dead && !this.world.isStatic) {
      EntityTracker entitytracker = ((WorldServer) this.world).getTracker();

      if (entity instanceof EntityItem) {
        entitytracker.a(entity, (Packet) (new PacketPlayOutCollect(entity.getId(), this.getId())));
      }

      if (entity instanceof EntityArrow) {
        entitytracker.a(entity, (Packet) (new PacketPlayOutCollect(entity.getId(), this.getId())));
      }

      if (entity instanceof EntityExperienceOrb) {
        entitytracker.a(entity, (Packet) (new PacketPlayOutCollect(entity.getId(), this.getId())));
      }
    }
  }
  private Packet<?> e() {
    if (this.tracker.dead) {
      // CraftBukkit start - Remove useless error spam, just return
      // EntityTrackerEntry.d.warn("Fetching addPacket for removed entity");
      return null;
      // CraftBukkit end
    }

    if (this.tracker instanceof EntityPlayer) {
      return new PacketPlayOutNamedEntitySpawn((EntityHuman) this.tracker);
    } else if (this.tracker instanceof IAnimal) {
      this.headYaw = MathHelper.d(this.tracker.getHeadRotation() * 256.0F / 360.0F);
      return new PacketPlayOutSpawnEntityLiving((EntityLiving) this.tracker);
    } else if (this.tracker instanceof EntityPainting) {
      return new PacketPlayOutSpawnEntityPainting((EntityPainting) this.tracker);
    } else if (this.tracker instanceof EntityItem) {
      return new PacketPlayOutSpawnEntity(this.tracker, 2, 1);
    } else if (this.tracker instanceof EntityMinecartAbstract) {
      EntityMinecartAbstract entityminecartabstract = (EntityMinecartAbstract) this.tracker;

      return new PacketPlayOutSpawnEntity(this.tracker, 10, entityminecartabstract.v().a());
    } else if (this.tracker instanceof EntityBoat) {
      return new PacketPlayOutSpawnEntity(this.tracker, 1);
    } else if (this.tracker instanceof EntityExperienceOrb) {
      return new PacketPlayOutSpawnEntityExperienceOrb((EntityExperienceOrb) this.tracker);
    } else if (this.tracker instanceof EntityFishingHook) {
      EntityHuman entityhuman = ((EntityFishingHook) this.tracker).l();

      return new PacketPlayOutSpawnEntity(
          this.tracker, 90, entityhuman == null ? this.tracker.getId() : entityhuman.getId());
    } else {
      Entity entity;

      if (this.tracker instanceof EntitySpectralArrow) {
        entity = ((EntitySpectralArrow) this.tracker).shooter;
        return new PacketPlayOutSpawnEntity(
            this.tracker, 91, 1 + (entity == null ? this.tracker.getId() : entity.getId()));
      } else if (this.tracker instanceof EntityTippedArrow) {
        entity = ((EntityArrow) this.tracker).shooter;
        return new PacketPlayOutSpawnEntity(
            this.tracker, 60, 1 + (entity == null ? this.tracker.getId() : entity.getId()));
      } else if (this.tracker instanceof EntitySnowball) {
        return new PacketPlayOutSpawnEntity(this.tracker, 61);
      } else if (this.tracker instanceof EntityLlamaSpit) {
        return new PacketPlayOutSpawnEntity(this.tracker, 68);
      } else if (this.tracker instanceof EntityPotion) {
        return new PacketPlayOutSpawnEntity(this.tracker, 73);
      } else if (this.tracker instanceof EntityThrownExpBottle) {
        return new PacketPlayOutSpawnEntity(this.tracker, 75);
      } else if (this.tracker instanceof EntityEnderPearl) {
        return new PacketPlayOutSpawnEntity(this.tracker, 65);
      } else if (this.tracker instanceof EntityEnderSignal) {
        return new PacketPlayOutSpawnEntity(this.tracker, 72);
      } else if (this.tracker instanceof EntityFireworks) {
        return new PacketPlayOutSpawnEntity(this.tracker, 76);
      } else if (this.tracker instanceof EntityFireball) {
        EntityFireball entityfireball = (EntityFireball) this.tracker;
        PacketPlayOutSpawnEntity packetplayoutspawnentity = null;
        byte b0 = 63;

        if (this.tracker instanceof EntitySmallFireball) {
          b0 = 64;
        } else if (this.tracker instanceof EntityDragonFireball) {
          b0 = 93;
        } else if (this.tracker instanceof EntityWitherSkull) {
          b0 = 66;
        }

        if (entityfireball.shooter != null) {
          packetplayoutspawnentity =
              new PacketPlayOutSpawnEntity(
                  this.tracker, b0, ((EntityFireball) this.tracker).shooter.getId());
        } else {
          packetplayoutspawnentity = new PacketPlayOutSpawnEntity(this.tracker, b0, 0);
        }

        packetplayoutspawnentity.a((int) (entityfireball.dirX * 8000.0D));
        packetplayoutspawnentity.b((int) (entityfireball.dirY * 8000.0D));
        packetplayoutspawnentity.c((int) (entityfireball.dirZ * 8000.0D));
        return packetplayoutspawnentity;
      } else if (this.tracker instanceof EntityShulkerBullet) {
        PacketPlayOutSpawnEntity packetplayoutspawnentity1 =
            new PacketPlayOutSpawnEntity(this.tracker, 67, 0);

        packetplayoutspawnentity1.a((int) (this.tracker.motX * 8000.0D));
        packetplayoutspawnentity1.b((int) (this.tracker.motY * 8000.0D));
        packetplayoutspawnentity1.c((int) (this.tracker.motZ * 8000.0D));
        return packetplayoutspawnentity1;
      } else if (this.tracker instanceof EntityEgg) {
        return new PacketPlayOutSpawnEntity(this.tracker, 62);
      } else if (this.tracker instanceof EntityEvokerFangs) {
        return new PacketPlayOutSpawnEntity(this.tracker, 79);
      } else if (this.tracker instanceof EntityTNTPrimed) {
        return new PacketPlayOutSpawnEntity(this.tracker, 50);
      } else if (this.tracker instanceof EntityEnderCrystal) {
        return new PacketPlayOutSpawnEntity(this.tracker, 51);
      } else if (this.tracker instanceof EntityFallingBlock) {
        EntityFallingBlock entityfallingblock = (EntityFallingBlock) this.tracker;

        return new PacketPlayOutSpawnEntity(
            this.tracker, 70, Block.getCombinedId(entityfallingblock.getBlock()));
      } else if (this.tracker instanceof EntityArmorStand) {
        return new PacketPlayOutSpawnEntity(this.tracker, 78);
      } else if (this.tracker instanceof EntityItemFrame) {
        EntityItemFrame entityitemframe = (EntityItemFrame) this.tracker;

        return new PacketPlayOutSpawnEntity(
            this.tracker,
            71,
            entityitemframe.direction.get2DRotationValue(),
            entityitemframe.getBlockPosition());
      } else if (this.tracker instanceof EntityLeash) {
        EntityLeash entityleash = (EntityLeash) this.tracker;

        return new PacketPlayOutSpawnEntity(this.tracker, 77, 0, entityleash.getBlockPosition());
      } else if (this.tracker instanceof EntityAreaEffectCloud) {
        return new PacketPlayOutSpawnEntity(this.tracker, 3);
      } else {
        throw new IllegalArgumentException(
            "Don\'t know how to add " + this.tracker.getClass() + "!");
      }
    }
  }