public void handleFlying(Packet10Flying packet10flying) {
   WorldServer worldserver = mcServer.getWorldManager(playerEntity.dimension);
   field_22003_h = true;
   if (!hasMoved) {
     double d = packet10flying.yPosition - lastPosY;
     if (packet10flying.xPosition == lastPosX
         && d * d < 0.01D
         && packet10flying.zPosition == lastPosZ) {
       hasMoved = true;
     }
   }
   if (hasMoved) {
     if (playerEntity.ridingEntity != null) {
       float f = playerEntity.rotationYaw;
       float f1 = playerEntity.rotationPitch;
       playerEntity.ridingEntity.updateRiderPosition();
       double d2 = playerEntity.posX;
       double d4 = playerEntity.posY;
       double d6 = playerEntity.posZ;
       double d8 = 0.0D;
       double d9 = 0.0D;
       if (packet10flying.rotating) {
         f = packet10flying.yaw;
         f1 = packet10flying.pitch;
       }
       if (packet10flying.moving
           && packet10flying.yPosition == -999D
           && packet10flying.stance == -999D) {
         d8 = packet10flying.xPosition;
         d9 = packet10flying.zPosition;
       }
       playerEntity.onGround = packet10flying.onGround;
       playerEntity.onUpdateEntity(true);
       playerEntity.moveEntity(d8, 0.0D, d9);
       playerEntity.setPositionAndRotation(d2, d4, d6, f, f1);
       playerEntity.motionX = d8;
       playerEntity.motionZ = d9;
       if (playerEntity.ridingEntity != null) {
         worldserver.func_12017_b(playerEntity.ridingEntity, true);
       }
       if (playerEntity.ridingEntity != null) {
         playerEntity.ridingEntity.updateRiderPosition();
       }
       mcServer.configManager.func_613_b(playerEntity);
       lastPosX = playerEntity.posX;
       lastPosY = playerEntity.posY;
       lastPosZ = playerEntity.posZ;
       worldserver.updateEntity(playerEntity);
       return;
     }
     if (playerEntity.func_22057_E()) {
       playerEntity.onUpdateEntity(true);
       playerEntity.setPositionAndRotation(
           lastPosX, lastPosY, lastPosZ, playerEntity.rotationYaw, playerEntity.rotationPitch);
       worldserver.updateEntity(playerEntity);
       return;
     }
     double d1 = playerEntity.posY;
     lastPosX = playerEntity.posX;
     lastPosY = playerEntity.posY;
     lastPosZ = playerEntity.posZ;
     double d3 = playerEntity.posX;
     double d5 = playerEntity.posY;
     double d7 = playerEntity.posZ;
     float f2 = playerEntity.rotationYaw;
     float f3 = playerEntity.rotationPitch;
     if (packet10flying.moving
         && packet10flying.yPosition == -999D
         && packet10flying.stance == -999D) {
       packet10flying.moving = false;
     }
     if (packet10flying.moving) {
       d3 = packet10flying.xPosition;
       d5 = packet10flying.yPosition;
       d7 = packet10flying.zPosition;
       double d10 = packet10flying.stance - packet10flying.yPosition;
       if (!playerEntity.func_22057_E()
           && (d10 > 1.6499999999999999D || d10 < 0.10000000000000001D)) {
         kickPlayer("Illegal stance");
         logger.warning(
             (new StringBuilder())
                 .append(playerEntity.username)
                 .append(" had an illegal stance: ")
                 .append(d10)
                 .toString());
         return;
       }
       if (Math.abs(packet10flying.xPosition) > 32000000D
           || Math.abs(packet10flying.zPosition) > 32000000D) {
         kickPlayer("Illegal position");
         return;
       }
     }
     if (packet10flying.rotating) {
       f2 = packet10flying.yaw;
       f3 = packet10flying.pitch;
     }
     playerEntity.onUpdateEntity(true);
     playerEntity.ySize = 0.0F;
     playerEntity.setPositionAndRotation(lastPosX, lastPosY, lastPosZ, f2, f3);
     if (!hasMoved) {
       return;
     }
     double d11 = d3 - playerEntity.posX;
     double d12 = d5 - playerEntity.posY;
     double d13 = d7 - playerEntity.posZ;
     double d14 = d11 * d11 + d12 * d12 + d13 * d13;
     if (d14 > 100D) {
       logger.warning(
           (new StringBuilder())
               .append(playerEntity.username)
               .append(" moved too quickly!")
               .toString());
       kickPlayer("You moved too quickly :( (Hacking?)");
       return;
     }
     float f4 = 0.0625F;
     boolean flag =
         worldserver
                 .getCollidingBoundingBoxes(
                     playerEntity, playerEntity.boundingBox.copy().getInsetBoundingBox(f4, f4, f4))
                 .size()
             == 0;
     playerEntity.moveEntity(d11, d12, d13);
     d11 = d3 - playerEntity.posX;
     d12 = d5 - playerEntity.posY;
     if (d12 > -0.5D || d12 < 0.5D) {
       d12 = 0.0D;
     }
     d13 = d7 - playerEntity.posZ;
     d14 = d11 * d11 + d12 * d12 + d13 * d13;
     boolean flag1 = false;
     if (d14 > 0.0625D && !playerEntity.func_22057_E()) {
       flag1 = true;
       logger.warning(
           (new StringBuilder())
               .append(playerEntity.username)
               .append(" moved wrongly!")
               .toString());
       System.out.println(
           (new StringBuilder())
               .append("Got position ")
               .append(d3)
               .append(", ")
               .append(d5)
               .append(", ")
               .append(d7)
               .toString());
       System.out.println(
           (new StringBuilder())
               .append("Expected ")
               .append(playerEntity.posX)
               .append(", ")
               .append(playerEntity.posY)
               .append(", ")
               .append(playerEntity.posZ)
               .toString());
     }
     playerEntity.setPositionAndRotation(d3, d5, d7, f2, f3);
     boolean flag2 =
         worldserver
                 .getCollidingBoundingBoxes(
                     playerEntity, playerEntity.boundingBox.copy().getInsetBoundingBox(f4, f4, f4))
                 .size()
             == 0;
     if (flag && (flag1 || !flag2) && !playerEntity.func_22057_E()) {
       teleportTo(lastPosX, lastPosY, lastPosZ, f2, f3);
       return;
     }
     AxisAlignedBB axisalignedbb =
         playerEntity
             .boundingBox
             .copy()
             .expand(f4, f4, f4)
             .addCoord(0.0D, -0.55000000000000004D, 0.0D);
     if (!mcServer.allowFlight && !worldserver.func_27069_b(axisalignedbb)) {
       if (d12 >= -0.03125D) {
         playerInAirTime++;
         if (playerInAirTime > 80) {
           logger.warning(
               (new StringBuilder())
                   .append(playerEntity.username)
                   .append(" was kicked for floating too long!")
                   .toString());
           kickPlayer("Flying is not enabled on this server");
           return;
         }
       }
     } else {
       playerInAirTime = 0;
     }
     playerEntity.onGround = packet10flying.onGround;
     mcServer.configManager.func_613_b(playerEntity);
     playerEntity.handleFalling(playerEntity.posY - d1, packet10flying.onGround);
   }
 }