diff --git a/docs/API-Reference.md b/docs/API-Reference.md index 8fdeaec..da7ec19 100644 --- a/docs/API-Reference.md +++ b/docs/API-Reference.md @@ -764,6 +764,20 @@ Example

Hello World

+Blocks Module +============= +You hate having to lookup [Data Values][dv] when you use ScriptCraft's Drone() functions. So do I. +So I created this blocks object which is a helper object for use in construction. + +Examples +-------- + + box( blocks.oak ); // creates a single oak wood block + box( blocks.sand, 3, 2, 1 ); // creates a block of sand 3 wide x 2 high x 1 long + box( blocks.wool.green, 2 ); // creates a block of green wool 2 blocks wide + +Color aliased properties that were a direct descendant of the blocks object are no longer used to avoid confusion with carpet and stained clay blocks. In addition, there's a convenience array `blocks.rainbow` which is an array of the 7 colors of the rainbow (or closest approximations). + Fireworks Module ================ The fireworks module makes it easy to create fireworks using @@ -1516,20 +1530,6 @@ To create a 2-line high message using glowstone... [imgbt1]: img/blocktype1.png -Blocks Module -============= -You hate having to lookup [Data Values][dv] when you use ScriptCraft's Drone() functions. So do I. -So I created this blocks object which is a helper object for use in construction. - -Examples --------- - - box( blocks.oak ); // creates a single oak wood block - box( blocks.sand, 3, 2, 1 ); // creates a block of sand 3 wide x 2 high x 1 long - box( blocks.wool.green, 2 ); // creates a block of green wool 2 blocks wide - -Color aliased properties that were a direct descendant of the blocks object are no longer used to avoid confusion with carpet and stained clay blocks. In addition, there's a convenience array `blocks.rainbow` which is an array of the 7 colors of the rainbow (or closest approximations). - Drone.sphere() method ===================== Creates a sphere. diff --git a/src/main/javascript/modules/blocks.js b/src/main/javascript/modules/blocks.js new file mode 100644 index 0000000..19e0c0c --- /dev/null +++ b/src/main/javascript/modules/blocks.js @@ -0,0 +1,275 @@ +/************************************************************************ +Blocks Module +============= +You hate having to lookup [Data Values][dv] when you use ScriptCraft's Drone() functions. So do I. +So I created this blocks object which is a helper object for use in construction. + +Examples +-------- + + box( blocks.oak ); // creates a single oak wood block + box( blocks.sand, 3, 2, 1 ); // creates a block of sand 3 wide x 2 high x 1 long + box( blocks.wool.green, 2 ); // creates a block of green wool 2 blocks wide + +Color aliased properties that were a direct descendant of the blocks object are no longer used to avoid confusion with carpet and stained clay blocks. In addition, there's a convenience array `blocks.rainbow` which is an array of the 7 colors of the rainbow (or closest approximations). + +***/ +var blocks = { + air: 0, + stone: 1, + grass: 2, + dirt: 3, + cobblestone: 4, + oak: 5, + spruce: '5:1', + birch: '5:2', + jungle: '5:3', + sapling: { + oak: 6, + spruce: '6:1', + birch: '62:2', + jungle: '6:3' + }, + bedrock: 7, + water: 8, + water_still: 9, + lava: 10, + lava_still: 11, + sand: 12, + gravel: 13, + gold_ore: 14, + iron_ore: 15, + coal_ore: 16, + wood: 17, + leaves: 18, + sponge: 19, + glass: 20, + lapis_lazuli_ore: 21, + lapis_lazuli_block: 22, + dispenser: 23, + sandstone: 24, + note: 25, + bed: 26, + powered_rail: 27, + detector_rail: 28, + sticky_piston: 29, + cobweb: 30, + grass_tall: 31, + dead_bush: 32, + piston: 33, + piston_extn: 34, + wool: { + white: 35 // All other colors added below + }, + dandelion: 37, + flower_yellow: 37, + rose: 38, + flower_red: 38, + mushroom_brown: 39, + mushroom_red: 40, + gold: 41, + iron: 42, + tnt: 46, + bookshelf: 47, + moss_stone: 48, + obsidian: 49, + torch: 50, + fire: 51, + monster_spawner: 52, + stairs: { + oak: 53, + cobblestone: 67, + brick: 108, + stone: 109, + nether: 114, + sandstone: 128, + spruce: 134, + birch: 135, + jungle: 136, + quartz: 156 + }, + chest: 54, + redstone_wire: 55, + diamond_ore: 56, + diamond: 57, + crafting_table: 58, + wheat_seeds: 59, + farmland: 60, + furnace: 61, + furnace_burning: 62, + sign_post: 63, + door_wood: 64, + ladder: 65, + rail: 66, + sign: 68, + lever: 69, + pressure_plate_stone: 70, + door_iron: 71, + pressure_plate_wood: 72, + redstone_ore: 73, + redstone_ore_glowing: 74, + torch_redstone: 75, + torch_redstone_active: 76, + stone_button: 77, + ice: 79, + snow: 80, + cactus: 81, + clay: 82, + sugar_cane: 83, + jukebox: 84, + fence: 85, + pumpkin: 86, + netherrack: 87, + soulsand: 88, + glowstone: 89, + netherportal: 90, + jackolantern: 91, + cake: 92, + redstone_repeater: 93, + redeston_repeater_active: 94, + chest_locked: 95, + trapdoor: 96, + monster_egg: 97, + brick: { + stone: 98, + mossy: '98:1', + cracked: '98:2', + chiseled: '98:3', + red: 45 + }, + mushroom_brown_huge: 99, + mushroom_red_huge: 100, + iron_bars: 101, + glass_pane: 102, + melon: 103, + pumpkin_stem: 104, + melon_stem: 105, + vines: 106, + fence_gate: 107, + mycelium: 110, + lily_pad: 111, + nether: 112, + nether_fence: 113, + netherwart: 115, + table_enchantment: 116, + brewing_stand: 117, + cauldron: 118, + endportal: 119, + endportal_frame: 120, + endstone: 121, + dragon_egg: 122, + redstone_lamp: 123, + redstone_lamp_active: 124, + slab: { + snow: 78, + stone: 44, + sandstone: '44:1', + wooden: '44:2', + cobblestone: '44:3', + brick: '44:4', + stonebrick: '44:5', + netherbrick:'44:6', + quartz: '44:7', + oak: 126, + spruce: '126:1', + birch: '126:2', + jungle: '126:3', + upper: { + stone: '44:8', + sandstone: '44:9', + wooden: '44:10', + cobblestone: '44:11', + brick: '44:12', + stonebrick: '44:13', + netherbrick:'44:14', + quartz: '44:15', + oak: '126:8', + spruce: '126:9', + birch: '126:10', + jungle: '126:11', + } + }, + cocoa: 127, + emerald_ore: 129, + enderchest: 130, + tripwire_hook: 131, + tripwire: 132, + emerald: 133, + command: 137, + beacon: 138, + cobblestone_wall: 139, + flowerpot: 140, + carrots: 141, + potatoes: 142, + button_wood: 143, + mobhead: 144, + anvil: 145, + chest_trapped: 146, + pressure_plate_weighted_light: 147, + pressure_plate_weighted_heavy: 148, + redstone_comparator: 149, + redstone_comparator_active: 150, + daylight_sensor: 151, + redstone: 152, + netherquartzore: 153, + hopper: 154, + quartz: 155, + rail_activator: 157, + dropper: 158, + stained_clay: { + white: 159 // All other colors added below + }, + hay: 170, + carpet: { + white: 171 // All other colors added below + }, + hardened_clay: 172, + coal_block: 173 +}; + +// Add all available colors to colorized block collections + +var colors = { + orange: ':1', + magenta: ':2', + lightblue: ':3', + yellow: ':4', + lime: ':5', + pink: ':6', + gray: ':7', + lightgray: ':8', + cyan: ':9', + purple: ':10', + blue: ':11', + brown: ':12', + green: ':13', + red: ':14', + black: ':15' +}; +var colorized_blocks = ["wool", "stained_clay", "carpet"]; + +for (var i = 0, len = colorized_blocks.length; i < len; i++) { + var block = colorized_blocks[i], + data_value = blocks[block].white; + + for (var color in colors) { + blocks[block][color] = data_value + colors[color]; + } +}; + +/* + rainbow colors - a convenience + Color aliased properties that were a direct descendant of the blocks + object are no longer used to avoid confusion with carpet and stained + clay blocks. +*/ +blocks.rainbow = [blocks.wool.red, + blocks.wool.orange, + blocks.wool.yellow, + blocks.wool.lime, + blocks.wool.lightblue, + blocks.wool.blue, + blocks.wool.purple]; + + +module.exports = blocks; diff --git a/src/main/javascript/plugins/drone/blocktype.js b/src/main/javascript/plugins/drone/blocktype.js index 4772de4..7deced8 100644 --- a/src/main/javascript/plugins/drone/blocktype.js +++ b/src/main/javascript/plugins/drone/blocktype.js @@ -1,5 +1,5 @@ var Drone = require('./drone').Drone; -var blocks = require('./blocks').blocks; +var blocks = require('blocks'); /************************************************************************ Drone.blocktype() method diff --git a/src/main/javascript/plugins/drone/contrib/chessboard.js b/src/main/javascript/plugins/drone/contrib/chessboard.js index 0684659..f0c046b 100644 --- a/src/main/javascript/plugins/drone/contrib/chessboard.js +++ b/src/main/javascript/plugins/drone/contrib/chessboard.js @@ -1,5 +1,5 @@ var Drone = require('../drone').Drone; -var blocks = require('../blocks').blocks; +var blocks = require('blocks'); /** * Creates a tile pattern of given block types and size diff --git a/src/main/javascript/plugins/drone/contrib/rainbow.js b/src/main/javascript/plugins/drone/contrib/rainbow.js index e3d2992..f675b5f 100644 --- a/src/main/javascript/plugins/drone/contrib/rainbow.js +++ b/src/main/javascript/plugins/drone/contrib/rainbow.js @@ -1,5 +1,5 @@ var Drone = require('../drone').Drone; -var blocks = require('../blocks').blocks; +var blocks = require('blocks'); /************************************************************************ Drone.rainbow() method diff --git a/src/main/javascript/plugins/drone/contrib/redstonewire.js b/src/main/javascript/plugins/drone/contrib/redstonewire.js index c6fa79f..19d256a 100644 --- a/src/main/javascript/plugins/drone/contrib/redstonewire.js +++ b/src/main/javascript/plugins/drone/contrib/redstonewire.js @@ -1,5 +1,5 @@ var Drone = require('../drone').Drone; -var blocks = require('../blocks').blocks; +var blocks = require('blocks'); // // usage: diff --git a/src/main/javascript/plugins/drone/contrib/skyscraper-example.js b/src/main/javascript/plugins/drone/contrib/skyscraper-example.js index a96641a..2a4adb0 100644 --- a/src/main/javascript/plugins/drone/contrib/skyscraper-example.js +++ b/src/main/javascript/plugins/drone/contrib/skyscraper-example.js @@ -1,5 +1,5 @@ var Drone = require('../drone').Drone; -var blocks = require('../blocks').blocks; +var blocks = require('blocks'); Drone.extend('skyscraper',function(floors){ diff --git a/src/main/javascript/plugins/drone/contrib/spiral_stairs.js b/src/main/javascript/plugins/drone/contrib/spiral_stairs.js index 1e6399e..7385ffc 100644 --- a/src/main/javascript/plugins/drone/contrib/spiral_stairs.js +++ b/src/main/javascript/plugins/drone/contrib/spiral_stairs.js @@ -1,5 +1,5 @@ var Drone = require('../drone').Drone; -var blocks = require('../blocks').blocks; +var blocks = require('blocks'); /************************************************************************ Drone.spiral_stairs() method diff --git a/src/main/javascript/plugins/drone/drone.js b/src/main/javascript/plugins/drone/drone.js index 745c10a..014cf2a 100644 --- a/src/main/javascript/plugins/drone/drone.js +++ b/src/main/javascript/plugins/drone/drone.js @@ -1,5 +1,5 @@ var _utils = require('utils'); -var blocks = require('./blocks').blocks; +var blocks = require('blocks'); /********************************************************************* Drone Module @@ -733,6 +733,12 @@ Drone = function(x,y,z,dir,world) }; exports.Drone = Drone; +/* + because this is a plugin, any of its exports will be exported globally. + Since 'blocks' is a module not a plugin it is convenient to export it via + the Drone module. +*/ +exports.blocks = blocks; // // add custom methods to the Drone object using this function