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/redstonewire.js

111 lines
2.6 KiB
JavaScript

'use strict';
/*global require*/
var Drone = require('drone'),
blocks = require('blocks');
//
// usage:
// [1] to place a new block with redstone wire on it (block on bottom, redstone on top)
// /js wireblock(blocks.sandstone);
//
// [2] to drop wire on to an existing block
// /js wire()
//
// [3] to place a (redstone) torch on a new block
// /js torchblock(blocks.sandstone)
//
// [4] to place a repeater on a new block
// /js repeaterblock(blocks.sandstone)
//
// [5] To create a long redstone wire (with necessary repeaters, powererd by a single torch)
// /js wirestraight(blocks.sandstone, distance)
//
// [6] To create a 'road' with redstone torches and wire lining each side
// /js redstoneroad(blocks.stone, blocks.sandstone, 25)
Drone.extend('wireblock',function(blockType)
{
this.chkpt('wireblock')
.box(blockType,1,2,1) // 2 blocks tall, top block will be wire dropped on lower
.up();
this.world.getBlockAt(this.x,this.y,this.z).setTypeId(55); //apply wire
return this.move('wireblock');
});
Drone.extend('wire',function ()
{
this.chkpt('wire')
.up();
this.world.getBlockAt(this.x,this.y,this.z).setTypeId(55); // apply wire
return this.move('wire');
});
Drone.extend('torchblock', function(blockType)
{
this.box(blockType,1,2,1) // 2 blocks tall
.up();
this.world.getBlockAt(this.x,this.y,this.z).setTypeId(76); // apply torch
return this.down();
});
Drone.extend('repeaterblock',function(blockType)
{
this.chkpt('repeaterblock')
.box(blockType,1,2,1)
.up();
var block = this.world.getBlockAt(this.x,this.y,this.z);
block.setTypeId(94); // apply repeater
// redstone repeater dirs: north=0,east=1,south=2,west=3
var direction = [1,2,3,0][this.dir]; // convert drone dir to repeater dir.
block.setData(direction);
return this.move('repeaterblock');
});
Drone.extend('wirestraight',function (blockType,distance)
{
this.chkpt('wirestraight');
this.torchblock(blockType);
this.fwd();
for (var i = 1; i < distance; i++) {
if(i % 14 == 0)
{
this.repeaterblock(blockType);
}
else
{
this.wireblock(blockType);
}
this.fwd();
};
return this.move('wirestraight');
});
Drone.extend('redstoneroad', function (roadBlockType, redstoneunderBlockType, distance)
{
return this.down()
.wirestraight(redstoneunderBlockType, distance)
.right()
.box(roadBlockType, 4,1,distance)
.right(4)
.wirestraight(redstoneunderBlockType, distance)
.up();
});