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