From 6b86cf5e9a7aa9f49f706d4d78ea41186428be5a Mon Sep 17 00:00:00 2001 From: Romain Beaumont Date: Fri, 6 Nov 2015 20:36:41 +0100 Subject: [PATCH] send rest of the map only when the player has logged, fix #88 --- src/lib/playerPlugins/login.js | 19 +++++++++++++++++-- src/lib/playerPlugins/world.js | 9 ++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/lib/playerPlugins/login.js b/src/lib/playerPlugins/login.js index 1c554cc..ecb598b 100644 --- a/src/lib/playerPlugins/login.js +++ b/src/lib/playerPlugins/login.js @@ -15,7 +15,7 @@ function inject(serv,player) player.entity.food = 20; player.entity.crouching = false; // Needs added in prismarine-entity later player.playerViewDistance = 150; - player.view=8; + player.view=10; player.world=serv.overworld; player.username=player._client.username; serv.players.push(player); @@ -121,6 +121,19 @@ function inject(serv,player) player.emit("connected"); } + player.waitPlayerLogin = () => { + var events=["flying","look"]; + return new Promise(function(resolve){ + + var listener=()=> { + events.map(event => player._client.removeListener(event,listener)); + resolve(); + }; + events.map(event =>player._client.on(event,listener)); + }); + }; + + player.login = async () => { if (serv.uuidToPlayer[player._client.uuid]) { @@ -149,6 +162,8 @@ function inject(serv,player) player.emit("spawned"); sendPlayersWhenMove(); - setTimeout(() => {player.sendRestMap();sendChunkWhenMove();},100); + await player.waitPlayerLogin(); + player.sendRestMap(); + sendChunkWhenMove(); }; } \ No newline at end of file diff --git a/src/lib/playerPlugins/world.js b/src/lib/playerPlugins/world.js index 410fc2f..4758857 100644 --- a/src/lib/playerPlugins/world.js +++ b/src/lib/playerPlugins/world.js @@ -59,9 +59,9 @@ function inject(serv, player) { }) .reduce((acc,{chunkX,chunkZ})=> acc - //.then(() => sleep(100)) .then(() => player.world.getColumn(chunkX,chunkZ)) .then((column) => player.sendChunk(chunkX,chunkZ,column)) + .then(() => sleep(5)) ,Promise.resolve()); }; @@ -108,9 +108,12 @@ function inject(serv, player) { player.updateAndSpawnNearbyPlayers(); await player.sendMap(); - setTimeout(player.sendRestMap,100); - player.sendPosition(); + player.sendPosition(); player.emit('change_world'); + + await player.waitPlayerLogin(); + player.sendRestMap(); + }; } \ No newline at end of file