Adding a new example script fort.js for creating forts and castles.

This commit is contained in:
walterhiggins 2012-12-31 12:36:25 +00:00
parent 88cafd6ee2
commit d28faca04d
3 changed files with 64 additions and 2 deletions

View file

@ -154,7 +154,12 @@ public class CommandScript extends CommandBase {
}
// Now evaluate the string we've colected.
notifyAdmins(par1ICommandSender, "js> " + s, (Object[])args);
Object result = ctx.evaluateString(scope, s, "<cmd>", 1, null);
Object result = null;
try {
result = ctx.evaluateString(scope, s, "<cmd>", 1, null);
}catch(Exception e){
notifyAdmins(par1ICommandSender, "ERROR: " + e.getMessage(), (Object[])args);
}
if (result != null){
notifyAdmins(par1ICommandSender, Context.toString(result), (Object[])args);
}

View file

@ -338,7 +338,9 @@ var Drone = {
// block dirs: 0 = east, 1 = west, 2 = south , 3 = north
// sign dirs: 5 = east, 3 = south, 4 = west, 2 = north
Drone.PLAYER_STAIRS_FACING = [0,2,1,3];
Drone.PLAYER_SIGN_FACING = [4,2,5,3]; // for blocks 68 (wall signs) 65 (ladders) 61,62 (furnaces) 23 (dispenser) and 54 (chest)
// for blocks 68 (wall signs) 65 (ladders) 61,62 (furnaces) 23 (dispenser) and 54 (chest)
Drone.PLAYER_SIGN_FACING = [4,2,5,3];
Drone.PLAYER_TORCH_FACING = [2,4,1,3];
Drone.prototype.prism0 = function(block,w,d){
this.prism(block,w,d).fwd().right().prism(0,w-2,d-2).left().back();

55
fort.js Normal file
View file

@ -0,0 +1,55 @@
var scriptDir = $SCRIPT_DIR;
load(scriptDir + "/drone.js");
function fort(d, side, h)
{
if (typeof d == "undefined")
d = new Drone();
if (typeof side == "undefined")
side = 18;
if (typeof h == "undefined")
h = 6;
if (h < 4 || side < 10)
throw new java.lang.RuntimeException("Forts must be at least 9 wide X 4 tall");
// make sure side is even
if (side%2)
side++;
var brick = 98;
// build walls.
d.chkpt('fort').box0(brick,side,h-1,side);
//
// build turrets
//
d.up(h-1);
for (i = 0;i <= 3;i++){
var turret = [];
d.box(brick) // solid brick corners
.up().box('50:5').down() // light a torch on each corner
.fwd();
turret.push('109:'+ Drone.PLAYER_STAIRS_FACING[d.dir]);
turret.push('109:'+ Drone.PLAYER_STAIRS_FACING[(d.dir+2)%4]);
d.box(turret,1,1,side-2).fwd(side-2).turn();
}
//
// build battlements
//
d.move('fort');
d.up(h-2).fwd().right().box('44:5',side-2,1,side-2);
var battlementWidth = 3;
if (side <= 12)
battlementWidth = 2;
d.fwd(battlementWidth).right(battlementWidth).box(0,side-((1+battlementWidth)*2),1,side-((1+battlementWidth)*2));
//
// add door
//
var torch = '50:' + Drone.PLAYER_TORCH_FACING[d.dir];
d.move('fort').right((side/2)-1).door2() // double doors
.back().left().up().box(torch) // left torch
.right(3).box(torch); // right torch
//
// add ladder up to battlements
//
d.move('fort').right((side/2)-3).fwd(1).box('65:' + Drone.PLAYER_SIGN_FACING[(d.dir+2)%4], 1,h-1,1);
return d.move('fort');
};