diff --git a/src/index.js b/src/index.js index 9a97040..8b76875 100644 --- a/src/index.js +++ b/src/index.js @@ -2,6 +2,7 @@ const mc = require('minecraft-protocol') const EventEmitter = require('events').EventEmitter const path = require('path') const requireIndex = require('./lib/requireindex') +const supportedVersions = require('./lib/version').supportedVersions require('emit-then').register() if (process.env.NODE_ENV === 'dev') { require('longjohn') @@ -31,6 +32,12 @@ class MCServer extends EventEmitter { } connect (options) { + const version = require('minecraft-data')(options.version).version + if (supportedVersions.indexOf(version.majorVersion) === -1) { + throw new Error(`Version ${version.minecraftVersion} is not supported.`) + } + this.majorVersion = version.majorVersion + const plugins = requireIndex(path.join(__dirname, 'lib', 'plugins')) this._server = mc.createServer(options) Object.keys(plugins) diff --git a/src/lib/plugins/world.js b/src/lib/plugins/world.js index acdde04..e5f5cb7 100644 --- a/src/lib/plugins/world.js +++ b/src/lib/plugins/world.js @@ -82,14 +82,21 @@ module.exports.server = async function (serv, {version, worldFolder, generation module.exports.player = function (player, serv, settings) { player.unloadChunk = (chunkX, chunkZ) => { delete player.loadedChunks[chunkX + ',' + chunkZ] - player._client.write('map_chunk', { - x: chunkX, - z: chunkZ, - groundUp: true, - bitMap: 0x0000, - chunkData: Buffer.alloc(0), - blockEntities: [] - }) + + if (serv.majorVersion === '1.8') { + player._client.write('map_chunk', { + x: chunkX, + z: chunkZ, + groundUp: true, + bitMap: 0x0000, + chunkData: Buffer.alloc(0) + }) + } else if (serv.majorVersion === '1.12') { + player._client.write('unload_chunk', { + chunkX, + chunkZ + }) + } } player.sendChunk = (chunkX, chunkZ, column) => { diff --git a/src/lib/version.js b/src/lib/version.js new file mode 100644 index 0000000..b461809 --- /dev/null +++ b/src/lib/version.js @@ -0,0 +1,3 @@ +module.exports = { + supportedVersions: ['1.8', '1.12'] +}