From 48be4f2266fc0443da27b68734994aa1c74d23e8 Mon Sep 17 00:00:00 2001 From: Romain Beaumont Date: Sun, 13 May 2018 20:21:23 +0200 Subject: [PATCH] bring (static) multi version support to everything else + fix some formatting --- examples/basic.js | 32 ++++++++++++++++---------------- package.json | 2 +- src/index.js | 1 - src/lib/behavior.js | 2 ++ src/lib/plugins/commands.js | 4 ++-- src/lib/plugins/inventory.js | 8 ++++---- src/lib/plugins/physics.js | 5 +++-- src/lib/plugins/placeBlock.js | 5 +++-- src/lib/plugins/spawn.js | 14 +++++++++----- src/lib/plugins/useItem.js | 7 ++++--- src/lib/portal_detector.js | 4 ++-- src/lib/version.js | 1 - test/portal.test.js | 16 ++++++++-------- 13 files changed, 54 insertions(+), 47 deletions(-) delete mode 100644 src/lib/version.js diff --git a/examples/basic.js b/examples/basic.js index 2c36894..924b707 100644 --- a/examples/basic.js +++ b/examples/basic.js @@ -1,22 +1,22 @@ -const mcServer=require("flying-squid"); +const mcServer = require('flying-squid') mcServer.createMCServer({ - "motd": "A Minecraft Server \nRunning flying-squid", - "port": 25565, - "max-players": 10, - "online-mode": true, - "logging": true, - "gameMode": 1, - "generation": { - "name": "diamond_square", - "options":{ - "worldHeight": 80 + 'motd': 'A Minecraft Server \nRunning flying-squid', + 'port': 25565, + 'max-players': 10, + 'online-mode': true, + 'logging': true, + 'gameMode': 1, + 'generation': { + 'name': 'diamond_square', + 'options': { + 'worldHeight': 80 } }, - "kickTimeout": 10000, - "plugins": { + 'kickTimeout': 10000, + 'plugins': { }, - "modpe": false, - "view-distance": 10 -}); + 'modpe': false, + 'view-distance': 10 +}) diff --git a/package.json b/package.json index db4689f..4d957f1 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ }, "scripts": { "prepare": "require-self", - "lint": "standard test/*.test.js src/**/*.js src/**/**/*.js src/*.js *.js", + "lint": "standard test/*.test.js src/**/*.js src/**/**/*.js src/*.js examples/*.js *.js", "test": "jest --verbose --runInBand" }, "keywords": [], diff --git a/src/index.js b/src/index.js index d2befb9..9a97040 100644 --- a/src/index.js +++ b/src/index.js @@ -11,7 +11,6 @@ module.exports = { createMCServer: createMCServer, Behavior: require('./lib/behavior'), Command: require('./lib/command'), - version: require('./lib/version'), generations: require('./lib/generations'), experience: require('./lib/experience'), UserError: require('./lib/user_error'), diff --git a/src/lib/behavior.js b/src/lib/behavior.js index fa3750f..0278ce0 100644 --- a/src/lib/behavior.js +++ b/src/lib/behavior.js @@ -15,6 +15,8 @@ module.exports = (obj) => { let resp + func = func || (() => {}) + await obj.emitThen(eventName + '_cancel', data, cancel).catch((err) => setTimeout(() => { throw err }, 0)) await obj.emitThen(eventName, data, cancelled, cancelCount).catch((err) => setTimeout(() => { throw err }, 0)) diff --git a/src/lib/plugins/commands.js b/src/lib/plugins/commands.js index d274eb1..395bcea 100644 --- a/src/lib/plugins/commands.js +++ b/src/lib/plugins/commands.js @@ -1,6 +1,6 @@ const UserError = require('flying-squid').UserError -module.exports.player = function (player, serv) { +module.exports.player = function (player, serv, {version}) { player.commands.add({ base: 'help', info: 'to show all commands', @@ -80,7 +80,7 @@ module.exports.player = function (player, serv) { info: 'to get version of the server', usage: '/version', action () { - return 'This server is running flying-squid version ' + require('../../../package').version + return 'This server is running flying-squid version ' + version } }) diff --git a/src/lib/plugins/inventory.js b/src/lib/plugins/inventory.js index 052928c..baea57a 100644 --- a/src/lib/plugins/inventory.js +++ b/src/lib/plugins/inventory.js @@ -1,9 +1,9 @@ -const version = require('flying-squid').version -const windows = require('prismarine-windows')(version).windows -const Item = require('prismarine-item')(version) const Vec3 = require('vec3') -module.exports.player = function (player, serv) { +module.exports.player = function (player, serv, {version}) { + const Item = require('prismarine-item')(version) + const windows = require('prismarine-windows')(version).windows + player.heldItemSlot = 0 player.heldItem = new Item(256, 1) player.inventory = new windows.InventoryWindow(0, 'Inventory', 44) diff --git a/src/lib/plugins/physics.js b/src/lib/plugins/physics.js index cfc4e5c..2288bd1 100644 --- a/src/lib/plugins/physics.js +++ b/src/lib/plugins/physics.js @@ -1,7 +1,8 @@ -const blocks = require('minecraft-data')(require('flying-squid').version).blocks const Vec3 = require('vec3').Vec3 -module.exports.entity = function (entity) { +module.exports.entity = function (entity, serv, {version}) { + const blocks = require('minecraft-data')(version).blocks + entity.calculatePhysics = async (delta) => { if (entity.gravity) { addGravity(entity, 'x', delta) diff --git a/src/lib/plugins/placeBlock.js b/src/lib/plugins/placeBlock.js index 3c57ffc..6b1d813 100644 --- a/src/lib/plugins/placeBlock.js +++ b/src/lib/plugins/placeBlock.js @@ -1,4 +1,3 @@ -const blocks = require('minecraft-data')(require('flying-squid').version).blocks const Vec3 = require('vec3').Vec3 const materialToSound = { @@ -11,7 +10,9 @@ const materialToSound = { 'wood': 'wood' } -module.exports.player = function (player, serv) { +module.exports.player = function (player, serv, {version}) { + const blocks = require('minecraft-data')(version).blocks + player._client.on('block_place', ({direction, heldItem, location} = {}) => { if (direction === -1 || heldItem.blockId === -1 || !blocks[heldItem.blockId]) return const referencePosition = new Vec3(location.x, location.y, location.z) diff --git a/src/lib/plugins/spawn.js b/src/lib/plugins/spawn.js index 1e43982..d3f8006 100644 --- a/src/lib/plugins/spawn.js +++ b/src/lib/plugins/spawn.js @@ -1,17 +1,17 @@ -const version = require('flying-squid').version -const entitiesByName = require('minecraft-data')(version).entitiesByName -const mobsById = require('minecraft-data')(version).mobs -const objectsById = require('minecraft-data')(version).objects const Entity = require('prismarine-entity') const path = require('path') const requireIndex = require('../requireindex') const plugins = requireIndex(path.join(__dirname, '..', 'plugins')) -const Item = require('prismarine-item')(version) const UserError = require('flying-squid').UserError const Vec3 = require('vec3').Vec3 module.exports.server = function (serv, options) { + const version = options.version + + const mobsById = require('minecraft-data')(version).mobs + const objectsById = require('minecraft-data')(version).objects + serv.initEntity = (type, entityType, world, position) => { if (Object.keys(serv.entities).length > options['max-entities']) { throw new Error('Too many mobs !') } serv.entityMaxId++ @@ -74,6 +74,10 @@ module.exports.server = function (serv, options) { } module.exports.player = function (player, serv, options) { + const version = options.version + const entitiesByName = require('minecraft-data')(version).entitiesByName + const Item = require('prismarine-item')(version) + player.commands.add({ base: 'summon', info: 'Summon an entity', diff --git a/src/lib/plugins/useItem.js b/src/lib/plugins/useItem.js index 489b767..d0c5df8 100644 --- a/src/lib/plugins/useItem.js +++ b/src/lib/plugins/useItem.js @@ -1,8 +1,9 @@ -const items = require('minecraft-data')(require('flying-squid').version).items -const Item = require('prismarine-item')(require('flying-squid').version) const Vec3 = require('vec3').Vec3 -module.exports.player = function (player, serv) { +module.exports.player = function (player, serv, {version}) { + const items = require('minecraft-data')(version).items + const Item = require('prismarine-item')(version) + player._client.on('block_place', ({direction, heldItem, location} = {}) => { if (direction === -1 || heldItem.blockId === -1 || !items[heldItem.blockId]) return const item = Item.fromNotch(heldItem) diff --git a/src/lib/portal_detector.js b/src/lib/portal_detector.js index cbd77ee..c3c0ede 100644 --- a/src/lib/portal_detector.js +++ b/src/lib/portal_detector.js @@ -128,10 +128,10 @@ async function makeWorldWithPortal (portal, additionalAir, additionalObsidian) { return world } -function loader(version) { +function loader (version) { World = require('prismarine-world')(version) Chunk = require('prismarine-chunk')(version) - return {detectFrame,findPotentialLines,findBorder,getAir,generateLine,generatePortal,addPortalToWorld,makeWorldWithPortal} + return {detectFrame, findPotentialLines, findBorder, getAir, generateLine, generatePortal, addPortalToWorld, makeWorldWithPortal} } module.exports = loader diff --git a/src/lib/version.js b/src/lib/version.js deleted file mode 100644 index 6ae4069..0000000 --- a/src/lib/version.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = '1.8' diff --git a/test/portal.test.js b/test/portal.test.js index 533a87f..6ff8878 100644 --- a/test/portal.test.js +++ b/test/portal.test.js @@ -1,14 +1,14 @@ /* eslint-env jest */ const { - detectFrame, - findPotentialLines, - findBorder, - getAir, - generateLine, - generatePortal, - makeWorldWithPortal - } = require('flying-squid')('1.8').portal_detector + detectFrame, + findPotentialLines, + findBorder, + getAir, + generateLine, + generatePortal, + makeWorldWithPortal +} = require('flying-squid').portal_detector('1.8') const { Vec3 } = require('vec3')