From fb5450e3ca8c8d19bc82d2d882e2882fa61c6669 Mon Sep 17 00:00:00 2001 From: Romain Beaumont Date: Thu, 26 Nov 2015 01:08:10 +0100 Subject: [PATCH] unload chunks, progress on #127 --- src/lib/plugins/world.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/lib/plugins/world.js b/src/lib/plugins/world.js index a54a58e..ba6f6ba 100644 --- a/src/lib/plugins/world.js +++ b/src/lib/plugins/world.js @@ -68,6 +68,18 @@ module.exports.player=function(player,serv) { } }; + player.unloadChunk = (chunkX,chunkZ) => + { + delete player.loadedChunks[chunkX+","+chunkZ]; + player._client.write('map_chunk', { + x: chunkX, + z: chunkZ, + groundUp: true, + bitMap: 0x0000, + chunkData: new Buffer(0) + }); + }; + player.sendChunk = (chunkX,chunkZ,column) => { return player.behavior('sendChunk', { @@ -101,6 +113,11 @@ module.exports.player=function(player,serv) { var playerChunkX=Math.floor(player.position.x/16/32); var playerChunkZ=Math.floor(player.position.z/16/32); + Object.keys(player.loadedChunks) + .map((key) => key.split(",")) + .filter(([x,z]) => Math.abs(x-playerChunkX)>view || Math.abs(z-playerChunkZ)>view) + .forEach(([x,z]) => player.unloadChunk(x,z)); + return spiral([view*2,view*2]) .map(t => ({ chunkX:playerChunkX+t[0]-view,