Free Xmas tree script


#1

Old school (lol) voxel build script.

Puts a nice big voxel christmas tree wherever you like, basically a green pine tree with some random yellow and red balls.

Has a built in removal script for your after holiday clean-up convenience,
just uncomment removeTree() and comment out rezTree() and run the script again.
Make sure you have the right one active, default is set to build the tree.

here is a pic, if you dont like the random choice just touch it up with your voxel tools.

You can get the script here https://gist.github.com/Adrianl3d/f3607571c92642b9ae69

here is a picture of the code,

// xmasTree.js
// Creates a single tree of 1 meter voxels to about 18 meters high with various shades of green leaves and assorted red and yellow baubles
// Created by Adrian on 3 December 2014
// Copyright 2014 Adrian McCarlie
// Released under Creative Commons By Attribution Share Alike, feel free to modify and share.
//
//
// Change these 3 values to suit the planting site of the tree.
//
var X_POS = 8060;
var Y_POS = 202;
var Z_POS = 8170;

//Change the height variable here to change the height of the trunk from the ground to the bottom of the leaves.
//This does not change the size of the leaves.
var height = 4;
//
// To remove tree scroll to bottom of script and comment out rezTree() and uncomment removeTree()  
// as required by moving the double slash
//Example to build  rezTree(); //removeTree();
//Example to remove //rezTree(); removeTree();

//End of User Variables
//
    var x = X_POS - 5;
    var y = Y_POS + height;
    var z = Z_POS;
    var l = 0;
    var maxl = 2;
    var h = 0;    
    var head = 25;
    var w = 0;
    var maxw = 12;
    var leaves = 0;
    var width = 3;
    var start = 0;
    var green = 0;
    var red = 40;
    var blue = 40;
        
    function rezTree()    {    
        var q = -1;
        width = 1;
        while (h < head){    
            while (width < maxw){
                while (leaves < width) {
                    green = Math.floor((Math.random() * 130) + 100);
                    if (green < 110) {
                        red = 255;
                        green = 255;
                    }                    
                    else if (green < 140) {
                        red = 255; green = 0; blue = 0;
                    }
                    Voxels.setVoxel(x, y+h, z+start, 1, red, green, blue); //rows getting bigger
                    red = 40;
                    blue = 40;
                    green = Math.floor((Math.random() * 130) + 100);
                    if (green < 110) {
                        red = 255; green = 255;
                    }                    
                    else if (green < 140) {
                        red = 255; green = 0; blue = 0;
                    }                    
                    Voxels.setVoxel(x, y+h+1, z+start, 1, red, green, blue);  //rows getting bigger
                    red = 40;
                    blue = 40;
                    green = Math.floor((Math.random() * 130) + 100);
                    if (green < 110) {
                        red = 255;
                        green = 255;
                    }                    
                    else if (green < 140) {
                        red = 255;
                        green = 0;
                        blue = 0;
                    }
                    Voxels.setVoxel(x, y+h+2, z+start, 1, red, green, blue);
                    z++;
                    leaves++; //rows getting bigger
                    green = 0; red = 40; blue = 40;
                }
                x++;
                leaves = 0;
                width = width + 2;
                z = Z_POS;
                start=start-1;
            }        
            width = width - 4;
            start = start + 2;    
            while (width >= 0)
            {            
                while (leaves < width)
                {
                    green = Math.floor((Math.random() * 130) + 100);
                    if (green < 110) {
                        red = 255;
                        green = 255;
                    }                    
                    else if (green < 140) {
                        red = 255;
                        green = 0;
                        blue = 0;
                    }                    
                    Voxels.setVoxel(x, y+h, z+start, 1, red, green, blue); //rows getting smaller
                    green = 0; red = 40; blue = 40;
                    green = Math.floor((Math.random() * 130) + 100);
                    if (green < 110) {
                        red = 255;
                        green = 255;
                    }                    
                    else if (green < 140) {
                        red = 255;
                        green = 0;
                        blue = 0;
                    }                    
                    Voxels.setVoxel(x, y + h + 1, z + start, 1, red, green, blue); //rows getting smaller        
                    red = 40;
                    blue = 40;
                    green = Math.floor((Math.random() * 130) + 100);
                    if (green < 110) {
                        red = 255;
                        green = 255;
                    }                        
                    else if (green < 140) {
                        red = 255;
                        green = 0;
                        blue = 0;
                    }
                    Voxels.setVoxel(x, y + h + 2, z + start, 1, red, green, blue);
                    z++;
                    leaves++; //rows getting smaller        
                    green = 0;
                    red = 40;
                    blue = 40;
                }
                x++;
                leaves = 0;
                width = width - 2;
                z = Z_POS;
                start=start+1    ;                    
            }
            h = h + 3;
            maxw = maxw - 2;
            q++;
            x = X_POS - 5  + q;
            
        }
        x= X_POS;
        y = Y_POS;
        z= Z_POS;        
        while (y < Y_POS + height) { //build a post 2 high
            Voxels.setVoxel(x, y, z, 1, 100, 80, 10);
            y++;
        }
        Voxels.setVoxel(x - 1, y - 1, z - 1, 1, 100, 80, 10); //4 single brown voxels to branch the trunk nicely into the foliage
        Voxels.setVoxel(x - 1, y - 1, z + 1, 1, 100, 80, 10);
        Voxels.setVoxel(x + 1, y - 1, z + 1, 1, 100, 80, 10);
        Voxels.setVoxel(x + 1, y - 1, z - 1, 1, 100, 80, 10);
        Script.stop();
    }
//
// The following is the code for removing the tree,
        
    function removeTree()    {    
        var q = -1;
        width = 1;
        while (h < head){    
            while (width < maxw){
                while (leaves < width) {
                    green = Math.floor((Math.random() * 130) + 100);
                    if (green < 110) {
                        red = 255;
                        green = 255;
                    }                    
                    else if (green < 140) {
                        red = 255; green = 0; blue = 0;
                    }
                    Voxels.eraseVoxel(x, y+h, z+start, 1, red, green, blue); //rows getting bigger
                    red = 40;
                    blue = 40;
                    green = Math.floor((Math.random() * 130) + 100);
                    if (green < 110) {
                        red = 255; green = 255;
                    }                    
                    else if (green < 140) {
                        red = 255; green = 0; blue = 0;
                    }                    
                    Voxels.eraseVoxel(x, y+h+1, z+start, 1, red, green, blue);  //rows getting bigger
                    red = 40;
                    blue = 40;
                    green = Math.floor((Math.random() * 130) + 100);
                    if (green < 110) {
                        red = 255;
                        green = 255;
                    }                    
                    else if (green < 140) {
                        red = 255;
                        green = 0;
                        blue = 0;
                    }
                    Voxels.eraseVoxel(x, y+h+2, z+start, 1, red, green, blue);
                    z++;
                    leaves++; //rows getting bigger
                    green = 0; red = 40; blue = 40;
                }
                x++;
                leaves = 0;
                width = width + 2;
                z = Z_POS;
                start=start-1;
            }        
            width = width - 4;
            start = start + 2;    
            while (width >= 0)
            {            
                while (leaves < width)
                {
                    green = Math.floor((Math.random() * 130) + 100);
                    if (green < 110) {
                        red = 255;
                        green = 255;
                    }                    
                    else if (green < 140) {
                        red = 255;
                        green = 0;
                        blue = 0;
                    }                    
                    Voxels.eraseVoxel(x, y+h, z+start, 1, red, green, blue); //rows getting smaller
                    green = 0; red = 40; blue = 40;
                    green = Math.floor((Math.random() * 130) + 100);
                    if (green < 110) {
                        red = 255;
                        green = 255;
                    }                    
                    else if (green < 140) {
                        red = 255;
                        green = 0;
                        blue = 0;
                    }                    
                    Voxels.eraseVoxel(x, y + h + 1, z + start, 1, red, green, blue); //rows getting smaller        
                    red = 40;
                    blue = 40;
                    green = Math.floor((Math.random() * 130) + 100);
                    if (green < 110) {
                        red = 255;
                        green = 255;
                    }                        
                    else if (green < 140) {
                        red = 255;
                        green = 0;
                        blue = 0;
                    }
                    Voxels.eraseVoxel(x, y + h + 2, z + start, 1, red, green, blue);
                    z++;
                    leaves++; //rows getting smaller        
                    green = 0;
                    red = 40;
                    blue = 40;
                }
                x++;
                leaves = 0;
                width = width - 2;
                z = Z_POS;
                start=start+1    ;                    
            }
            h = h + 3;
            maxw = maxw - 2;
            q++;
            x = X_POS - 5  + q;
            
        }
        x= X_POS;
        y = Y_POS;
        z= Z_POS;        
        while (y < Y_POS + height) { //build a post 2 high
            Voxels.eraseVoxel(x, y, z, 1, 100, 80, 10);
            y++;
        }
        Voxels.eraseVoxel(x - 1, y - 1, z - 1, 1, 100, 80, 10); //4 single brown voxels to branch the trunk nicely into the foliage
        Voxels.eraseVoxel(x - 1, y - 1, z + 1, 1, 100, 80, 10);
        Voxels.eraseVoxel(x + 1, y - 1, z + 1, 1, 100, 80, 10);
        Voxels.eraseVoxel(x + 1, y - 1, z - 1, 1, 100, 80, 10);
        Script.stop();
    }
// Uncomment one of the following as required

rezTree();
//    removeTree();