From a999bbdda19de99ac51f5912a76a2f9e0a7a5090 Mon Sep 17 00:00:00 2001 From: Romain Beaumont Date: Tue, 15 Dec 2015 00:20:15 +0100 Subject: [PATCH] fix an async problem with portal generation, check huge portals work --- src/lib/plugins/portal.js | 4 ++-- src/lib/portal_detector.js | 5 +---- test/portal_detector.js | 11 +++++++++++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/lib/plugins/portal.js b/src/lib/plugins/portal.js index 8a73c2a..f25e540 100644 --- a/src/lib/plugins/portal.js +++ b/src/lib/plugins/portal.js @@ -65,8 +65,8 @@ module.exports.player=function(player,serv) { }, async action({bottomLeft,direction,width,height}) { var portal=generatePortal(bottomLeft,direction,width,height); - await addPortalToWorld(player.world,portal,[],[],(pos,type) => { - serv.setBlock(player.world,pos,type,0); + await addPortalToWorld(player.world,portal,[],[],async (pos,type) => { + await serv.setBlock(player.world,pos,type,0); }); } }); diff --git a/src/lib/portal_detector.js b/src/lib/portal_detector.js index 85fee4b..c8df8db 100644 --- a/src/lib/portal_detector.js +++ b/src/lib/portal_detector.js @@ -145,10 +145,7 @@ function addPortalToWorld(world,portal,additionalAir,additionalObsidian,setBlock async function makeWorldWithPortal(portal,additionalAir,additionalObsidian) { - - var world=new World(); - var chunk=new Chunk(); - await world.setColumn(0,0,chunk); + var world=new World(() => new Chunk()); await addPortalToWorld(world,portal,additionalAir,additionalObsidian); return world; diff --git a/test/portal_detector.js b/test/portal_detector.js index 8050dd6..d29ee38 100644 --- a/test/portal_detector.js +++ b/test/portal_detector.js @@ -70,6 +70,17 @@ describe("Detect portal", function() { }); + portalData.push({ + name:"huge simple portal frame z", + bottomLeft:new Vec3(2,1,1), + direction:new Vec3(0,0,1), + width:50, + height:50, + additionalAir:[], + additionalObsidian:[] + }); + + portalData.forEach(({name,bottomLeft,direction,width,height,additionalAir,additionalObsidian}) => { var portal=generatePortal(bottomLeft,direction,width,height); var {bottom,left,right,top,air}=portal;