send rest of the map only when the player has logged, fix #88

This commit is contained in:
Romain Beaumont 2015-11-06 20:36:41 +01:00
parent a647e34078
commit 6b86cf5e9a
2 changed files with 23 additions and 5 deletions

View file

@ -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();
};
}

View file

@ -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();
};
}