mirror of
https://github.com/danbulant/flying-squid
synced 2026-06-18 05:51:12 +00:00
update fire placing/destroying, fix #171
This commit is contained in:
parent
0fd80dcb7c
commit
6b6a6764ae
3 changed files with 50 additions and 32 deletions
|
|
@ -7,32 +7,46 @@ module.exports.player=function(player,serv)
|
|||
player.sendBlock(position, block.type, block.metadata);
|
||||
}
|
||||
|
||||
player._client.on("block_dig",({location,status} = {}) => {
|
||||
player._client.on("block_dig",async ({location,status,face}) => {
|
||||
var pos=new Vec3(location.x,location.y,location.z);
|
||||
player.world.getBlock(pos)
|
||||
.then(block => {
|
||||
currentlyDugBlock=block;
|
||||
if(currentlyDugBlock.type==0) return;
|
||||
if(status==0 && player.gameMode!=1)
|
||||
player.behavior('dig', { // Start dig survival
|
||||
position: pos,
|
||||
block: block
|
||||
}, ({position}) => {
|
||||
return startDigging(position);
|
||||
}, cancelDig);
|
||||
else if(status==2)
|
||||
completeDigging(pos);
|
||||
else if(status==1)
|
||||
player.behavior('cancelDig', { // Cancel dig survival
|
||||
position: pos,
|
||||
block: block
|
||||
}, ({position}) => {
|
||||
return cancelDigging(position);
|
||||
});
|
||||
else if(status==0 && player.gameMode==1)
|
||||
return creativeDigging(pos);
|
||||
})
|
||||
.catch((err)=> setTimeout(() => {throw err;},0))
|
||||
|
||||
var directionVector=directionToVector[face];
|
||||
var facedPos=pos.plus(directionVector);
|
||||
|
||||
try {
|
||||
let facedBlock = await player.world.getBlock(facedPos);
|
||||
let block;
|
||||
if(facedBlock.name=="fire")
|
||||
{
|
||||
block=facedBlock;
|
||||
pos=facedPos;
|
||||
}
|
||||
else block=player.world.getBlock(pos);
|
||||
|
||||
currentlyDugBlock = block;
|
||||
if (currentlyDugBlock.type == 0) return;
|
||||
if (status == 0 && player.gameMode != 1)
|
||||
player.behavior('dig', { // Start dig survival
|
||||
position: pos,
|
||||
block: block
|
||||
}, ({position}) => {
|
||||
return startDigging(position);
|
||||
}, cancelDig);
|
||||
else if (status == 2)
|
||||
completeDigging(pos);
|
||||
else if (status == 1)
|
||||
player.behavior('cancelDig', { // Cancel dig survival
|
||||
position: pos,
|
||||
block: block
|
||||
}, ({position}) => {
|
||||
return cancelDigging(position);
|
||||
});
|
||||
else if (status == 0 && player.gameMode == 1)
|
||||
return creativeDigging(pos);
|
||||
}
|
||||
catch(err) {
|
||||
setTimeout(() => {throw err;},0);
|
||||
}
|
||||
});
|
||||
|
||||
function diggingTime()
|
||||
|
|
@ -159,4 +173,6 @@ module.exports.player=function(player,serv)
|
|||
}, cancelDig);
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
var directionToVector=[new Vec3(0,-1,0),new Vec3(0,1,0),new Vec3(0,0,-1),new Vec3(0,0,1),new Vec3(-1,0,0),new Vec3(1,0,0)];
|
||||
|
|
@ -3,17 +3,19 @@ var Vec3 = require("vec3").Vec3;
|
|||
var UserError=require("flying-squid").UserError;
|
||||
|
||||
module.exports.player=function(player,serv) {
|
||||
player.use_flint_and_steel=async (referencePosition,direction) => {
|
||||
player.use_flint_and_steel=async (referencePosition,direction,position) => {
|
||||
let block=await player.world.getBlock(referencePosition);
|
||||
if(block.name=="obsidian")
|
||||
{
|
||||
var frames=await detectFrame(player.world,referencePosition,direction);
|
||||
if(frames.length==0)
|
||||
if(frames.length!=0) {
|
||||
var air = frames[0].air;
|
||||
air.forEach(pos => player.setBlock(pos, 90, (frames[0].bottom[0].x - frames[0].bottom[1].x) != 0 ? 1 : 2));
|
||||
player.world.portals.push(frames[0]);
|
||||
return;
|
||||
var air=frames[0].air;
|
||||
air.forEach(pos => player.setBlock(pos,90,(frames[0].bottom[0].x-frames[0].bottom[1].x)!=0 ? 1 : 2));
|
||||
player.world.portals.push(frames[0]);
|
||||
}
|
||||
}
|
||||
player.changeBlock(position, 51, 0);
|
||||
};
|
||||
|
||||
player.on("dug",({position,block}) => {
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ module.exports.player=function(player,serv)
|
|||
|
||||
var item= items[heldItem.blockId];
|
||||
if(item.name=="flint_and_steel")
|
||||
player.use_flint_and_steel(referencePosition,directionVector);
|
||||
player.use_flint_and_steel(referencePosition,directionVector,position);
|
||||
});
|
||||
};
|
||||
var directionToVector=[new Vec3(0,-1,0),new Vec3(0,1,0),new Vec3(0,0,-1),new Vec3(0,0,1),new Vec3(-1,0,0),new Vec3(1,0,0)];
|
||||
Loading…
Reference in a new issue