Faits :
A.
Par jugement du 17 août 2017, le Tribunal correctionnel de l'arrondissement de l'Est vaudois a condamné par défaut X._, pour escroquerie par métier, faux dans les titres et blanchiment d'argent qualifié, à une peine privative de liberté de quatre ans ainsi qu'à une peine pécuniaire de 300 jours-amende à 100 fr. le jour.
Par jugement du 24 novembre 2017, la Cour d'appel pénale du Tribunal cantonal du canton de Vaud a rejeté l'appel formé par X._ contre ce jugement.
Par arrêt du 9 novembre 2018 (6B_395/2018), le Tribunal fédéral a admis le recours formé par le prénommé contre le jugement du 24 novembre 2017, a annulé celui-ci et a renvoyé la cause à l'autorité cantonale pour nouvelle décision.
B.
Par jugement du 7 février 2019, la Cour d'appel pénale du Tribunal cantonal vaudois, statuant à la suite de l'arrêt de renvoi du 9 novembre 2018, a rejeté l'appel formé par X._ contre le jugement du 17 août 2017 et a confirmé celui-ci.
La cour cantonale a retenu les faits suivants.
B.a. X._, de nationalité libanaise, est né en 1972.
Entre 1996 et 2001, le prénommé a été condamné à de multiples reprises par les autorités libanaises, pour chèques sans provision, escroquerie et falsification.
Le casier judiciaire suisse de X._ fait par ailleurs état d'une condamnation, en 2004, pour blanchiment d'argent, escroquerie par métier et faux dans les titres. Il a été retenu que ce dernier avait été membre d'une organisation criminelle internationale réalisant à grande échelle des escroqueries de type " A._ ", soit visant à appâter des victimes, par le biais d'Internet, pour les amener à verser des fonds aux escrocs.
B.b. X._ a fait la connaissance de B._ à la prison de C._. En mai 2006, ce dernier a été engagé par D._ au sein de la société E._ Sàrl. B._ s'est ensuite associé, le 24 octobre 2006, avec D._ notamment, pour créer la société F._ SA.
En novembre 2006, X._ et G._, avocat en Jordanie, ont contacté B._ en vue de la création d'un centre d'affaires dans ce pays. En juin 2007, D._ est sorti de la société F._ SA et H._ en est devenu administrateur. C'est dans ce cadre que X._ a fait la connaissance du dernier nommé. D._, B._ et H._ ont tous trois signé, le 25 juillet 2007, un document informant des risques, liés au blanchiment d'argent, de travailler avec une clientèle du Moyen-Orient et, plus particulièrement, avec X._ et G._. A sa sortie de prison, X._ a créé un centre d'affaires en Jordanie, dénommé I._, dans lequel il s'est associé à G._ et J._. Il est également devenu directeur général de la société K._, dont le siège se trouvait en Jordanie et qui détenait des comptes auprès de la banque L._. X._ avait également accès à un compte bancaire ouvert auprès de la banque L._, dont le titulaire était la société M._.
B.c. Dans la structure mise en place, X._ avait pour rôle, dans un premier temps, de fournir à des escrocs des numéros de comptes bancaires sur lesquels ceux-ci pouvaient faire virer des fonds par des victimes et, dans un second temps, de collecter ces fonds afin de les transférer pour masquer leur origine.
Agissant par l'intermédiaire de D._, B._ et H._, X._ a ainsi fait ouvrir et mis à disposition d'escrocs des comptes auprès de plusieurs banques - notamment un compte intitulé "N._", détenu par E._ Sàrl auprès de la banque O._ -, dont cette dernière société et F._ SA étaient titulaires, sur lesquels ont été virées de nombreuses sommes par des personnes victimes d'escroqueries de type " A._ ".
Une fois le produit des escroqueries versé par les victimes sur les comptes bancaires en question, D._, B._ et H._ effectuaient, sur ordre de X._, des virements au bénéfice des sociétés K._ et M._, ainsi que sur des comptes tiers.
Ainsi, entre le 20 juillet et le 14 septembre 2007, l'équivalent de 196'983 fr. 63 a été versé sur les comptes jordaniens contrôlés par X._, tandis que l'équivalent de 231'084 fr. a été viré auprès de tiers sur ordre du prénommé. En outre, un montant de 8'000 fr. a été fourni en liquide à l'intéressé par B._. La somme de ces montants a donc atteint l'équivalent de 436'067 fr. 63.
B.d. Lorsque les fonds concernés ont été bloqués sur le compte détenu par E._ Sàrl auprès de la banque O._, X._ a transmis à D._ des faux documents pour tenter de justifier les versements effectués sur celui-ci. Pour ce faire, X._ a confectionné de fausses factures au nom de E._ Sàrl, à l'adresse de prétendus investisseurs, destinées à justifier les versements opérés par des victimes d'escroqueries sur le compte en question. Il a également fabriqué des décomptes de prestations afin de justifier les avis de débit.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre le jugement du 7 février 2019, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens qu'il est acquitté et, subsidiairement, à son annulation et au renvoi de la cause à l'autorité précédente pour nouvelle décision. Il sollicite par ailleurs le bénéfice de l'assistance judiciaire.
Par ordonnance du 4 juillet 2019, le Tribunal fédéral a rejeté la demande d'assistance judiciaire présentée par le prénommé.

Considérant en droit :
1.
Le recourant reproche à la cour cantonale d'avoir violé les <ref-law> et 29 al. 2 Cst. en ne motivant pas suffisamment l'appréciation des preuves effectuée.
1.1. En vertu de l'<ref-law>, les décisions qui peuvent faire l'objet d'un recours au Tribunal fédéral doivent indiquer les motifs déterminants de fait et de droit sur lesquels l'autorité s'est fondée. Si la décision attaquée ne satisfait pas à ces exigences, le Tribunal fédéral peut soit la renvoyer à l'autorité cantonale en invitant celle-ci à la parfaire, soit l'annuler (<ref-law>). Cette disposition concrétise le droit d'être entendu (art. 29 al. 2 Cst. et art. 6 par. 1 CEDH) dont la jurisprudence a déduit le devoir pour l'autorité de motiver sa décision, afin que le destinataire puisse la comprendre et la contester utilement s'il y a lieu et que l'autorité de recours puisse exercer son contrôle (cf. <ref-ruling> consid. 3.1 p. 109; <ref-ruling> consid. 3.4.3 p. 46; <ref-ruling> consid. 5.3 p. 70; <ref-ruling> consid. 2.2 p. 183).
1.2. Le grief du recourant est semblable à celui qui avait été développé devant le Tribunal fédéral et qui, ayant été admis, avait donné lieu à l'arrêt de renvoi du 9 novembre 2018. Dans cet arrêt, le Tribunal fédéral avait relevé que le jugement du 24 novembre 2017 ne contenait pas de présentation, même succincte, du contenu pertinent des témoignages qui mettaient en cause le recourant et sur lesquels la cour cantonale avait fondé sa conviction.
L'argumentation du recourant tombe désormais à faux. En effet, dans le jugement attaqué, l'autorité précédente a expliqué pourquoi elle accordait du crédit aux déclarations faites par D._, B._ et H._, en précisant sur la base de quels propos elle avait établi les faits de la cause. La cour cantonale a en outre exposé pour quels motifs elle avait écarté les dénégations du recourant, en discutant celles-ci au regard des versements effectués sur les comptes bancaires utilisés. Cette motivation permet de comprendre l'appréciation des preuves à laquelle s'est livrée l'autorité précédente. Le recourant attaque d'ailleurs, dans son recours, ladite appréciation au moyen d'un grief d'arbitraire dans l'établissement des faits, qu'il convient d'examiner (cf. consid. 2 infra).
2.
Le recourant reproche à la cour cantonale d'avoir apprécié les preuves et établi les faits de manière arbitraire. Il se plaint en outre, à cet égard, d'une violation du principe "in dubio pro reo".
2.1. Le Tribunal fédéral est lié par les faits établis par l'autorité précédente (<ref-law>), à moins qu'ils n'aient été constatés en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. (<ref-ruling> consid. 5.2.2 p. 98). Le Tribunal fédéral n'entre pas en matière sur les critiques de nature appellatoire (<ref-ruling> consid. 1.3 p. 30; <ref-ruling> consid. 2.4 p. 368). L'appréciation des preuves est arbitraire ou manifestement inexacte au sens de l'<ref-law> lorsqu'elle est en contradiction avec le dossier ou contraire au sens de la justice et de l'équité ou lorsque l'autorité ne tient pas compte, sans raison sérieuse, d'un élément propre à modifier la décision, se trompe sur le sens et la portée de celui-ci ou, se fondant sur les éléments recueillis, en tire des constatations insoutenables (cf. <ref-ruling> consid. 3.6.2 p. 287; <ref-ruling> consid. 4.2 p. 233 s.). La présomption d'innocence, garantie par les <ref-law>, 32 al. 1 Cst., 14 par. 2 Pacte ONU II et 6 par. 2 CEDH, ainsi que son corollaire, le principe "in dubio pro reo", concernent tant le fardeau de la preuve que l'appréciation des preuves au sens large (<ref-ruling> consid. 2.2.3.1 p. 348 s.; <ref-ruling> consid. 2a p. 40 s.). En tant que règle sur le fardeau de la preuve, elle signifie, au stade du jugement, que le fardeau de la preuve incombe à l'accusation et que le doute doit profiter au prévenu. Comme règle d'appréciation des preuves (sur la portée et le sens précis de la règle sous cet angle, cf. <ref-ruling> consid. 2.2.3.3 p. 351 s.), la présomption d'innocence signifie que le juge ne doit pas se déclarer convaincu de l'existence d'un fait défavorable à l'accusé si, d'un point de vue objectif, il existe des doutes quant à l'existence de ce fait. Il importe peu qu'il subsiste des doutes seulement abstraits et théoriques, qui sont toujours possibles, une certitude absolue ne pouvant être exigée. Il doit s'agir de doutes sérieux et irréductibles, c'est-à-dire de doutes qui s'imposent à l'esprit en fonction de la situation objective. Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence au principe "in dubio pro reo", celui-ci n'a pas de portée plus large que l'interdiction de l'arbitraire (<ref-ruling> consid. 2.2.3.3 p. 351 s.; <ref-ruling> consid. 1.1 p. 503; <ref-ruling> consid. 7 p. 82).
2.2. L'autorité précédente a exposé que les déclarations de D._, B._ et H._ avaient mis en cause le recourant de manière concordante. D._ avait ainsi expliqué que B._ lui avait présenté le recourant et lui avait dit l'avoir rencontré en prison. Il avait reconnu avoir ouvert le compte "N._" sur instruction du recourant et avoir eu de nombreux contacts avec ce dernier. D._ avait par ailleurs reconnu qu'aucun projet immobilier n'existait au moment où les fonds avaient été versés sur le compte précité, que le recourant avait créé un tel projet de toutes pièces afin de justifier les arrivées de fonds sur celui-ci et qu'il lui avait envoyé la documentation devant servir à expliquer la provenance des fonds auprès de la banque. L'intéressé avait ajouté qu'en novembre 2007, alors que le compte "N._" avait été bloqué, le recourant lui avait demandé d'ouvrir des comptes en Espagne, en Grèce et aux Etats-Unis d'Amérique, sur lesquels il pourrait recevoir des fonds. Le recourant lui avait en outre demandé de déclarer à la police qu'il ne le connaissait pas, en échange du paiement de ses frais d'avocat. B._ avait quant à lui déclaré que le recourant lui avait demandé, ainsi qu'à H._, de créer des sociétés, en ajoutant qu'il avait été surpris de constater des arrivées de plusieurs petits montants sur le compte de F._ SA, lesquels n'étaient pas en relation avec la création desdites sociétés. B._ avait remarqué qu'une affaire de loterie était mentionnée sur une référence d'un sous-compte, car un individu avait contacté la société par courriel afin d'obtenir des informations à ce sujet après qu'on lui eut demandé de payer 30'000 USD. Le prénommé avait alors pris peur et avait averti la banque pour ne pas "avoir d'ennuis". H._ avait pour sa part déclaré que des clients du recourant avaient effectué trois versements pour un total d'environ 150'000 USD sur son compte privé auprès de la banque P._, qu'il avait reversé cette somme à la banque L._, sur un compte du recourant, puis qu'il avait dû se justifier auprès de la banque Q._ en expliquant que cela concernait un projet immobilier géré par celui-ci. H._ avait encore exposé qu'il avait créé trois sociétés à la demande du recourant, sans savoir pourquoi ce dernier ne voulait pas mettre celles-ci à son nom. Selon lui, le recourant ne lui avait jamais remis les pièces justificatives des investisseurs dans le projet immobilier, malgré ses demandes en ce sens. Le prénommé avait enfin admis avoir accepté de mettre l'un de ses comptes aux Etats-Unis d'Amérique à la disposition du recourant, après que celui-ci lui eut expliqué qu'il ne parvenait pas à sortir lui-même de l'argent de ce pays.
La cour cantonale a par ailleurs indiqué que les motifs de paiement mentionnés sur les différents transferts bancaires des victimes ne correspondaient pas à un projet immobilier, ni à un projet de centre d'affaires en Jordanie. Le compte "N._" avait été utilisé pour recueillir les montants des victimes du système de fraude à l'avance de frais. Dans ce cadre, les dupes avaient été invitées par une prétendue autorité fédérale, "R._", à verser de l'argent pour obtenir un "Tax Clearance Certificate" permettant de débloquer des fonds en leur faveur. D'autres dupes avaient été invitées à verser des fonds sur la base de fausses promesses d'héritage, de gains à la loterie, de gains sur investissements qu'il fallait prétendument assurer ou de faux contrats de fiducie qu'il aurait fallu reprendre. Les comptes de F._ SA avaient quant à eux notamment été utilisés pour recueillir des fonds d'une victime d'escroquerie de type "S._", ce qui contredisait l'explication du recourant, donnée à B._, selon laquelle il se serait agi d'un investissement pour la création d'une société. Par ailleurs, ces comptes avaient accueilli les versements effectués par des tiers, mentionnant comme motifs de paiement "T._", ce qui contredisait l'explication donnée par le recourant à B._, selon laquelle ceux-ci seraient provenus de clients qui souhaitaient être actionnaires de la société U._ en Espagne.
Enfin, selon l'autorité précédente, les explications fournies par le recourant n'avaient pas été crédibles. On ne voyait pas pourquoi des fonds auraient dû transiter par les comptes concernés, ni même par la Suisse, puisque d'éventuels investisseurs auraient pu simplement verser de l'argent sur les comptes jordaniens du recourant s'ils avaient souhaité soutenir son projet immobilier ou son projet de centre d'affaires. Le recourant avait d'ailleurs été incapable d'expliquer de manière crédible pourquoi l'argent provenait de plusieurs pays d'Europe ou des Etats-Unis d'Amérique alors qu'il avait prétendu que ses partenaires commerciaux se trouvaient au Nigéria.
2.3. Le recourant commence par énumérer des moyens probatoires qui auraient pu être administrés par la cour cantonale afin de vérifier la véracité des déclarations faites par D._, B._ et H._. Il ne ressort toutefois pas du jugement attaqué que le recourant aurait réclamé l'administration des preuves qu'il évoque, de sorte que son argumentation est sans portée.
Le recourant développe ensuite une argumentation par laquelle il pointe l'absence de preuves matérielles propres à accréditer les liens retenus par la cour cantonale entre sa personne, les escroqueries commises, les comptes et sociétés utilisés pour recevoir et ventiler les fonds. Celle-ci est également dénuée de pertinence, puisque l'autorité précédente a fondé ses constatations sur les déclarations concordantes de D._, B._ et H._. Le recourant ne saurait donc démontrer que la cour cantonale aurait versé dans l'arbitraire en se plaignant d'un prétendu manque de moyens probatoires, mais devrait montrer que celle-ci aurait tiré des constatations insoutenables de ces déclarations, ou qu'elle aurait arbitrairement prêté foi à celles-ci. Or, à cet égard, le recourant se borne à affirmer que les déclarations en question ne seraient pas crédibles car les trois intéressés auraient eu intérêt à le mettre en cause. Une telle argumentation, purement appellatoire et reposant sur la conjecture selon laquelle D._, B._ et H._ auraient accordé leurs versions des événements pour accabler de manière fantaisiste le recourant, ne fait en rien apparaître comme arbitraire l'appréciation de ces moyens de preuve par la cour cantonale.
Le recourant soutient ensuite que les sommes reçues sur les comptes jordaniens qu'il contrôlait auraient constitué des investissements pour son projet de centre d'affaires en Jordanie. On ne perçoit cependant pas en quoi l'éventuelle existence du centre d'affaires jordanien - alléguée par le recourant - pourrait avoir une influence sur le sort de la cause (cf. <ref-law>). En effet, la cour cantonale a retenu que le recourant avait utilisé ledit projet comme couverture servant à justifier les transferts de fonds, en laissant ouverte la question de l'existence réelle du centre d'affaires. Peu importe, à cet égard, que le projet eût par ailleurs trouvé une concrétisation. Cela ne change rien au fait que le recourant eût indiqué à D._, B._ et H._ de procéder à des versements - à partir de comptes suisses qu'il leur avait demandé d'ouvrir et qui recevaient régulièrement des montants versés par des tiers à la suite d'escroqueries, ce que l'intéressé ne conteste pas - sur les comptes bancaires dont il avait le contrôle en Jordanie. Une éventuelle effectivité du centre d'affaires jordanien n'aurait aucunement fait apparaître comme arbitraire ces constatations, puisqu'on ne voit pas pour quels motifs - autres que ceux retenus par l'autorité précédente - des sommes provenant directement d'escroqueries commises au préjudice de personnes se trouvant eu Europe ou aux Etats-Unis d'Amérique auraient pu se trouver, par le biais de nombreux virements accomplis presque hebdomadairement, sur les comptes des sociétés K._ et M._.
Le grief doit être rejeté dans la mesure où il est recevable.
3.
Le recourant conteste sa condamnation pour escroquerie par métier. Il ne présente cependant aucune motivation recevable, fondée sur l'état de fait de la cour cantonale - par lequel le Tribunal fédéral est lié (cf. <ref-law>) et qui n'est pas entaché d'arbitraire (cf. consid. 2 supra) -, propre à démontrer que l'autorité précédente aurait pu violer l'<ref-law>, mais se borne à contester tout lien avec les escroqueries commises, dont le produit était versé sur les comptes bancaires suisses ouverts par D._, B._ et H._.
4.
Le recourant conteste également sa condamnation pour blanchiment d'argent.
Son argumentation est irrecevable dans la mesure où elle s'écarte de l'état de fait de la cour cantonale - par lequel le Tribunal fédéral est lié (cf. <ref-law>) et dont il n'a pas démontré l'arbitraire (cf. consid. 2 supra) -, ainsi lorsque l'intéressé prétend avoir tout ignoré des escroqueries commises, dont le produit a été transféré sur les comptes dont il avait le contrôle en Jordanie.
Pour le reste, le recourant se contente d'affirmer que l'autorité précédente n'aurait pu le condamner sur la base de l'art. 305bis ch. 2 al. 2 let. a CP, car celle-ci a indiqué qu'il avait "exploité plusieurs comparses pour faire transiter l'argent de comptes dont ils avaient la maîtrise en Suisse sur des comptes en Jordanie dont lui avait la maîtrise, ainsi que sur des comptes de tiers". Il en déduit qu'il ne pouvait "faire partie" d'une organisation criminelle, laquelle serait "basée sur la coopération entre ses membres". A cet égard, on peut relever que le recourant joue sur les mots, car si la cour cantonale a utilisé le terme "exploité" pour caractériser le lien qui avait existé entre celui-ci et D._, B._ et H._, elle a par ailleurs indiqué que ces derniers avaient tenu un rôle éminent dans l'entreprise criminelle, en oeuvrant au sein des sociétés E._ Sàrl et F._ SA ainsi qu'en procédant aux transferts de fonds vers l'étranger. D._ et B._ ont d'ailleurs été condamnés, notamment pour blanchiment d'argent, en relation avec ce complexe de faits. De toute manière, contrairement à ce que suggère le recourant, une organisation criminelle n'est nullement exclue - au contraire - par l'existence d'une structure hiérarchique dans laquelle certains membres suivraient des ordres (cf. concernant la définition de l'organisation criminelle, au sens des art. 260teret 305bis ch. 2 al. 2 let. a CP, <ref-ruling> consid. 4.2 p. 239; <ref-ruling> consid. 4.1.1 p. 133 s.; <ref-ruling> consid. 2.3.1 p. 273 s.). Le grief doit donc être rejeté dans la mesure où il est recevable.
5.
Le recourant conteste enfin sa condamnation pour faux dans les titres.
Son argumentation est irrecevable dans la mesure où elle s'écarte de l'état de fait de la cour cantonale - par lequel le Tribunal fédéral est lié (cf. <ref-law>) et dont il n'a pas démontré l'arbitraire (cf. consid. 2 supra) -, ainsi lorsque le recourant soutient qu'il n'aurait pas établi les fausses factures concernées. Au demeurant, D._ a bien déclaré, lors de son audition du 27 février 2008, que les factures présentées à la banque étaient fausses, que G._ et le recourant lui avaient transmis ces documents afin qu'il les présentât à la banque, que lui-même ne connaissait aucun des investisseurs ni des personnes auxquelles des fonds avaient été versés depuis le compte "N._" (cf. PV d'audition du 27 février 2008, p. 3).
Le recourant conteste par ailleurs que les factures en question eussent pu constituer des faux intellectuels dans les titres, en raison de l'absence d'une valeur probante accrue (cf. sur ce point <ref-ruling> consid. 2 p. 14 ss). Cette argumentation est dénuée de pertinence, puisqu'il est reproché à l'intéressé d'avoir créé des factures pour E._ Sàrl - société dans laquelle il n'occupait aucune place -, au nom de D._, pièces pour lesquelles l'auteur réel du document ne correspondait pas à l'auteur apparent, soit d'avoir créé des faux matériels dans les titres. Or, le recourant ne prétend pas que les documents en question n'auraient pu être qualifiés de titres au sens de l'<ref-law>.
Le grief doit ainsi être rejeté dans la mesure où il est recevable.
6.
Le recours doit être rejeté dans la mesure où il est recevable. Le recourant, qui succombe, supporte les frais judiciaires (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 3'000 fr., sont mis à la charge du recourant.
3.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 12 septembre 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa