This repository has been archived on 2021-07-14. You can view files and clone it, but cannot push or open issues or pull requests.
scriptcraft/src/main/js/plugins/drone/contrib/cottage.js

116 lines
2.8 KiB
JavaScript

var Drone = require('drone');
var blocks = require('blocks');
//
// usage:
// [1] to build a cottage at the player's current location or the cross-hairs location...
//
// /js cottage();
//
// [2] to build a cottage using an existing drone...
//
// /js drone.cottage();
//
function cottage( ) {
this
.chkpt('cottage')
.down()
.box(blocks.birch, 7, 1, 6) // birch wood floor
.up()
.box(blocks.air, 7, 5, 6) // clear area first
.box0( blocks.moss_stone, 7, 2, 6) // 4 walls
.right(3)
.door() // door front and center
.up(1)
.left(2)
.box( blocks.glass_pane ) // windows to left and right
.right(4)
.box( blocks.glass_pane )
.left(5)
.up()
.prism0( blocks.stairs.oak, 7, 6) // add a roof
.down()
.right(4)
.back()
.wallsign(['Home','Sweet','Home'])
.fwd()
.move('cottage')
.right(3)
.fwd(4)
.up()
.hangtorch() // place a torch on wall
.move('cottage')
.right()
.fwd(3)
.bed() // place a bed against left wall
.fwd()
.right(4)
.box(blocks.furnace) // place a furnace against right wall
.move('cottage')
;
}
//
// a more complex script that builds an tree-lined avenue with
// cottages on both sides.
//
function cottage_road( numberCottages ) {
if (typeof numberCottages == 'undefined'){
numberCottages = 6;
}
var i=0, distanceBetweenTrees = 11;
//
// step 1 build the road.
//
var cottagesPerSide = Math.floor(numberCottages/2);
this
.chkpt('cottage_road') // make sure the drone's state is saved.
.box( blocks.double_slab.stone, 3, 1, cottagesPerSide * ( distanceBetweenTrees + 1 ) ) // build the road
.up()
.right() // now centered in middle of road
.chkpt('cr'); // will be returning to this position later
//
// step 2 line the road with trees
//
for ( ; i < cottagesPerSide+1;i++ ) {
this
.left(5)
.oak()
.right(10)
.oak()
.left(5) // return to middle of road
.fwd( distanceBetweenTrees + 1 ); // move forward.
}
this
.move('cr')
.back(6); // move back 1/2 the distance between trees
// this function builds a path leading to a cottage.
function pathAndCottage( drone ) {
drone
.down()
.box(blocks.double_slab.stone, 1, 1, 5)
.fwd(5)
.left(3)
.up()
.cottage();
return drone;
};
//
// step 3 build cottages on each side
//
for ( i = 0; i < cottagesPerSide; i++ ) {
this
.fwd( distanceBetweenTrees + 1 )
.chkpt('r'+i);
// build cottage on left
pathAndCottage( this.turn(3) ).move( 'r' + i );
// build cottage on right
pathAndCottage( this.turn() ).move( 'r' + i );
}
// return drone to where it was at start of function
this.move('cottage_road');
}
Drone.extend(cottage_road);
Drone.extend(cottage);