From 0b53189116f821fead11f4f03cfffe9ed006dbfc Mon Sep 17 00:00:00 2001 From: Romain Beaumont Date: Sun, 13 May 2018 19:47:47 +0200 Subject: [PATCH] bring (static) multi version support to portal detection --- src/lib/plugins/portal.js | 5 +++-- src/lib/portal_detector.js | 14 ++++++++++---- test/portal.test.js | 4 +--- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/lib/plugins/portal.js b/src/lib/plugins/portal.js index bac1e33..02bc915 100644 --- a/src/lib/plugins/portal.js +++ b/src/lib/plugins/portal.js @@ -1,8 +1,9 @@ -const {detectFrame, generatePortal, addPortalToWorld} = require('flying-squid').portal_detector const Vec3 = require('vec3').Vec3 const UserError = require('flying-squid').UserError -module.exports.player = function (player, serv) { +module.exports.player = function (player, serv, {version}) { + const {detectFrame, generatePortal, addPortalToWorld} = require('flying-squid').portal_detector(version) + player.use_flint_and_steel = async (referencePosition, direction, position) => { let block = await player.world.getBlock(referencePosition) if (block.name === 'obsidian') { diff --git a/src/lib/portal_detector.js b/src/lib/portal_detector.js index 9a435c6..cbd77ee 100644 --- a/src/lib/portal_detector.js +++ b/src/lib/portal_detector.js @@ -2,8 +2,6 @@ const Vec3 = require('vec3').Vec3 const flatMap = require('flatmap') const range = require('range').range -module.exports = {detectFrame, findPotentialLines, findBorder, getAir, generateLine, generatePortal, addPortalToWorld, makeWorldWithPortal} - async function findLineInDirection (world, startingPoint, type, direction, directionV) { const line = [] let point = startingPoint @@ -91,8 +89,8 @@ function getAir (border) { return flatMap(bottom, pos => range(1, top[0].y - bottom[0].y).map(i => pos.offset(0, i, 0))) } -const World = require('prismarine-world')(require('./version')) -const Chunk = require('prismarine-chunk')(require('./version')) +let World +let Chunk function generateLine (startingPoint, direction, length) { return range(0, length).map(i => startingPoint.plus(direction.scaled(i))) @@ -129,3 +127,11 @@ async function makeWorldWithPortal (portal, additionalAir, additionalObsidian) { return world } + +function loader(version) { + World = require('prismarine-world')(version) + Chunk = require('prismarine-chunk')(version) + return {detectFrame,findPotentialLines,findBorder,getAir,generateLine,generatePortal,addPortalToWorld,makeWorldWithPortal} +} + +module.exports = loader diff --git a/test/portal.test.js b/test/portal.test.js index e2135f1..533a87f 100644 --- a/test/portal.test.js +++ b/test/portal.test.js @@ -1,7 +1,6 @@ /* eslint-env jest */ const { - portal_detector: { detectFrame, findPotentialLines, findBorder, @@ -9,8 +8,7 @@ const { generateLine, generatePortal, makeWorldWithPortal - } -} = require('flying-squid') + } = require('flying-squid')('1.8').portal_detector const { Vec3 } = require('vec3')