diff options
| author | Calinou <calinou@opmbx.org> | 2014-03-09 10:38:18 +0100 | 
|---|---|---|
| committer | Calinou <calinou@opmbx.org> | 2014-03-09 10:38:18 +0100 | 
| commit | 8337a6c192b9961f8947767690c13951696c3c1e (patch) | |
| tree | 77908db80dd8f13b494030203be725e03f96bea8 /stairsplus/microblocks.lua | |
| parent | 396945ed3eaf43404bd117bbf4820ce08584cc4e (diff) | |
Merge ShadowNinja's rewrite.
Diffstat (limited to 'stairsplus/microblocks.lua')
| -rw-r--r-- | stairsplus/microblocks.lua | 186 | 
1 files changed, 65 insertions, 121 deletions
diff --git a/stairsplus/microblocks.lua b/stairsplus/microblocks.lua index 30a95ea..6348bf6 100644 --- a/stairsplus/microblocks.lua +++ b/stairsplus/microblocks.lua @@ -1,142 +1,86 @@  -- Load translation library if intllib is installed  local S -if (minetest.get_modpath("intllib")) then -	dofile(minetest.get_modpath("intllib").."/intllib.lua") +if intllib then  	S = intllib.Getter(minetest.get_current_modname()) -	else -	S = function ( s ) return s end +else +	S = function(s) return s end  end --- Node will be called <modname>micro_<subname> +-- Node will be called <modname>:micro_<subname>  function register_micro(modname, subname, recipeitem, groups, images, description, drop, light) - -	minetest.register_node(":"..modname .. ":micro_" .. subname, { -		description = S("%s Microblock"):format(S(description)), -		drawtype = "nodebox", -		tiles = images, -		light_source = light, -		drop = modname .. ":micro_" .. drop, -		paramtype = "light", -		paramtype2 = "facedir", -		sunlight_propagates = true, +	return stairsplus:register_micro(modname, subname, recipeitem, {  		groups = groups, -		node_box = { -			type = "fixed", -			fixed = {-0.5, -0.5, 0, 0, 0, 0.5}, -		}, -		sounds = default.node_sound_stone_defaults(), -		on_place = stairsplus_rotate_and_place -	}) -	 -	minetest.register_node(":"..modname .. ":micro_" .. subname .. "_1", { -		description = S("%s Microblock"):format(S(description)), -		drawtype = "nodebox",  		tiles = images, +		description = description, +		drop = drop,  		light_source = light, -		drop = modname .. ":micro_" .. drop .. "_1", -		paramtype = "light", -		paramtype2 = "facedir", -		sunlight_propagates = true, -		groups = groups, -		node_box = { -			type = "fixed", -			fixed = {-0.5, -0.5, 0, 0, -0.4375, 0.5}, -		},  		sounds = default.node_sound_stone_defaults(), -		on_place = stairsplus_rotate_and_place  	}) -	 -	minetest.register_node(":"..modname .. ":micro_" .. subname .. "_2", { -		description = S("%s Microblock"):format(S(description)), -		drawtype = "nodebox", -		tiles = images, -		light_source = light, -		drop = modname .. ":micro_" .. drop .. "_2", -		paramtype = "light", -		paramtype2 = "facedir", -		sunlight_propagates = true, -		groups = groups, -		node_box = { -			type = "fixed", -			fixed = {-0.5, -0.5, 0, 0, -0.375, 0.5}, +end + +function stairsplus:register_micro(modname, subname, recipeitem, fields) +	local defs = { +		[""] = { +			node_box = { +				type = "fixed", +				fixed = {-0.5, -0.5, 0, 0, 0, 0.5}, +			},  		}, -		sounds = default.node_sound_stone_defaults(), -		on_place = stairsplus_rotate_and_place -	}) -	 -	minetest.register_node(":"..modname .. ":micro_" .. subname .. "_4", { -		description = S("%s Microblock"):format(S(description)), -		drawtype = "nodebox", -		tiles = images, -		light_source = light, -		drop = modname .. ":micro_" .. drop .. "_4", -		paramtype = "light", -		paramtype2 = "facedir", -		sunlight_propagates = true, -		groups = groups, -		node_box = { -			type = "fixed", -			fixed = {-0.5, -0.5, 0, 0, -0.25, 0.5}, +		["_1"] = { +			node_box = { +				type = "fixed", +				fixed = {-0.5, -0.5, 0, 0, -0.4375, 0.5}, +			},  		}, -		sounds = default.node_sound_stone_defaults(), -		on_place = stairsplus_rotate_and_place -	}) -	 -	minetest.register_node(":"..modname .. ":micro_" .. subname .. "_12", { -		description = S("%s Microblock"):format(S(description)), -		drawtype = "nodebox", -		tiles = images, -		light_source = light, -		drop = modname .. ":micro_" .. drop .. "_12", -		paramtype = "light", -		paramtype2 = "facedir", -		sunlight_propagates = true, -		groups = groups, -		node_box = { -			type = "fixed", -			fixed = {-0.5, -0.5, 0, 0, 0.25, 0.5}, +		["_2"] = { +			node_box = { +				type = "fixed", +				fixed = {-0.5, -0.5, 0, 0, -0.375, 0.5}, +			},  		}, -		sounds = default.node_sound_stone_defaults(), -		on_place = stairsplus_rotate_and_place -	}) -	 -	minetest.register_node(":"..modname .. ":micro_" .. subname .. "_14", { -		description = S("%s Microblock"):format(S(description)), -		drawtype = "nodebox", -		tiles = images, -		light_source = light, -		drop = modname .. ":micro_" .. drop .. "_14", -		paramtype = "light", -		paramtype2 = "facedir", -		sunlight_propagates = true, -		groups = groups, -		node_box = { -			type = "fixed", -			fixed = {-0.5, -0.5, 0, 0, 0.375, 0.5}, +		["_4"] = { +			node_box = { +				type = "fixed", +				fixed = {-0.5, -0.5, 0, 0, -0.25, 0.5}, +			},  		}, -		sounds = default.node_sound_stone_defaults(), -		on_place = stairsplus_rotate_and_place -	}) -	 -	minetest.register_node(":"..modname .. ":micro_" .. subname .. "_15", { -		description = S("%s Microblock"):format(S(description)), -		drawtype = "nodebox", -		tiles = images, -		light_source = light, -		drop = modname .. ":micro_" .. drop .. "_15", -		paramtype = "light", -		paramtype2 = "facedir", -		sunlight_propagates = true, -		groups = groups, -		node_box = { -			type = "fixed", -			fixed = {-0.5, -0.5, 0, 0, 0.4375, 0.5}, +		["_12"] = { +			node_box = { +				type = "fixed", +				fixed = {-0.5, -0.5, 0, 0, 0.25, 0.5}, +			},  		}, -		sounds = default.node_sound_stone_defaults(), -		on_place = stairsplus_rotate_and_place -	}) +		["_14"] = { +			node_box = { +				type = "fixed", +				fixed = {-0.5, -0.5, 0, 0, 0.375, 0.5}, +			}, +		}, +		["_15"] = { +			node_box = { +				type = "fixed", +				fixed = {-0.5, -0.5, 0, 0, 0.4375, 0.5}, +			}, +		} +	} + +	local desc = S("%s Microblock"):format(fields.description) +	for alternate, def in pairs(defs) do +		def.drawtype = "nodebox" +		def.paramtype = "light" +		def.paramtype2 = "facedir" +		def.on_place = minetest.rotate_node +		for k, v in pairs(fields) do +			def[k] = v +		end +		def.description = desc +		if fields.drop then +			def.drop = modname..":micro_"..fields.drop..alternate +		end +		minetest.register_node(":"..modname..":micro_"..subname..alternate, def) +	end  	minetest.register_alias(modname..":micro_"..subname.."_bottom", modname..":micro_"..subname)  end  | 
