More Blocks
							
								
								
									
										13
									
								
								LICENSE.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,13 @@
 | 
			
		||||
+---- zlib/libpng license ----+
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2013 Calinou
 | 
			
		||||
 | 
			
		||||
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
 | 
			
		||||
 | 
			
		||||
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
 | 
			
		||||
 | 
			
		||||
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
 | 
			
		||||
 | 
			
		||||
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
 | 
			
		||||
 | 
			
		||||
3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
							
								
								
									
										22
									
								
								README.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,22 @@
 | 
			
		||||
Calinou's Minetest Mods
 | 
			
		||||
=====================
 | 
			
		||||
 | 
			
		||||
Calinou's Mods for Minetest [http://minetest.net], a free and opensource Minecraft-like game.
 | 
			
		||||
 | 
			
		||||
This Git repository is mostly made for servers; it allows easy updating.
 | 
			
		||||
 | 
			
		||||
To install, just clone this repository somewhere, then copy the "calinou_mods" folder in the "mods/minetest" folder of Minetest's installation folder.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Misc stuff
 | 
			
		||||
=====================
 | 
			
		||||
 | 
			
		||||
All these mods' source codes, except More Ores are under the zlib/libpng license. More Ores is under the GNU GPLv3; the mods' textures are under the CC BY-SA 3.0 Unported.
 | 
			
		||||
 | 
			
		||||
Mods' forum threads:
 | 
			
		||||
More Blocks: http://minetest.net/forum/viewtopic.php?id=509
 | 
			
		||||
More Ores: http://minetest.net/forum/viewtopic.php?id=549
 | 
			
		||||
Map Tools: http://minetest.net/forum/viewtopic.php?id=1882
 | 
			
		||||
Doors+: http://minetest.net/forum/viewtopic.php?id=2059
 | 
			
		||||
Stairs+: http://minetest.net/forum/viewtopic.php?id=2092
 | 
			
		||||
							
								
								
									
										11
									
								
								_config.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,11 @@
 | 
			
		||||
------------------------------------------------------------------------------
 | 
			
		||||
------------------------------ CONFIGURATION ---------------------------------
 | 
			
		||||
------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
------------------------------------------------------------------------------
 | 
			
		||||
-------- Change settings by changing the values after the "=". ---------------
 | 
			
		||||
------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- Whether to direct wood based on player yaw when placing the block
 | 
			
		||||
wood_facedir = true
 | 
			
		||||
							
								
								
									
										183
									
								
								aliases.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,183 @@
 | 
			
		||||
-- Aliases (some of them are about the default mod, some about moreblocks)
 | 
			
		||||
 | 
			
		||||
-- Additional default aliases
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("woodpick", "default:pick_wood")
 | 
			
		||||
minetest.register_alias("woodenpick", "default:pick_wood")
 | 
			
		||||
minetest.register_alias("stonepick", "default:pick_stone")
 | 
			
		||||
minetest.register_alias("steelpick", "default:pick_steel")
 | 
			
		||||
minetest.register_alias("ironpick", "default:pick_steel")
 | 
			
		||||
minetest.register_alias("mesepick", "default:pick_mese")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("woodaxe", "default:axe_wood")
 | 
			
		||||
minetest.register_alias("woodenaxe", "default:axe_wood")
 | 
			
		||||
minetest.register_alias("stoneaxe", "default:axe_stone")
 | 
			
		||||
minetest.register_alias("steelaxe", "default:axe_steel")
 | 
			
		||||
minetest.register_alias("ironaxe", "default:axe_steel")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("woodshovel", "default:shovel_wood")
 | 
			
		||||
minetest.register_alias("woodenshovel", "default:shovel_wood")
 | 
			
		||||
minetest.register_alias("stoneshovel", "default:shovel_stone")
 | 
			
		||||
minetest.register_alias("steelshovel", "default:shovel_steel")
 | 
			
		||||
minetest.register_alias("ironshovel", "default:shovel_steel")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("woodsword", "default:sword_wood")
 | 
			
		||||
minetest.register_alias("woodensword", "default:sword_wood")
 | 
			
		||||
minetest.register_alias("stonesword", "default:sword_stone")
 | 
			
		||||
minetest.register_alias("steelsword", "default:sword_steel")
 | 
			
		||||
minetest.register_alias("ironsword", "default:sword_steel")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("grass", "default:dirt_with_grass")
 | 
			
		||||
minetest.register_alias("grassblock", "default:dirt_with_grass")
 | 
			
		||||
minetest.register_alias("grass_block", "default:dirt_with_grass")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("grassfootsteps", "default:dirt_with_grass_footsteps")
 | 
			
		||||
minetest.register_alias("grass_footsteps", "default:dirt_with_grass_footsteps")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("jungle_tree", "default:jungletree")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("stick", "default:stick")
 | 
			
		||||
minetest.register_alias("sign", "default:sign_wall")
 | 
			
		||||
minetest.register_alias("fence", "default:fence_wood")
 | 
			
		||||
minetest.register_alias("coal", "default:coal_lump")
 | 
			
		||||
minetest.register_alias("iron", "default:iron_lump")
 | 
			
		||||
minetest.register_alias("clay", "default:clay_lump")
 | 
			
		||||
minetest.register_alias("steel", "default:steel_ingot")
 | 
			
		||||
minetest.register_alias("steel_block", "default:steelblock")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("stonebrick", "default:stonebrick")
 | 
			
		||||
minetest.register_alias("stonebricks", "default:stonebrick")
 | 
			
		||||
minetest.register_alias("stone_brick", "default:stonebrick")
 | 
			
		||||
minetest.register_alias("stone_bricks", "default:stonebrick")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("sweeper", "moreblocks:sweeper")
 | 
			
		||||
minetest.register_alias("circularsaw", "moreblocks:circular_saw")
 | 
			
		||||
minetest.register_alias("circular_saw", "moreblocks:circular_saw")
 | 
			
		||||
minetest.register_alias("screwdriver", "moreblocks:screwdriver")
 | 
			
		||||
minetest.register_alias("screw_driver", "moreblocks:screw_driver")
 | 
			
		||||
minetest.register_alias("screwdrive", "moreblocks:screw_driver")
 | 
			
		||||
minetest.register_alias("screw_drive", "moreblocks:screw_driver")
 | 
			
		||||
minetest.register_alias("sweep", "moreblocks:sweeper")
 | 
			
		||||
minetest.register_alias("junglestick", "moreblocks:jungle_stick")
 | 
			
		||||
minetest.register_alias("jungle_stick", "moreblocks:jungle_stick")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("obsidian", "default:obsidian")
 | 
			
		||||
minetest.register_alias("obsidianglass", "default:obsidian_glass")
 | 
			
		||||
minetest.register_alias("obsidian_glass", "default:obsidian_glass")
 | 
			
		||||
 | 
			
		||||
-- More Blocks aliases
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("circlestonebrick", "moreblocks:circle_stone_bricks")
 | 
			
		||||
minetest.register_alias("circlestonebricks", "moreblocks:circle_stone_bricks")
 | 
			
		||||
minetest.register_alias("circlestone_brick", "moreblocks:circle_stone_bricks")
 | 
			
		||||
minetest.register_alias("circlestone_bricks", "moreblocks:circle_stone_bricks")
 | 
			
		||||
minetest.register_alias("circle_stonebrick", "moreblocks:circle_stone_bricks")
 | 
			
		||||
minetest.register_alias("circle_stonebricks", "moreblocks:circle_stone_bricks")
 | 
			
		||||
minetest.register_alias("circle_stone_brick", "moreblocks:circle_stone_bricks")
 | 
			
		||||
minetest.register_alias("circle_stone_bricks", "moreblocks:circle_stone_bricks")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("stonesquare", "moreblocks:stone_tile")
 | 
			
		||||
minetest.register_alias("stonesquares", "moreblocks:stone_tile")
 | 
			
		||||
minetest.register_alias("stone_square", "moreblocks:stone_tile")
 | 
			
		||||
minetest.register_alias("stone_squares", "moreblocks:stone_tile")
 | 
			
		||||
minetest.register_alias("stonetile", "moreblocks:stone_tile")
 | 
			
		||||
minetest.register_alias("stonetiles", "moreblocks:stone_tile")
 | 
			
		||||
minetest.register_alias("stone_tile", "moreblocks:stone_tile")
 | 
			
		||||
minetest.register_alias("stone_tiles", "moreblocks:stone_tile")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("splitstonesquare", "moreblocks:split_stone_tile")
 | 
			
		||||
minetest.register_alias("splitstonesquares", "moreblocks:split_stone_tile")
 | 
			
		||||
minetest.register_alias("split_stone_square", "moreblocks:split_stone_tile")
 | 
			
		||||
minetest.register_alias("split_stone_squares", "moreblocks:split_stone_tile")
 | 
			
		||||
minetest.register_alias("split_stonesquare", "moreblocks:split_stone_tile")
 | 
			
		||||
minetest.register_alias("split_stonesquares", "moreblocks:split_stone_tile")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("coalstone", "moreblocks:coal_stone")
 | 
			
		||||
minetest.register_alias("coal_stone", "moreblocks:coal_stone")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("ironstone", "moreblocks:iron_stone")
 | 
			
		||||
minetest.register_alias("iron_stone", "moreblocks:iron_stone")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("coalglass", "moreblocks:coal_glass")
 | 
			
		||||
minetest.register_alias("coal_glass", "moreblocks:coal_glass")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("ironglass", "moreblocks:iron_glass")
 | 
			
		||||
minetest.register_alias("iron_glass", "moreblocks:iron_glass")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("glowglass", "moreblocks:glow_glass")
 | 
			
		||||
minetest.register_alias("glow_glass", "moreblocks:glow_glass")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("superglowglass", "moreblocks:super_glow_glass")
 | 
			
		||||
minetest.register_alias("super_glowglass", "moreblocks:super_glow_glass")
 | 
			
		||||
minetest.register_alias("super_glow_glass", "moreblocks:super_glow_glass")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("plankstone", "moreblocks:plankstone")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("cactusbrick", "moreblocks:cactus_brick")
 | 
			
		||||
minetest.register_alias("cactus_brick", "moreblocks:cactus_brick")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("cactuschecker", "moreblocks:cactus_checker")
 | 
			
		||||
minetest.register_alias("cactus_checker", "moreblocks:cactus_checker")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("coalchecker", "moreblocks:coal_checker")
 | 
			
		||||
minetest.register_alias("coal_checker", "moreblocks:coal_checker")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("ironchecker", "moreblocks:iron_checker")
 | 
			
		||||
minetest.register_alias("iron_checker", "moreblocks:iron_checker")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("woodtile", "moreblocks:wood_tile")
 | 
			
		||||
minetest.register_alias("woodentile", "moreblocks:wood_tile")
 | 
			
		||||
minetest.register_alias("wood_tile", "moreblocks:wood_tile")
 | 
			
		||||
minetest.register_alias("wooden_tile", "moreblocks:wood_tile")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("woodtile_full", "moreblocks:wood_tile_full")
 | 
			
		||||
minetest.register_alias("woodentile_full", "moreblocks:wood_tile_full")
 | 
			
		||||
minetest.register_alias("wood_tile_full", "moreblocks:wood_tile_full")
 | 
			
		||||
minetest.register_alias("wooden_tile_full", "moreblocks:wood_tile_full")
 | 
			
		||||
minetest.register_alias("full_woodtile", "moreblocks:wood_tile_full")
 | 
			
		||||
minetest.register_alias("full_woodentile", "moreblocks:wood_tile_full")
 | 
			
		||||
minetest.register_alias("full_wood_tile", "moreblocks:wood_tile_full")
 | 
			
		||||
minetest.register_alias("full_wooden_tile", "moreblocks:wood_tile_full")
 | 
			
		||||
 | 
			
		||||
-- Old block/item replacement
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("moreblocks:oerkkiblock", "default:mossycobble")
 | 
			
		||||
minetest.register_alias("moreblocks:screwdriver", "screwdriver:screwdriver")
 | 
			
		||||
 | 
			
		||||
-- Node and item renaming
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("moreblocks:stone_bricks", "default:stonebrick")
 | 
			
		||||
minetest.register_alias("moreblocks:stonebrick", "default:stonebrick")
 | 
			
		||||
minetest.register_alias("moreblocks:junglewood", "default:junglewood")
 | 
			
		||||
minetest.register_alias("moreblocks:jungle_wood", "default:junglewood")
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("moreblocks:horizontaltree", "moreblocks:horizontal_tree")
 | 
			
		||||
minetest.register_alias("moreblocks:horizontaljungletree", "moreblocks:horizontal_jungle_tree")
 | 
			
		||||
minetest.register_alias("moreblocks:stonesquare", "moreblocks:stone_tile")
 | 
			
		||||
minetest.register_alias("moreblocks:circlestonebrick", "moreblocks:circle_stone_bricks")
 | 
			
		||||
minetest.register_alias("moreblocks:ironstonebrick", "moreblocks:iron_stone_bricks")
 | 
			
		||||
minetest.register_alias("moreblocks:fence_junglewood", "moreblocks:fence_jungle_wood")
 | 
			
		||||
minetest.register_alias("moreblocks:coalstone", "moreblocks:coal_stone")
 | 
			
		||||
minetest.register_alias("moreblocks:ironstone", "moreblocks:iron_stone")
 | 
			
		||||
minetest.register_alias("moreblocks:woodtile", "moreblocks:wood_tile")
 | 
			
		||||
minetest.register_alias("moreblocks:woodtile_full", "moreblocks:wood_tile_full")
 | 
			
		||||
minetest.register_alias("moreblocks:woodtile_centered", "moreblocks:wood_tile_centered")
 | 
			
		||||
minetest.register_alias("moreblocks:woodtile_up", "moreblocks:wood_tile_up")
 | 
			
		||||
minetest.register_alias("moreblocks:woodtile_down", "moreblocks:wood_tile_down")
 | 
			
		||||
minetest.register_alias("moreblocks:woodtile_left", "moreblocks:wood_tile_left")
 | 
			
		||||
minetest.register_alias("moreblocks:woodtile_right", "moreblocks:wood_tile_right")
 | 
			
		||||
minetest.register_alias("moreblocks:coalglass", "moreblocks:coal_glass")
 | 
			
		||||
minetest.register_alias("moreblocks:ironglass", "moreblocks:iron_glass")
 | 
			
		||||
minetest.register_alias("moreblocks:glowglass", "moreblocks:glow_glass")
 | 
			
		||||
minetest.register_alias("moreblocks:superglowglass", "moreblocks:super_glow_glass")
 | 
			
		||||
minetest.register_alias("moreblocks:trapglass", "moreblocks:trap_glass")
 | 
			
		||||
minetest.register_alias("moreblocks:trapstone", "moreblocks:trap_stone")
 | 
			
		||||
minetest.register_alias("moreblocks:cactuschecker", "moreblocks:cactus_checker")
 | 
			
		||||
minetest.register_alias("moreblocks:coalchecker", "moreblocks:coal_checker")
 | 
			
		||||
minetest.register_alias("moreblocks:ironchecker", "moreblocks:iron_checker")
 | 
			
		||||
minetest.register_alias("moreblocks:cactusbrick", "moreblocks:cactus_brick")
 | 
			
		||||
minetest.register_alias("moreblocks:cleanglass", "moreblocks:clean_glass")
 | 
			
		||||
minetest.register_alias("moreblocks:emptybookshelf", "moreblocks:empty_bookshelf")
 | 
			
		||||
minetest.register_alias("moreblocks:junglestick", "moreblocks:jungle_stick")
 | 
			
		||||
minetest.register_alias("moreblocks:splitstonesquare","moreblocks:split_stone_tile")
 | 
			
		||||
minetest.register_alias("moreblocks:allfacestree","moreblocks:all_faces_tree")
 | 
			
		||||
							
								
								
									
										365
									
								
								circular_saw.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,365 @@
 | 
			
		||||
-- Load translation library if intllib is installed
 | 
			
		||||
 | 
			
		||||
local S
 | 
			
		||||
if (minetest.get_modpath("intllib")) then
 | 
			
		||||
	dofile(minetest.get_modpath("intllib").."/intllib.lua")
 | 
			
		||||
	S = intllib.Getter(minetest.get_current_modname())
 | 
			
		||||
	else
 | 
			
		||||
	S = function ( s ) return s end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
circular_saw = {};
 | 
			
		||||
 | 
			
		||||
circular_saw.known_stairs = {}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- Register known moreblocks stairs
 | 
			
		||||
for i,v in ipairs({"default:wood", "default:stone", "default:cobble", "default:mossycobble", "default:brick", "default:sandstone",
 | 
			
		||||
				"default:steelblock", "default:desert_stone", "default:glass", "default:tree", "default:jungletree", "default:stonebrick",
 | 
			
		||||
				"default:obsidian", "default:obsidian_glass", "default:stone_bricks", "default:junglewood", "default:goldblock",
 | 
			
		||||
				"default:copperblock", "default:bronzeblock", "default:diamondblock", "default:desert_stonebrick", "default:sandstonebrick",
 | 
			
		||||
 | 
			
		||||
				"moreblocks:coal_stone", "moreblocks:iron_stone", "moreblocks:coal_checker", "moreblocks:iron_checker",
 | 
			
		||||
				"moreblocks:cactus_checker", "moreblocks:coal_glass", "moreblocks:iron_glass", "moreblocks:glow_glass",
 | 
			
		||||
				"moreblocks:super_glow_glass", "moreblocks:wooden_tile", "moreblocks:stone_tile", "moreblocks:split_stone_tile",
 | 
			
		||||
				"moreblocks:iron_stone_bricks", "moreblocks:circle_stone_bricks", "moreblocks:wood_tile_centered", 
 | 
			
		||||
				"moreblocks:wood_tile_full", "moreblocks:plank_stone"}) do
 | 
			
		||||
	table.insert(circular_saw.known_stairs, v);
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
-- How many microblocks does this shape at the output inventory cost?
 | 
			
		||||
circular_saw.cost_in_microblocks = { 6, 7, 5, 3, 2, 4, 6,
 | 
			
		||||
								 2, 1, 4, 0, 0, 0, 0,
 | 
			
		||||
								 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
								 0, 0, 0, 0, 0, 0, 0 };
 | 
			
		||||
 | 
			
		||||
-- anz: amount of input material in microblocks
 | 
			
		||||
circular_saw.get_stair_output_inv = function(modname, material, anz, max)
 | 
			
		||||
 | 
			
		||||
	local max_offered = 99;
 | 
			
		||||
 | 
			
		||||
	if(not(max) or (max == nil) or tonumber(max) > 99 or tonumber(max) < 1) then
 | 
			
		||||
		max_offered = 99;
 | 
			
		||||
	else
 | 
			
		||||
		max_offered = tonumber(max);
 | 
			
		||||
	end
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	-- If there is nothing inside display empty inventory
 | 
			
		||||
	if(anz < 1) then
 | 
			
		||||
		return { "",  "",  "",  "",  "",  "",  "", 
 | 
			
		||||
				"",  "",  "",  "",  "",  "",  "", 
 | 
			
		||||
				"",  "",  "",  "",  "",  "",  "", 
 | 
			
		||||
				"",  "",  "",  "",  "",  "",  ""};
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	return { 
 | 
			
		||||
	modname .. ":stair_" .. material .. " "                        .. math.min(math.floor(anz/6), max_offered),
 | 
			
		||||
	modname .. ":stair_" .. material .. "_inner "                  .. math.min(math.floor(anz/7), max_offered),
 | 
			
		||||
	modname .. ":stair_" .. material .. "_outer "                  .. math.min(math.floor(anz/5), max_offered),
 | 
			
		||||
	modname .. ":stair_" .. material .. "_half "                   .. math.min(math.floor(anz/3), max_offered),
 | 
			
		||||
	modname .. ":slab_"  .. material .. "_quarter "                .. math.min(math.floor(anz/2), max_offered),
 | 
			
		||||
	modname .. ":slab_"  .. material .. " "                        .. math.min(math.floor(anz/4), max_offered),
 | 
			
		||||
	modname .. ":slab_"  .. material .. "_three_quarter "          .. math.min(math.floor(anz/6), max_offered),
 | 
			
		||||
	
 | 
			
		||||
	modname .. ":panel_" .. material .. "_bottom "                 .. math.min(math.floor(anz/2), max_offered),
 | 
			
		||||
	modname .. ":micro_" .. material .. "_bottom "                 .. math.min(math.floor(anz/1), max_offered),
 | 
			
		||||
	modname .. ":stair_" .. material .. "_alt "                    .. math.min(math.floor(anz/4), max_offered),
 | 
			
		||||
	"", 
 | 
			
		||||
	}
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- Reset empty circular_saw after last full block has been taken out (or the circular_saw has been placed the first tiem); note: max_offered is not reset
 | 
			
		||||
circular_saw.reset_circular_saw = function(pos)
 | 
			
		||||
	local meta = minetest.env:get_meta(pos);
 | 
			
		||||
	local inv  = meta:get_inventory();
 | 
			
		||||
 | 
			
		||||
	inv:set_list("input",  { "" });
 | 
			
		||||
	inv:set_list("micro",  { "" });
 | 
			
		||||
	inv:set_list("output",  circular_saw.get_stair_output_inv("",  "",  0, meta:get_string("max_offered")));
 | 
			
		||||
	meta:set_int("anz",  0);
 | 
			
		||||
 | 
			
		||||
	meta:set_string("infotext",  "Circular saw, empty (owned by " .. (meta:get_string("owner") or "") .. ")");
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- Player has taken something out of the box or placed something inside; that amounts to count microblocks
 | 
			
		||||
circular_saw.update_inventory = function(pos, amount)
 | 
			
		||||
	local meta = minetest.env:get_meta(pos);
 | 
			
		||||
	local inv  = meta:get_inventory();
 | 
			
		||||
	local akt  = meta:get_int("anz");
 | 
			
		||||
 | 
			
		||||
	-- The material is receicled automaticly
 | 
			
		||||
	inv:set_list("recycle",  { "" });
 | 
			
		||||
 | 
			
		||||
	if(akt + amount < 1) then -- If the last block is taken out
 | 
			
		||||
 | 
			
		||||
		circular_saw.reset_circular_saw(pos);
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	end
 | 
			
		||||
 
 | 
			
		||||
	local stack = inv:get_stack("input",  1);
 | 
			
		||||
	-- At least one "normal" block is necessary to see what kind of stairs are requested
 | 
			
		||||
	if(stack:is_empty()) then
 | 
			
		||||
 | 
			
		||||
		-- Any microblocks not taken out yet are now lost (covers material loss in the machine)
 | 
			
		||||
		circular_saw.reset_circular_saw(pos);
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	end
 | 
			
		||||
	local node_name = stack:get_name();
 | 
			
		||||
	local liste = node_name:split(":");
 | 
			
		||||
	local modname  = liste[1];
 | 
			
		||||
	local material = liste[2];
 | 
			
		||||
	
 | 
			
		||||
	-- Display as many full blocks as possible
 | 
			
		||||
	inv:set_list("input",   { modname.. ":" .. material .. " " .. math.floor(   (akt + amount) / 8) });
 | 
			
		||||
 | 
			
		||||
	-- The stairnodes made of default nodes use moreblocks namespace, other mods keep own.
 | 
			
		||||
	if(modname == "default") then modname = "moreblocks"; end
 | 
			
		||||
	--print("circular_saw set to " ..modname.. " : " ..material.. " with " .. (akt+amount) .. " microblocks.");
 | 
			
		||||
 | 
			
		||||
	-- 0-7 microblocks may remain as a rest
 | 
			
		||||
	inv:set_list("micro",   { modname.. ":micro_" .. material .. "_bottom " .. ((akt + amount) % 8) });
 | 
			
		||||
	-- Display 
 | 
			
		||||
	inv:set_list("output",  circular_saw.get_stair_output_inv(modname, material,  (akt + amount), meta:get_string("max_offered")));
 | 
			
		||||
	-- Store how many microblocks are available
 | 
			
		||||
	meta:set_int("anz",  (akt+amount));
 | 
			
		||||
 | 
			
		||||
	meta:set_string("infotext",  "Circular saw, working with " ..material.. " (owned by " .. (meta:get_string("owner") or "") .. ")");
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- The amount of items offered per shape can be configured
 | 
			
		||||
circular_saw.on_receive_fields = function(pos, formname, fields, sender)
 | 
			
		||||
	local meta = minetest.env:get_meta(pos);
 | 
			
		||||
	if(fields.max_offered  and tonumber(fields.max_offered) > 0 and tonumber(fields.max_offered) < 99) then
 | 
			
		||||
		meta:set_string("max_offered",  fields.max_offered);
 | 
			
		||||
		circular_saw.update_inventory(pos, 0); -- update to show the correct number of items
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- Moving the inventory of the circular_saw around is not allowed because it is a fictional inventory
 | 
			
		||||
circular_saw.allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
 | 
			
		||||
	-- Moving inventory around would be rather immpractical and make things more difficult to calculate
 | 
			
		||||
	return 0;
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- Only input- and recycle-slot are intended as input slots
 | 
			
		||||
circular_saw.allow_metadata_inventory_put = function(pos, listname, index, stack, player)
 | 
			
		||||
 
 | 
			
		||||
	-- The player is not allowed to put something in there
 | 
			
		||||
	if(listname == "output" or listname == "micro") then
 | 
			
		||||
		return 0;
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	local meta = minetest.env:get_meta(pos);
 | 
			
		||||
	local inv  = meta:get_inventory();
 | 
			
		||||
			
 | 
			
		||||
	-- Only alow those items that are offered in the output inventory to be recycled
 | 
			
		||||
	if(listname == "recycle" and not(inv:contains_item("output",  stack:get_name()))) then
 | 
			
		||||
		return 0;
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	-- Only accept certain blocks as input which are known to be craftable into stairs
 | 
			
		||||
	if(listname == "input") then
 | 
			
		||||
	 
 | 
			
		||||
		for i,v in ipairs(circular_saw.known_stairs) do
 | 
			
		||||
 | 
			
		||||
		if(circular_saw.known_stairs[ i ] == stack:get_name()) then
 | 
			
		||||
			return stack:get_count();
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		end
 | 
			
		||||
		return 0;
 | 
			
		||||
		
 | 
			
		||||
	end
 | 
			
		||||
 
 | 
			
		||||
	return stack:get_count()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Taking is allowed from all slots (even the internal microblock slot)
 | 
			
		||||
 | 
			
		||||
-- Putting something in is slightly more complicated than taking anything because we have to make sure it is of a suitable material
 | 
			
		||||
circular_saw.on_metadata_inventory_put = function(pos, listname, index, stack, player)
 | 
			
		||||
 | 
			
		||||
	-- We need to find out if the circular_saw is already set to a specific material or not
 | 
			
		||||
	local meta = minetest.env:get_meta(pos);
 | 
			
		||||
	local inv  = meta:get_inventory();
 | 
			
		||||
 | 
			
		||||
	-- Putting something into the input slot is only possible if that had been empty before or did contain something of the same material
 | 
			
		||||
	if(    listname=="input") then
 | 
			
		||||
 | 
			
		||||
		-- Each new block is worth 8 microblocks
 | 
			
		||||
		circular_saw.update_inventory(pos, 8 * stack:get_count());
 | 
			
		||||
		
 | 
			
		||||
	elseif(listname=="recycle") then
 | 
			
		||||
 
 | 
			
		||||
		-- Lets look which shape this represents
 | 
			
		||||
		for i,v in ipairs(inv:get_list("output")) do
 | 
			
		||||
				
 | 
			
		||||
		 if(v:get_name() == stack:get_name()) then
 | 
			
		||||
		
 | 
			
		||||
			local value = circular_saw.cost_in_microblocks[ i ] * stack:get_count();
 | 
			
		||||
			--print("\nRecycling " .. (v:get_name()) .. " into " ..value.. " microblocks.");
 | 
			
		||||
 | 
			
		||||
			-- We get value microblocks back
 | 
			
		||||
			circular_saw.update_inventory(pos, value);
 | 
			
		||||
		 end
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- The player takes something
 | 
			
		||||
circular_saw.on_metadata_inventory_take = function(pos, listname, index, stack, player)
 | 
			
		||||
			
 | 
			
		||||
	-- If it is one of the offered stairs: find out how many microblocks have to be substracted
 | 
			
		||||
	if(listname=="output") then
 | 
			
		||||
 | 
			
		||||
		-- We do know how much each block at each position costs
 | 
			
		||||
		local cost = circular_saw.cost_in_microblocks[ index ] * stack:get_count();
 | 
			
		||||
 | 
			
		||||
		circular_saw.update_inventory(pos, -1 * cost);
 | 
			
		||||
 | 
			
		||||
	elseif(listname=="mikro") then
 | 
			
		||||
 | 
			
		||||
		-- Each microblock costs 1 microblock
 | 
			
		||||
		circular_saw.update_inventory(pos, -1 * 1 * stack:get_count());
 | 
			
		||||
 | 
			
		||||
	elseif(listname=="input") then
 | 
			
		||||
	
 | 
			
		||||
		-- Each normal (= full) block taken costs 8 microblocks
 | 
			
		||||
		circular_saw.update_inventory(pos, -1 * 8 * stack:get_count());
 | 
			
		||||
 | 
			
		||||
	end
 | 
			
		||||
	-- The recycle field plays no role here since it is processed immediately
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
circular_saw.on_construct_init = function(pos, formspec)
 | 
			
		||||
 | 
			
		||||
	local meta = minetest.env:get_meta(pos)
 | 
			
		||||
	meta:set_string("formspec",  formspec); 
 | 
			
		||||
 | 
			
		||||
	meta:set_int(   "anz",          0); -- No microblocks inside yet
 | 
			
		||||
	meta:set_string("max_offered",  99); -- How many items of this kind are offered by default?
 | 
			
		||||
	meta:set_string("infotext",     "Circular saw, empty")
 | 
			
		||||
 | 
			
		||||
	local inv = meta:get_inventory()
 | 
			
		||||
	inv:set_size("input",      1)  -- Input slot for full blocks of material x
 | 
			
		||||
	inv:set_size("micro",      1)  -- Storage for 1-7 surplus microblocks
 | 
			
		||||
	inv:set_size("recycle",    1)  -- Surplus partial blocks can be placed here
 | 
			
		||||
	inv:set_size("output",    28) -- 4*7 versions of stair-parts of material x
 | 
			
		||||
 | 
			
		||||
	circular_saw.reset_circular_saw(pos);
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
circular_saw.can_dig = function(pos,player)
 | 
			
		||||
	local meta = minetest.env:get_meta(pos);
 | 
			
		||||
	local inv = meta:get_inventory()
 | 
			
		||||
	if not inv:is_empty("input") then
 | 
			
		||||
		return false
 | 
			
		||||
	elseif not inv:is_empty("micro") then
 | 
			
		||||
		return false
 | 
			
		||||
	elseif not inv:is_empty("recycle") then
 | 
			
		||||
		return false
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	-- Can be digged by anyone when empty (not only by the owner)
 | 
			
		||||
	return true
 | 
			
		||||
end,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:circular_saw",  {
 | 
			
		||||
		description = S("Circular Saw"), 
 | 
			
		||||
		drawtype = "nodebox", 
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed", 
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{-0.4, -0.5, -0.4, -0.25, 0.25, -0.25}, -- Leg
 | 
			
		||||
				{0.25, -0.5, 0.25, 0.4, 0.25, 0.4}, -- Leg
 | 
			
		||||
				{-0.4, -0.5, 0.25, -0.25, 0.25, 0.4}, -- Leg 
 | 
			
		||||
				{0.25, -0.5, -0.4, 0.4, 0.25, -0.25}, -- Leg
 | 
			
		||||
				{-0.5, 0.25, -0.5, 0.5, 0.375, 0.5}, -- Tabletop
 | 
			
		||||
				{-0.01, 0.4375, -0.125, 0.01, 0.5, 0.125}, -- Saw blade (top)
 | 
			
		||||
				{-0.01, 0.375, -0.1875, 0.01, 0.4375, 0.1875}, -- Saw blade (bottom)
 | 
			
		||||
				{-0.25, -0.0625, -0.25, 0.25, 0.25, 0.25}, -- Motor case
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		selection_box = {
 | 
			
		||||
			type = "fixed", 
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{-0.4, -0.5, -0.4, -0.25, 0.25, -0.25}, -- Leg
 | 
			
		||||
				{0.25, -0.5, 0.25, 0.4, 0.25, 0.4}, -- Leg
 | 
			
		||||
				{-0.4, -0.5, 0.25, -0.25, 0.25, 0.4}, -- Leg 
 | 
			
		||||
				{0.25, -0.5, -0.4, 0.4, 0.25, -0.25}, -- Leg
 | 
			
		||||
				{-0.5, 0.25, -0.5, 0.5, 0.375, 0.5}, -- Tabletop
 | 
			
		||||
				{-0.01, 0.4375, -0.125, 0.01, 0.5, 0.125}, -- Saw blade (top)
 | 
			
		||||
				{-0.01, 0.375, -0.1875, 0.01, 0.4375, 0.1875}, -- Saw blade (bottom)
 | 
			
		||||
				{-0.25, -0.0625, -0.25, 0.25, 0.25, 0.25}, -- Motor case
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		tiles = {"moreblocks_circular_saw_top.png",  "moreblocks_circular_saw_bottom.png",  "moreblocks_circular_saw_side.png"},
 | 
			
		||||
		paramtype = "light", 
 | 
			
		||||
		sunlight_propagates = true,
 | 
			
		||||
		paramtype2 = "facedir", 
 | 
			
		||||
		groups = {cracky=2},
 | 
			
		||||
		on_construct = function(pos)
 | 
			
		||||
			return circular_saw.on_construct_init(pos,
 | 
			
		||||
					 "size[10,9]" ..
 | 
			
		||||
					 "list[current_name;input;0,0;1,1;]" ..
 | 
			
		||||
					"label[0,0;Input material]" ..
 | 
			
		||||
					 "list[current_name;micro;0,1;1,1;]" ..
 | 
			
		||||
					"label[0,1;Rest/microblocks]" ..
 | 
			
		||||
					 "field[0.3,2.5;1,1;max_offered;Max:;${max_offered}]" ..
 | 
			
		||||
					 "button[1,2;1,1;Set;Set]" ..
 | 
			
		||||
					 "list[current_name;recycle;0,3;1,1;]" ..
 | 
			
		||||
					"label[0,3;Recycle output]" ..
 | 
			
		||||
					 "list[current_name;output;2,0;7,4;]" ..
 | 
			
		||||
					 "list[current_player;main;1,5;8,4;]");
 | 
			
		||||
		end,
 | 
			
		||||
 | 
			
		||||
		can_dig = function(pos,player)
 | 
			
		||||
			return circular_saw.can_dig(pos, player);
 | 
			
		||||
		end,
 | 
			
		||||
 | 
			
		||||
		-- Set owner of this circular saw
 | 
			
		||||
		after_place_node = function(pos, placer)
 | 
			
		||||
			local meta = minetest.env:get_meta(pos);
 | 
			
		||||
			
 | 
			
		||||
			meta:set_string("owner",  (placer:get_player_name() or ""));
 | 
			
		||||
			meta:set_string("infotext",  "Circular saw is empty (owned by " .. (placer:get_player_name() or "") .. ")");
 | 
			
		||||
		end,
 | 
			
		||||
 | 
			
		||||
		-- The amount of items offered per shape can be configured
 | 
			
		||||
		on_receive_fields = function(pos, formname, fields, sender)
 | 
			
		||||
			return circular_saw.on_receive_fields(pos, formname, fields, sender);
 | 
			
		||||
		end,
 | 
			
		||||
 | 
			
		||||
		allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
 | 
			
		||||
			return circular_saw.allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player);     
 | 
			
		||||
		end,
 | 
			
		||||
 | 
			
		||||
		-- Only input- and recycle-slot are intended as input slots
 | 
			
		||||
		allow_metadata_inventory_put = function(pos, listname, index, stack, player)
 | 
			
		||||
			return circular_saw.allow_metadata_inventory_put(pos, listname, index, stack, player); 
 | 
			
		||||
		end,
 | 
			
		||||
 | 
			
		||||
		-- Taking is allowed from all slots (even the internal microblock slot); moving is forbidden
 | 
			
		||||
 | 
			
		||||
		-- Putting something in is slightly more complicated than taking anything because we have to make sure it is of a suitable material
 | 
			
		||||
		on_metadata_inventory_put = function(pos, listname, index, stack, player)
 | 
			
		||||
			return circular_saw.on_metadata_inventory_put(pos, listname, index, stack, player);
 | 
			
		||||
		end,
 | 
			
		||||
 | 
			
		||||
		on_metadata_inventory_take = function(pos, listname, index, stack, player)
 | 
			
		||||
			return circular_saw.on_metadata_inventory_take(pos, listname, index, stack, player);
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										375
									
								
								crafting.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,375 @@
 | 
			
		||||
-- Crafting
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:stick 1",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:dry_shrub"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:dirt_with_grass 1",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:junglegrass"},
 | 
			
		||||
		{"default:dirt"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:dirt_with_grass 1",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:mese"},
 | 
			
		||||
		{"default:dirt"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:mossycobble 1",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:junglegrass"},
 | 
			
		||||
		{"default:cobble"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:mossycobble 1",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:mese"},
 | 
			
		||||
		{"default:cobble"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:woodtile 9",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:wood", "default:wood", "default:wood"},
 | 
			
		||||
		{"default:wood", "default:wood", "default:wood"},
 | 
			
		||||
		{"default:wood", "default:wood", "default:wood"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:woodtile_flipped 1",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"moreblocks:woodtile"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:woodtile_center 9",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:wood", "default:wood", "default:wood"},
 | 
			
		||||
		{"default:wood", "moreblocks:woodtile", "default:wood"},
 | 
			
		||||
		{"default:wood", "default:wood", "default:wood"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:woodtile_full 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"moreblocks:woodtile", "moreblocks:woodtile"},
 | 
			
		||||
		{"moreblocks:woodtile", "moreblocks:woodtile"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:woodtile_up 1",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:stick"},
 | 
			
		||||
		{"moreblocks:woodtile_center"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:woodtile_down 1",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"moreblocks:woodtile_center"},
 | 
			
		||||
		{"default:stick"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:woodtile_left 1",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:stick", "moreblocks:woodtile_center"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:woodtile_right 1",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"moreblocks:woodtile_center", "default:stick"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:junglestick 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:junglewood"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:fence_jungle_wood 2",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"moreblocks:jungle_stick", "moreblocks:jungle_stick", "moreblocks:jungle_stick"},
 | 
			
		||||
		{"moreblocks:jungle_stick", "moreblocks:jungle_stick", "moreblocks:jungle_stick"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:circle_stone_bricks 8",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:stone", "default:stone", "default:stone"},
 | 
			
		||||
		{"default:stone", "", "default:stone"},
 | 
			
		||||
		{"default:stone", "default:stone", "default:stone"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:all_faces_tree 8",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:tree", "default:tree", "default:tree"},
 | 
			
		||||
		{"default:tree", "", "default:tree"},
 | 
			
		||||
		{"default:tree", "default:tree", "default:tree"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:all_faces_jungle_tree 8",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:jungletree", "default:jungletree", "default:jungletree"},
 | 
			
		||||
		{"default:jungletree", "", "default:jungletree"},
 | 
			
		||||
		{"default:jungletree", "default:jungletree", "default:jungletree"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:sweeper 3",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:junglegrass"},
 | 
			
		||||
		{"default:stick"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:stone_tile 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:cobble", "default:cobble"},
 | 
			
		||||
		{"default:cobble", "default:cobble"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:split_stone_tile 1",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"moreblocks:stone_tile"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:empty_bookshelf 1",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"moreblocks:sweeper"},
 | 
			
		||||
		{"default:bookshelf"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:iron_stone_bricks 1",
 | 
			
		||||
	type = "shapeless",
 | 
			
		||||
	recipe = {"default:steel_ingot", "default:stone_brick"},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:wood 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"moreblocks:horizontal_tree"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:junglewood 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"moreblocks:horizontal_jungle_tree"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:plankstone 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:stone", "default:wood"},
 | 
			
		||||
		{"default:wood", "default:stone"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:plankstone 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:wood", "default:stone"},
 | 
			
		||||
		{"default:stone", "default:wood"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:coal_checker 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:stone", "default:coal_lump"},
 | 
			
		||||
		{"default:coal_lump", "default:stone"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:coal_checker 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:coal_lump", "default:stone"},
 | 
			
		||||
		{"default:stone", "default:coal_lump"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:iron_checker 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:steel_ingot", "default:stone"},
 | 
			
		||||
		{"default:stone", "default:steel_ingot"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:iron_checker 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:stone", "default:steel_ingot"},
 | 
			
		||||
		{"default:steel_ingot", "default:stone"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:chest_locked 1",
 | 
			
		||||
	type = "shapeless",
 | 
			
		||||
	recipe = {"default:steel_ingot", "default:chest"},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:iron_glass 1",
 | 
			
		||||
	type = "shapeless",
 | 
			
		||||
	recipe = {"default:steel_ingot", "default:glass"},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:coal_glass 1",
 | 
			
		||||
	type = "shapeless",
 | 
			
		||||
	recipe = {"default:coal_lump", "default:glass"},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:clean_glass 1",
 | 
			
		||||
	type = "shapeless",
 | 
			
		||||
	recipe = {"moreblocks:sweeper", "default:glass"},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:glow_glass 1",
 | 
			
		||||
	type = "shapeless",
 | 
			
		||||
	recipe = {"default:torch", "default:glass"},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:super_glow_glass 1",
 | 
			
		||||
	type = "shapeless",
 | 
			
		||||
	recipe = {"default:torch", "default:torch", "default:glass"},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:coal_stone 1",
 | 
			
		||||
	type = "shapeless",
 | 
			
		||||
	recipe = {"default:coal_lump", "default:stone"},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:iron_stone 1",
 | 
			
		||||
	type = "shapeless",
 | 
			
		||||
	recipe = {"default:iron_lump", "default:stone"},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:trap_stone 12",
 | 
			
		||||
	type = "shapeless",
 | 
			
		||||
	recipe = {"default:mese", "default:stone"},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:trap_glass 12",
 | 
			
		||||
	type = "shapeless",
 | 
			
		||||
	recipe = {"default:mese", "default:glass"},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:cactus_brick 1",
 | 
			
		||||
	type = "shapeless",
 | 
			
		||||
	recipe = {"default:cactus", "default:brick"},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:cactus_checker 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:cactus", "default:stone"},
 | 
			
		||||
		{"default:stone", "default:cactus"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:cactuschecker 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:stone", "default:cactus"},
 | 
			
		||||
		{"default:cactus", "default:stone"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:rope 2",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:junglegrass"},
 | 
			
		||||
		{"default:junglegrass"},
 | 
			
		||||
		{"default:junglegrass"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:horizontal_tree 2",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:tree", "", "default:tree"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:tree 2",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"moreblocks:horizontal_tree"},
 | 
			
		||||
		{"moreblocks:horizontal_tree"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "moreblocks:horizontal_jungle_tree 2",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:jungletree", "", "default:jungletree"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:jungletree 2",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"moreblocks:horizontal_jungle_tree"},
 | 
			
		||||
		{"moreblocks:horizontal_jungle_tree"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
		output = "moreblocks:circular_saw 1", 
 | 
			
		||||
		recipe = {
 | 
			
		||||
				{ "",  "default:steel_ingot",  "" },
 | 
			
		||||
				{ "default:tree",  "default:tree",  "default:tree"},
 | 
			
		||||
				{ "default:tree",  "",  "default:tree"},
 | 
			
		||||
		}
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										1
									
								
								depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
default
 | 
			
		||||
							
								
								
									
										358
									
								
								init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,358 @@
 | 
			
		||||
-- Load translation library if intllib is installed
 | 
			
		||||
 | 
			
		||||
local S
 | 
			
		||||
if (minetest.get_modpath("intllib")) then
 | 
			
		||||
	dofile(minetest.get_modpath("intllib").."/intllib.lua")
 | 
			
		||||
	S = intllib.Getter(minetest.get_current_modname())
 | 
			
		||||
	else
 | 
			
		||||
	S = function ( s ) return s end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
dofile(minetest.get_modpath("moreblocks").."/_config.txt")
 | 
			
		||||
 | 
			
		||||
dofile(minetest.get_modpath("moreblocks").."/redefinitions.lua")
 | 
			
		||||
dofile(minetest.get_modpath("moreblocks").."/crafting.lua")
 | 
			
		||||
dofile(minetest.get_modpath("moreblocks").."/aliases.lua")
 | 
			
		||||
dofile(minetest.get_modpath("moreblocks").."/stairsplus_convert.lua")
 | 
			
		||||
dofile(minetest.get_modpath("moreblocks").."/stairsplus/stairs.lua")
 | 
			
		||||
dofile(minetest.get_modpath("moreblocks").."/stairsplus/slabs.lua")
 | 
			
		||||
dofile(minetest.get_modpath("moreblocks").."/stairsplus/panels.lua")
 | 
			
		||||
dofile(minetest.get_modpath("moreblocks").."/stairsplus/microblocks.lua")
 | 
			
		||||
dofile(minetest.get_modpath("moreblocks").."/stairsplus/aliases.lua")
 | 
			
		||||
dofile(minetest.get_modpath("moreblocks").."/stairsplus.lua")
 | 
			
		||||
dofile(minetest.get_modpath("moreblocks").."/circular_saw.lua")
 | 
			
		||||
 | 
			
		||||
print(S("[moreblocks] loaded."))
 | 
			
		||||
 | 
			
		||||
--[[
 | 
			
		||||
****
 | 
			
		||||
More Blocks
 | 
			
		||||
by Calinou
 | 
			
		||||
Licensed under the zlib/libpng license for code and CC BY-SA for textures, see LICENSE.txt for info.
 | 
			
		||||
****
 | 
			
		||||
--]]
 | 
			
		||||
 | 
			
		||||
-- Blocks
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:wood_tile", {
 | 
			
		||||
	description = S("Wooden Tile"),
 | 
			
		||||
	tiles = {"moreblocks_wood_tile.png", "moreblocks_wood_tile.png", "moreblocks_wood_tile.png", "moreblocks_wood_tile.png", "moreblocks_wood_tile.png^[transformR90", "moreblocks_wood_tile.png^[transformR90"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:wood_tile_flipped", {
 | 
			
		||||
	description = S("Wooden Tile"),
 | 
			
		||||
	tiles = {"moreblocks_wood_tile_flipped.png", "moreblocks_wood_tile_flipped.png", "moreblocks_wood_tile_flipped.png", "moreblocks_wood_tile_flipped.png", "moreblocks_wood_tile_flipped.png^[transformR90", "moreblocks_wood_tile_flipped.png^[transformR90"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:wood_tile_center", {
 | 
			
		||||
	description = S("Centered Wooden Tile"),
 | 
			
		||||
	tiles = {"moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png^[transformR90", "moreblocks_wood_tile_center.png^[transformR90"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:wood_tile_full", {
 | 
			
		||||
	description = S("Full Wooden Tile"),
 | 
			
		||||
	tiles = {"moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png",
 | 
			
		||||
	"moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png^[transformR90", "moreblocks_wood_tile_full.png^[transformR90"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:wood_tile_up", {
 | 
			
		||||
	description = S("Up Wooden Tile"),
 | 
			
		||||
	tiles = {"moreblocks_wood_tile_up.png", "moreblocks_wood_tile_up.png", "moreblocks_wood_tile_up.png",
 | 
			
		||||
	"moreblocks_wood_tile_up.png", "moreblocks_wood_tile_up.png^[transformR90", "moreblocks_wood_tile_up.png^[transformR90"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:wood_tile_down", {
 | 
			
		||||
	description = S("Down Wooden Tile"),
 | 
			
		||||
	tiles = {"moreblocks_wood_tile_down.png", "moreblocks_wood_tile_down.png", "moreblocks_wood_tile_down.png",
 | 
			
		||||
	"moreblocks_wood_tile_down.png", "moreblocks_wood_tile_down.png^[transformR90", "moreblocks_wood_tile_down.png^[transformR90"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:wood_tile_left", {
 | 
			
		||||
	description = S("Left Wooden Tile"),
 | 
			
		||||
	tiles = {"moreblocks_wood_tile_left.png", "moreblocks_wood_tile_left.png", "moreblocks_wood_tile_left.png",
 | 
			
		||||
	"moreblocks_wood_tile_left.png", "moreblocks_wood_tile_left.png^[transformR90", "moreblocks_wood_tile_left.png^[transformR90"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:wood_tile_right", {
 | 
			
		||||
	description = S("Right Wooden Tile"),
 | 
			
		||||
	tiles = {"moreblocks_wood_tile_right.png", "moreblocks_wood_tile_right.png", "moreblocks_wood_tile_right.png",
 | 
			
		||||
	"moreblocks_wood_tile_right.png", "moreblocks_wood_tile_right.png^[transformR90", "moreblocks_wood_tile_right.png^[transformR90"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:circle_stone_bricks", {
 | 
			
		||||
	description = S("Circle Stone Bricks"),
 | 
			
		||||
	tiles = {"moreblocks_circle_stone_bricks.png"},
 | 
			
		||||
	groups = {cracky=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:iron_stone_bricks", {
 | 
			
		||||
	description = S("Iron Stone Bricks"),
 | 
			
		||||
	tiles = {"moreblocks_iron_stone_bricks.png"},
 | 
			
		||||
	groups = {cracky=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:stone_tile", {
 | 
			
		||||
	description = S("Stone Tile"),
 | 
			
		||||
	tiles = {"moreblocks_stone_tile.png"},
 | 
			
		||||
	groups = {cracky=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:split_stone_tile", {
 | 
			
		||||
	description = S("Split Stone Tile"),
 | 
			
		||||
	tiles = {"moreblocks_split_stone_tile_top.png", "moreblocks_split_stone_tile.png"},
 | 
			
		||||
	groups = {cracky=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:plankstone", {
 | 
			
		||||
	description = S("Plankstone"),
 | 
			
		||||
	tiles = {"moreblocks_plankstone.png", "moreblocks_plankstone.png", "moreblocks_plankstone.png",
 | 
			
		||||
	"moreblocks_plankstone.png", "moreblocks_plankstone.png^[transformR90", "moreblocks_plankstone.png^[transformR90"},
 | 
			
		||||
	groups = {cracky=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:iron_glass", {
 | 
			
		||||
	description = S("Iron Glass"),
 | 
			
		||||
	drawtype = "glasslike",
 | 
			
		||||
	tiles = {"moreblocks_iron_glass.png"},
 | 
			
		||||
	inventory_image = minetest.inventorycube("moreblocks_iron_glass.png"),
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
 | 
			
		||||
	sounds = default.node_sound_glass_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:coal_glass", {
 | 
			
		||||
	description = S("Coal Glass"),
 | 
			
		||||
	drawtype = "glasslike",
 | 
			
		||||
	tiles = {"moreblocks_coal_glass.png"},
 | 
			
		||||
	inventory_image = minetest.inventorycube("moreblocks_coal_glass.png"),
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
 | 
			
		||||
	sounds = default.node_sound_glass_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:clean_glass", {
 | 
			
		||||
	description = S("Clean Glass"),
 | 
			
		||||
	drawtype = "glasslike",
 | 
			
		||||
	tiles = {"moreblocks_clean_glass.png"},
 | 
			
		||||
	inventory_image = minetest.inventorycube("moreblocks_clean_glass.png"),
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
 | 
			
		||||
	sounds = default.node_sound_glass_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:cactus_brick", {
 | 
			
		||||
	description = S("Cactus Brick"),
 | 
			
		||||
	tiles = {"moreblocks_cactus_brick.png"},
 | 
			
		||||
	groups = {cracky=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:cactus_checker", {
 | 
			
		||||
	description = S("Cactus Checker"),
 | 
			
		||||
	tiles = {"moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png",
 | 
			
		||||
	"moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png^[transformR90", "moreblocks_cactus_checker.png^[transformR90"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {cracky=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:empty_bookshelf", {
 | 
			
		||||
	description = S("Empty Bookshelf"),
 | 
			
		||||
	tiles = {"default_wood.png", "default_wood.png", "moreblocks_empty_bookshelf.png"},
 | 
			
		||||
	groups = {snappy=2,choppy=3,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:coal_stone", {
 | 
			
		||||
	description = S("Coal Stone"),
 | 
			
		||||
	tiles = {"moreblocks_coal_stone.png"},
 | 
			
		||||
	groups = {cracky=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:iron_stone", {
 | 
			
		||||
	description = S("Iron Stone"),
 | 
			
		||||
	tiles = {"moreblocks_iron_stone.png"},
 | 
			
		||||
	groups = {cracky=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:coal_checker", {
 | 
			
		||||
	description = S("Coal Checker"),
 | 
			
		||||
	tiles = {"moreblocks_coal_checker.png", "moreblocks_coal_checker.png", "moreblocks_coal_checker.png",
 | 
			
		||||
	"moreblocks_coal_checker.png", "moreblocks_coal_checker.png^[transformR90", "moreblocks_coal_checker.png^[transformR90"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {cracky=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:iron_checker", {
 | 
			
		||||
	description = S("Iron Checker"),
 | 
			
		||||
	tiles = {"moreblocks_iron_checker.png", "moreblocks_iron_checker.png", "moreblocks_iron_checker.png",
 | 
			
		||||
	"moreblocks_iron_checker.png", "moreblocks_iron_checker.png^[transformR90", "moreblocks_iron_checker.png^[transformR90"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {cracky=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:trap_stone", {
 | 
			
		||||
	description = S("Trap Stone"),
 | 
			
		||||
	tiles = {"moreblocks_trap_stone.png"},
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	groups = {cracky=3},
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:trap_glass", {
 | 
			
		||||
	description = S("Trap Glass"),
 | 
			
		||||
	drawtype = "glasslike",
 | 
			
		||||
	tiles = {"moreblocks_trap_glass.png"},
 | 
			
		||||
	inventory_image = minetest.inventorycube("moreblocks_trap_glass.png"),
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
 | 
			
		||||
	sounds = default.node_sound_glass_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:fence_jungle_wood", {
 | 
			
		||||
	description = S("Jungle Wood Fence"),
 | 
			
		||||
	drawtype = "fencelike",
 | 
			
		||||
	tiles = {"moreblocks_jungle_wood.png"},
 | 
			
		||||
	inventory_image = "moreblocks_fence_jungle_wood.png",
 | 
			
		||||
	wield_image = "moreblocks_fence_jungle_wood.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
 | 
			
		||||
	},
 | 
			
		||||
	groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=2},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:horizontal_tree", {
 | 
			
		||||
	description = S("Horizontal Tree"),
 | 
			
		||||
	tiles = {"default_tree.png", "default_tree.png", "default_tree.png^[transformR90",
 | 
			
		||||
	"default_tree.png^[transformR90", "default_tree_top.png", "default_tree_top.png"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	furnace_burntime = 30,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:horizontal_jungle_tree", {
 | 
			
		||||
	description = S("Horizontal Jungle Tree"),
 | 
			
		||||
	tiles = {"default_jungletree.png", "default_jungletree.png", "default_jungletree.png^[transformR90",
 | 
			
		||||
	"default_jungletree.png^[transformR90", "default_jungletree_top.png", "default_jungletree_top.png"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	furnace_burntime = 30,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:all_faces_tree", {
 | 
			
		||||
	description = S("All-faces Tree"),
 | 
			
		||||
	tiles = {"default_tree_top.png"},
 | 
			
		||||
	groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	furnace_burntime = 30,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:all_faces_jungle_tree", {
 | 
			
		||||
	description = S("All-faces Tree"),
 | 
			
		||||
	tiles = {"default_jungletree_top.png"},
 | 
			
		||||
	groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	furnace_burntime = 30,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:glow_glass", {
 | 
			
		||||
	description = S("Glow Glass"),
 | 
			
		||||
	drawtype = "glasslike",
 | 
			
		||||
	tiles = {"moreblocks_glow_glass.png"},
 | 
			
		||||
	inventory_image = minetest.inventorycube("moreblocks_glow_glass.png"),
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	light_source = 11,
 | 
			
		||||
	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
 | 
			
		||||
	sounds = default.node_sound_glass_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:super_glow_glass", {
 | 
			
		||||
	description = S("Super Glow Glass"),
 | 
			
		||||
	drawtype = "glasslike",
 | 
			
		||||
	tiles = {"moreblocks_super_glow_glass.png"},
 | 
			
		||||
	inventory_image = minetest.inventorycube("moreblocks_super_glow_glass.png"),
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	light_source = 15,
 | 
			
		||||
	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
 | 
			
		||||
	sounds = default.node_sound_glass_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("moreblocks:rope", {
 | 
			
		||||
	description = S("Rope"),
 | 
			
		||||
	drawtype = "signlike",
 | 
			
		||||
	tiles = {"moreblocks_rope.png"},
 | 
			
		||||
	inventory_image = "moreblocks_rope.png",
 | 
			
		||||
	wield_image = "moreblocks_rope.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "wallmounted",
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	climbable = true,
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "wallmounted",
 | 
			
		||||
	},
 | 
			
		||||
	groups = {snappy=3,flammable=2},
 | 
			
		||||
	sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Items
 | 
			
		||||
 | 
			
		||||
minetest.register_craftitem("moreblocks:sweeper", {
 | 
			
		||||
	description = S("Sweeper"),
 | 
			
		||||
	inventory_image = "moreblocks_sweeper.png",
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craftitem("moreblocks:jungle_stick", {
 | 
			
		||||
	description = S("Jungle Stick"),
 | 
			
		||||
	inventory_image = "moreblocks_junglestick.png",
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craftitem("moreblocks:nothing", {
 | 
			
		||||
	inventory_image = "invisible.png",
 | 
			
		||||
	on_use = minetest.item_eat(0),
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										52
									
								
								locale/es.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,52 @@
 | 
			
		||||
# Translation by kaeza
 | 
			
		||||
 | 
			
		||||
[moreblocks] loaded. = [moreblocks] cargado.
 | 
			
		||||
 | 
			
		||||
Jungle Wooden Planks = Tablones de madera de jungla
 | 
			
		||||
Empty Bookshelf = Estante para libros vacío
 | 
			
		||||
Clean Glass = Cristal Limpio
 | 
			
		||||
Plankstone = Tablones de piedra
 | 
			
		||||
Wooden Tile = Parquet
 | 
			
		||||
Full Wooden Tile = Parquet Completo
 | 
			
		||||
Centered Wooden Tile = Parquet Centrado
 | 
			
		||||
Up Wooden Tile = Parquet Superior
 | 
			
		||||
Down Wooden Tile = Parquet Inferior
 | 
			
		||||
Left Wooden Tile = Parquet Izquierdo
 | 
			
		||||
Right Wooden Tile = Parquet Derecho
 | 
			
		||||
Circle Stone Bricks = Bloques de Piedra Circulares
 | 
			
		||||
Stone Tile = Baldosa de Piedra
 | 
			
		||||
Split Stone Tile = Baldosas de Piedra Partida
 | 
			
		||||
Glow Glass = Cristal Brillante
 | 
			
		||||
Super Glow Glass = Cristal Súper Brillante
 | 
			
		||||
Coal Glass = Cristal con Carbón
 | 
			
		||||
Iron Glass = Cristal con Hierro
 | 
			
		||||
Coal Checker = Cuadros de Carbón
 | 
			
		||||
Iron Checker = Cuadros de Hierro
 | 
			
		||||
Trap Stone = Piedra Trampa
 | 
			
		||||
Trap Glass = Cristal Trampa
 | 
			
		||||
Coal Stone = Carbón y Piedra
 | 
			
		||||
Iron Stone = Hierro y Piedra
 | 
			
		||||
Cactus Checker = Cuadros de Cactus
 | 
			
		||||
Cactus Brick = Ladrillos de Cactus
 | 
			
		||||
Sweeper = Limpiador
 | 
			
		||||
Jungle Stick = Varita de Madera de Jungla
 | 
			
		||||
Horizontal Tree = Tronco de árbol horizontal
 | 
			
		||||
Horizontal Jungle Tree = Tronco de árbol de la jungla horizontal
 | 
			
		||||
Rope = Soga
 | 
			
		||||
All-faces Tree = Tronco de Árbol
 | 
			
		||||
 | 
			
		||||
%s Stairs = Escalera de %s
 | 
			
		||||
%s Slab = Losa de %s
 | 
			
		||||
%s Panel = Panel de %s
 | 
			
		||||
%s Microblock = Microbloque de %s
 | 
			
		||||
 | 
			
		||||
Wooden = Madera
 | 
			
		||||
Papyrus = Papiro
 | 
			
		||||
Dry Shrub = Arbusto Desértico
 | 
			
		||||
Sapling = Brote de Árbol
 | 
			
		||||
Wooden Planks = Tablones de Madera
 | 
			
		||||
Ladder = Escalera de Mano
 | 
			
		||||
Glass = Cristal
 | 
			
		||||
 | 
			
		||||
%s Pane = Panel de %s
 | 
			
		||||
%s Fence = Valla de %s
 | 
			
		||||
							
								
								
									
										54
									
								
								locale/fr.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,54 @@
 | 
			
		||||
# Translation by Calinou
 | 
			
		||||
 | 
			
		||||
[moreblocks] loaded. = [moreblocks] a été chargé.
 | 
			
		||||
 | 
			
		||||
Jungle Wooden Planks = Planches de bois de jungle
 | 
			
		||||
Empty Bookshelf = Étagère vide
 | 
			
		||||
Clean Glass = Verre propre
 | 
			
		||||
Plankstone = Pierre-bois
 | 
			
		||||
Wooden Tile = Dalle en bois
 | 
			
		||||
Full Wooden Tile = Dalle en bois complète
 | 
			
		||||
Centered Wooden Tile = Dalle en bois centrée
 | 
			
		||||
Up Wooden Tile = Dalle en bois vers le haut
 | 
			
		||||
Down Wooden Tile = Dalle en bois vers le bas
 | 
			
		||||
Left Wooden Tile = Dalle en bois vers la gauche
 | 
			
		||||
Right Wooden Tile = Dalle en bois vers la droite
 | 
			
		||||
Circle Stone Bricks = Briques en pierre circulaires
 | 
			
		||||
Stone Tile = Dalle en pierre
 | 
			
		||||
Split Stone Tile = Dalle en pierre découpée
 | 
			
		||||
Glow Glass = Verre brillant
 | 
			
		||||
Super Glow Glass = Verre très brillant
 | 
			
		||||
Coal Glass = Verre en charbon
 | 
			
		||||
Iron Glass = Verre en fer
 | 
			
		||||
Coal Checker = Damier en charbon
 | 
			
		||||
Iron Checker = Damier en fer
 | 
			
		||||
Trap Stone = Pierre à piège
 | 
			
		||||
Trap Glass = Verre à piège
 | 
			
		||||
Coal Stone = Pierre en charbon
 | 
			
		||||
Iron Stone = Pierre en fer
 | 
			
		||||
Cactus Checker = Damier en cactus
 | 
			
		||||
Cactus Brick = Briques en cactus
 | 
			
		||||
Sweeper = Balai
 | 
			
		||||
Jungle Stick = Bâton en bois de jungle
 | 
			
		||||
Horizontal Tree = Tronc d'arbre horizontal
 | 
			
		||||
Horizontal Jungle Tree = Tronc d'arbre de jungle horizontal
 | 
			
		||||
Rope = Corde
 | 
			
		||||
All-faces Tree = Tronc d'arbre
 | 
			
		||||
 | 
			
		||||
Wooden = bois
 | 
			
		||||
Papyrus = Papyrus
 | 
			
		||||
Dry Shrub = Buisson mort
 | 
			
		||||
Sapling = Pousse d'arbre
 | 
			
		||||
Wooden Planks = Planches de bois
 | 
			
		||||
Ladder = Échelle
 | 
			
		||||
Glass = Verre
 | 
			
		||||
 | 
			
		||||
Circular Saw = Scie circulaire
 | 
			
		||||
 | 
			
		||||
%s Stairs = Escaliers en %s
 | 
			
		||||
%s Slab = Demi-dalle en %s
 | 
			
		||||
%s Panel = Barre en %s
 | 
			
		||||
%s Microblock = Microbloc en %s
 | 
			
		||||
 | 
			
		||||
%s Pane = Panneau en %s
 | 
			
		||||
%s Fence = Barrière en %s
 | 
			
		||||
							
								
								
									
										287
									
								
								redefinitions.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,287 @@
 | 
			
		||||
-- Redefinitions of some default crafting recipes
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:sign_wall 4",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:wood", "default:wood", "default:wood"},
 | 
			
		||||
		{"default:wood", "default:wood", "default:wood"},
 | 
			
		||||
		{"", "default:stick", ""},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:ladder 3",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:stick", "", "default:stick"},
 | 
			
		||||
		{"default:stick", "default:stick", "default:stick"},
 | 
			
		||||
		{"default:stick", "", "default:stick"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:paper 3",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:papyrus", "default:papyrus", "default:papyrus"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:rail 16",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:steel_ingot", "", "default:steel_ingot"},
 | 
			
		||||
		{"default:steel_ingot", "default:stick", "default:steel_ingot"},
 | 
			
		||||
		{"default:steel_ingot", "", "default:steel_ingot"},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:axe_wood",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:wood", "default:wood"},
 | 
			
		||||
		{"default:stick", "default:wood"},
 | 
			
		||||
		{"default:stick", ""},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:axe_stone",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:cobble", "default:cobble"},
 | 
			
		||||
		{"default:stick", "default:cobble"},
 | 
			
		||||
		{"default:stick", ""},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "default:axe_steel",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{"default:steel_ingot", "default:steel_ingot"},
 | 
			
		||||
		{"default:stick", "default:steel_ingot"},
 | 
			
		||||
		{"default:stick", ""},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Tool repair buff (15% bonus instead of 2%)
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	type = "toolrepair",
 | 
			
		||||
	additional_wear = -0.15,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Redefinitions of some default nodes
 | 
			
		||||
 | 
			
		||||
minetest.register_node(":default:ladder", {
 | 
			
		||||
	description = "Ladder",
 | 
			
		||||
	drawtype = "signlike",
 | 
			
		||||
	tiles = {"default_ladder.png"},
 | 
			
		||||
	inventory_image = "default_ladder.png",
 | 
			
		||||
	wield_image = "default_ladder.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	paramtype2 = "wallmounted",
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	climbable = true,
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "wallmounted",
 | 
			
		||||
	},
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=3,flammable=2},
 | 
			
		||||
	legacy_wallmounted = true,
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
if wood_facedir == true
 | 
			
		||||
then
 | 
			
		||||
minetest.register_node(":default:wood", {
 | 
			
		||||
	description = "Wooden Planks",
 | 
			
		||||
	tiles = {"default_wood.png"},
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
minetest.register_node(":default:sapling", {
 | 
			
		||||
	description = "Sapling",
 | 
			
		||||
	drawtype = "plantlike",
 | 
			
		||||
	visual_scale = 1.0,
 | 
			
		||||
	tiles = {"default_sapling.png"},
 | 
			
		||||
	inventory_image = "default_sapling.png",
 | 
			
		||||
	wield_image = "default_sapling.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
 | 
			
		||||
	},
 | 
			
		||||
	groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1},
 | 
			
		||||
	sounds = default.node_sound_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node(":default:dry_shrub", {
 | 
			
		||||
	description = "Dry Shrub",
 | 
			
		||||
	drawtype = "plantlike",
 | 
			
		||||
	visual_scale = 1.0,
 | 
			
		||||
	tiles = {"default_dry_shrub.png"},
 | 
			
		||||
	inventory_image = "default_dry_shrub.png",
 | 
			
		||||
	wield_image = "default_dry_shrub.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	groups = {snappy=3,flammable=3,attached_node=1},
 | 
			
		||||
	sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-1/3, -1/2, -1/3, 1/3, 1/6, 1/3},
 | 
			
		||||
	},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node(":default:papyrus", {
 | 
			
		||||
	description = "Papyrus",
 | 
			
		||||
	drawtype = "plantlike",
 | 
			
		||||
	tiles = {"default_papyrus.png"},
 | 
			
		||||
	inventory_image = "default_papyrus.png",
 | 
			
		||||
	wield_image = "default_papyrus.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
 | 
			
		||||
	},
 | 
			
		||||
	groups = {snappy=3,flammable=2},
 | 
			
		||||
	sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node(":default:fence_wood", {
 | 
			
		||||
	description = "Wooden Fence",
 | 
			
		||||
	drawtype = "fencelike",
 | 
			
		||||
	tiles = {"default_wood.png"},
 | 
			
		||||
	inventory_image = "default_fence.png",
 | 
			
		||||
	wield_image = "default_fence.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
 | 
			
		||||
	},
 | 
			
		||||
	groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node(":default:grass_1", {
 | 
			
		||||
	description = "Grass",
 | 
			
		||||
	drawtype = "plantlike",
 | 
			
		||||
	tiles = {"default_grass_1.png"},
 | 
			
		||||
	inventory_image = "default_grass_1.png",
 | 
			
		||||
	wield_image = "default_grass_1.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	groups = {snappy=3,flammable=3,attached_node=1},
 | 
			
		||||
	sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.5, -0.5, -0.5, 0.5, -0.3125, 0.5},
 | 
			
		||||
	},
 | 
			
		||||
	on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
		-- place a random grass node
 | 
			
		||||
		local stack = ItemStack("default:grass_" .. math.random(1,5))
 | 
			
		||||
		local ret = minetest.item_place(stack, placer, pointed_thing)
 | 
			
		||||
		return ItemStack("default:grass_1 " .. itemstack:get_count()-(1-ret:get_count()))
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node(":default:grass_2", {
 | 
			
		||||
	description = "Grass",
 | 
			
		||||
	drawtype = "plantlike",
 | 
			
		||||
	tiles = {"default_grass_2.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	drop = "default:grass_1",
 | 
			
		||||
	groups = {snappy=3,flammable=3,attached_node=1,not_in_creative_inventory=1},
 | 
			
		||||
	sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.5, -0.5, -0.5, 0.5, -0.3125, 0.5},
 | 
			
		||||
	},
 | 
			
		||||
})
 | 
			
		||||
minetest.register_node(":default:grass_3", {
 | 
			
		||||
	description = "Grass",
 | 
			
		||||
	drawtype = "plantlike",
 | 
			
		||||
	tiles = {"default_grass_3.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	drop = "default:grass_1",
 | 
			
		||||
	groups = {snappy=3,flammable=3,attached_node=1,not_in_creative_inventory=1},
 | 
			
		||||
	sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.5, -0.5, -0.5, 0.5, -0.3125, 0.5},
 | 
			
		||||
	},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node(":default:grass_4", {
 | 
			
		||||
	description = "Grass",
 | 
			
		||||
	drawtype = "plantlike",
 | 
			
		||||
	tiles = {"default_grass_4.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	drop = "default:grass_1",
 | 
			
		||||
	groups = {snappy=3,flammable=3,attached_node=1,not_in_creative_inventory=1},
 | 
			
		||||
	sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.5, -0.5, -0.5, 0.5, -0.3125, 0.5},
 | 
			
		||||
	},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node(":default:grass_5", {
 | 
			
		||||
	description = "Grass",
 | 
			
		||||
	drawtype = "plantlike",
 | 
			
		||||
	tiles = {"default_grass_5.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	drop = "default:grass_1",
 | 
			
		||||
	groups = {snappy=3,flammable=3,attached_node=1,not_in_creative_inventory=1},
 | 
			
		||||
	sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.5, -0.5, -0.5, 0.5, -0.3125, 0.5},
 | 
			
		||||
	},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node(":default:junglegrass", {
 | 
			
		||||
	description = "Jungle Grass",
 | 
			
		||||
	drawtype = "plantlike",
 | 
			
		||||
	visual_scale = 1.25,
 | 
			
		||||
	tiles = {"default_junglegrass.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	groups = {snappy=3,flammable=2,attached_node=1},
 | 
			
		||||
	sounds = default.node_sound_leaves_defaults(),
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.5, -0.5, -0.5, 0.5, -0.3125, 0.5},
 | 
			
		||||
	},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node(":default:junglesapling", {
 | 
			
		||||
	description = "Jungle Sapling",
 | 
			
		||||
	drawtype = "plantlike",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	tiles = {"default_junglesapling.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
 | 
			
		||||
	},
 | 
			
		||||
	groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1},
 | 
			
		||||
	sounds = default.node_sound_defaults(),
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										434
									
								
								stairsplus.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,434 @@
 | 
			
		||||
-- Nodes will be called <modname>:{stair,slab,panel,micro}_<subname>
 | 
			
		||||
 | 
			
		||||
if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then
 | 
			
		||||
	stairsplus_expect_infinite_stacks = false
 | 
			
		||||
else
 | 
			
		||||
	stairsplus_expect_infinite_stacks = true
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- these vales are in order: facedir in degrees = 90, 0, 270, 180, 90
 | 
			
		||||
 | 
			
		||||
local dirs1 = { 21, 20, 23, 22, 21 }
 | 
			
		||||
local dirs2 = { 15, 8, 17, 6, 15 }
 | 
			
		||||
local dirs3 = { 14, 11, 16, 5, 14 }
 | 
			
		||||
 | 
			
		||||
stairsplus_players_onwall = {}
 | 
			
		||||
 | 
			
		||||
minetest.register_chatcommand("st", {
 | 
			
		||||
	params = "",
 | 
			
		||||
	description = "Toggle stairsplus between placing wall/vertical stairs/panels and normal.",
 | 
			
		||||
	func = function(name, param)
 | 
			
		||||
		stairsplus_players_onwall[name] = not stairsplus_players_onwall[name]
 | 
			
		||||
 | 
			
		||||
		if stairsplus_players_onwall[name] then
 | 
			
		||||
			 minetest.chat_send_player(name, "Stairsplus:  Placing wall stairs/vertical panels.")
 | 
			
		||||
		else
 | 
			
		||||
			 minetest.chat_send_player(name, "Stairsplus:  Placing floor/ceiling stairs/panels.")
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
stairsplus_can_it_stack = function(itemstack, placer, pointed_thing)
 | 
			
		||||
	return false
 | 
			
		||||
--[[
 | 
			
		||||
	if pointed_thing.type ~= "node" then
 | 
			
		||||
		return itemstack
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	-- If it's being placed on an another similar one, replace it with
 | 
			
		||||
	-- a full block
 | 
			
		||||
	local slabpos = nil
 | 
			
		||||
	local slabnode = nil
 | 
			
		||||
	local p1 = pointed_thing.above
 | 
			
		||||
	p1 = {x = p1.x, y = p1.y - 1, z = p1.z}
 | 
			
		||||
	local n1 = minetest.env:get_node(p1)
 | 
			
		||||
	if n1.name == modname .. ":slab_" .. subname then
 | 
			
		||||
		slabpos = p1
 | 
			
		||||
		slabnode = n1
 | 
			
		||||
	end
 | 
			
		||||
	if slabpos then
 | 
			
		||||
		-- Remove the slab at slabpos
 | 
			
		||||
		minetest.env:remove_node(slabpos)
 | 
			
		||||
		-- Make a fake stack of a single item and try to place it
 | 
			
		||||
		local fakestack = ItemStack(recipeitem)
 | 
			
		||||
		pointed_thing.above = slabpos
 | 
			
		||||
		fakestack = minetest.item_place(fakestack, placer, pointed_thing)
 | 
			
		||||
		-- If the item was taken from the fake stack, decrement original
 | 
			
		||||
		if not fakestack or fakestack:is_empty() then
 | 
			
		||||
			itemstack:take_item(1)
 | 
			
		||||
		-- Else put old node back
 | 
			
		||||
		else
 | 
			
		||||
			minetest.env:set_node(slabpos, slabnode)
 | 
			
		||||
		end
 | 
			
		||||
		return itemstack
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	if n1.name == modname .. ":slab_" .. subname .. "_quarter" then
 | 
			
		||||
		slabpos = p1
 | 
			
		||||
		slabnode = n1
 | 
			
		||||
	end
 | 
			
		||||
	if slabpos then
 | 
			
		||||
		-- Remove the slab at slabpos
 | 
			
		||||
		minetest.env:remove_node(slabpos)
 | 
			
		||||
		-- Make a fake stack of a single item and try to place it
 | 
			
		||||
		local fakestack = ItemStack(modname .. ":slab_" .. subname .. "_three_quarter")
 | 
			
		||||
		pointed_thing.above = slabpos
 | 
			
		||||
		fakestack = minetest.item_place(fakestack, placer, pointed_thing)
 | 
			
		||||
		-- If the item was taken from the fake stack, decrement original
 | 
			
		||||
		if not fakestack or fakestack:is_empty() then
 | 
			
		||||
			itemstack:take_item(1)
 | 
			
		||||
		-- Else put old node back
 | 
			
		||||
		else
 | 
			
		||||
			minetest.env:set_node(slabpos, slabnode)
 | 
			
		||||
		end
 | 
			
		||||
		return itemstack
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	-- Otherwise place regularly
 | 
			
		||||
	return minetest.item_place(itemstack, placer, pointed_thing)
 | 
			
		||||
 | 
			
		||||
]]--
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function get_nodedef_field(nodename, fieldname)
 | 
			
		||||
	if not minetest.registered_nodes[nodename] then
 | 
			
		||||
		return nil
 | 
			
		||||
	end
 | 
			
		||||
	return minetest.registered_nodes[nodename][fieldname]
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function stairsplus_rotate_and_place(itemstack, placer, pointed_thing, onwall)
 | 
			
		||||
 | 
			
		||||
	local node = minetest.env:get_node(pointed_thing.under)
 | 
			
		||||
 | 
			
		||||
	if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then
 | 
			
		||||
 | 
			
		||||
		local above = pointed_thing.above
 | 
			
		||||
		local under = pointed_thing.under
 | 
			
		||||
		local top = {x=under.x, y=under.y+1, z=under.z}
 | 
			
		||||
 | 
			
		||||
		local pitch = placer:get_look_pitch()
 | 
			
		||||
		local node = minetest.env:get_node(above)
 | 
			
		||||
		local fdir = minetest.dir_to_facedir(placer:get_look_dir())
 | 
			
		||||
		local wield_name = itemstack:get_name()
 | 
			
		||||
 | 
			
		||||
		local slab = string.find(wield_name, "slab")
 | 
			
		||||
		local panel = string.find(wield_name, "panel")
 | 
			
		||||
		local micro = string.find(wield_name, "micro")
 | 
			
		||||
		local iswall = (above.x ~= under.x) or (above.z ~= under.z)
 | 
			
		||||
		local isceiling = (above.x == under.x) and (above.z == under.z) and (pitch > 0)
 | 
			
		||||
 | 
			
		||||
		if get_nodedef_field(minetest.env:get_node(under).name, "buildable_to") then
 | 
			
		||||
			if slab then fdir = 0 end
 | 
			
		||||
			minetest.env:add_node(under, {name = wield_name, param2 = fdir }) -- place right side up
 | 
			
		||||
		elseif not get_nodedef_field(minetest.env:get_node(above).name, "buildable_to") then
 | 
			
		||||
			return
 | 
			
		||||
		elseif onwall or (iswall and (slab or panel)) then 
 | 
			
		||||
			if slab then
 | 
			
		||||
				minetest.env:add_node(above, {name = wield_name, param2 = dirs2[fdir+2] }) -- place with wall slab rotation
 | 
			
		||||
			else
 | 
			
		||||
				minetest.env:add_node(above, {name = wield_name, param2 = dirs3[fdir+2] }) -- place with wall panel/micro rotation
 | 
			
		||||
			end
 | 
			
		||||
		elseif isceiling then
 | 
			
		||||
			local nfdir = dirs1[fdir+2]
 | 
			
		||||
			if slab then nfdir = 22 end
 | 
			
		||||
			minetest.env:add_node(above, {name = wield_name, param2 = nfdir }) -- place upside down variant
 | 
			
		||||
		else
 | 
			
		||||
			if slab then fdir = 0 end
 | 
			
		||||
			minetest.env:add_node(above, {name = wield_name, param2 = fdir }) -- place right side up
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		if not stairsplus_expect_infinite_stacks then
 | 
			
		||||
			itemstack:take_item()
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	else
 | 
			
		||||
		minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer)
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function register_stair_slab_panel_micro(modname, subname, recipeitem, groups, images, description, drop, light)
 | 
			
		||||
	register_stair(modname, subname, recipeitem, groups, images, description, drop, light)
 | 
			
		||||
	register_slab( modname, subname, recipeitem, groups, images, description, drop, light)
 | 
			
		||||
	register_panel(modname, subname, recipeitem, groups, images, description, drop, light)
 | 
			
		||||
	register_micro(modname, subname, recipeitem, groups, images, description, drop, light)
 | 
			
		||||
	register_6dfacedir_conversion(modname, subname)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Default stairs/slabs/panels/microblocks
 | 
			
		||||
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "wood", "default:wood",
 | 
			
		||||
	{not_in_creative_inventory=1,snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	{"default_wood.png"},
 | 
			
		||||
	"Wooden",
 | 
			
		||||
	"wood",
 | 
			
		||||
	0)
 | 
			
		||||
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "stone", "default:stone",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"default_stone.png"},
 | 
			
		||||
	"Stone",
 | 
			
		||||
	"cobble",
 | 
			
		||||
	0)
 | 
			
		||||
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "cobble", "default:cobble",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"default_cobble.png"},
 | 
			
		||||
	"Cobblestone",
 | 
			
		||||
	"cobble",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "mossycobble", "default:mossycobble",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"default_mossycobble.png"},
 | 
			
		||||
	"Mossy Cobblestone",
 | 
			
		||||
	"mossycobble",
 | 
			
		||||
	0)
 | 
			
		||||
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "brick", "default:brick",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"default_brick.png"},
 | 
			
		||||
	"Brick",
 | 
			
		||||
	"brick",
 | 
			
		||||
	0)
 | 
			
		||||
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "sandstone", "default:sandstone",
 | 
			
		||||
	{not_in_creative_inventory=1,crumbly=2,cracky=2},
 | 
			
		||||
	{"default_sandstone.png"},
 | 
			
		||||
	"Sandstone",
 | 
			
		||||
	"sandstone",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "steelblock", "default:steelblock",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=1,level=2},
 | 
			
		||||
	{"default_steel_block.png"},
 | 
			
		||||
	"Steel Block",
 | 
			
		||||
	"steelblock",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "goldblock", "default:goldblock",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=1},
 | 
			
		||||
	{"default_gold_block.png"},
 | 
			
		||||
	"Gold Block",
 | 
			
		||||
	"goldblock",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "copperblock", "default:copperblock",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=1,level=2},
 | 
			
		||||
	{"default_copper_block.png"},
 | 
			
		||||
	"Copper Block",
 | 
			
		||||
	"copperblock",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "bronzeblock", "default:bronzeblock",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=1,level=2},
 | 
			
		||||
	{"default_bronze_block.png"},
 | 
			
		||||
	"Bronze Block",
 | 
			
		||||
	"bronzeblock",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "diamondblock", "default:diamondblock",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=1,level=3},
 | 
			
		||||
	{"default_diamond_block.png"},
 | 
			
		||||
	"Diamond Block",
 | 
			
		||||
	"diamondblock",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "desert_stone", "default:desert_stone",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"default_desert_stone.png"},
 | 
			
		||||
	"Desert Stone",
 | 
			
		||||
	"desert_stone",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "glass", "default:glass",
 | 
			
		||||
	{not_in_creative_inventory=1,snappy=2,cracky=3,oddly_breakable_by_hand=3},
 | 
			
		||||
	{"moreblocks_glass_stairsplus.png"},
 | 
			
		||||
	"Glass",
 | 
			
		||||
	"glass",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "tree", "default:tree",
 | 
			
		||||
	{not_in_creative_inventory=1,tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
 | 
			
		||||
	{"default_tree_top.png", "default_tree_top.png", "default_tree.png"},
 | 
			
		||||
	"Tree",
 | 
			
		||||
	"tree",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "jungletree", "default:jungletree",
 | 
			
		||||
	{not_in_creative_inventory=1,tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
 | 
			
		||||
	{"default_jungletree_top.png", "default_jungletree_top.png", "default_jungletree.png"},
 | 
			
		||||
	"Jungle Tree",
 | 
			
		||||
	"jungletree",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "obsidian", "default:obsidian",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=1,level=2},
 | 
			
		||||
	{"default_obsidian.png"},
 | 
			
		||||
	"Obsidian",
 | 
			
		||||
	"obsidian",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "obsidian_glass", "default:obsidian_glass",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3,oddly_breakable_by_hand=3},
 | 
			
		||||
	{"moreblocks_obsidian_glass_stairsplus.png"},
 | 
			
		||||
	"Obsidian Glass",
 | 
			
		||||
	"obsidian_glass",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "stonebrick", "default:stonebrick",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"default_stone_brick.png"},
 | 
			
		||||
	"Stone Bricks",
 | 
			
		||||
	"stone_bricks",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "desert_stonebrick", "default:desert_stonebrick",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"default_desert_stone_brick.png"},
 | 
			
		||||
	"Desert Stone Bricks",
 | 
			
		||||
	"desert_stonebrick",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "sandstonebrick", "default:sandstonebrick",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"default_sandstone_brick.png"},
 | 
			
		||||
	"Sandstone Bricks",
 | 
			
		||||
	"sandstonebrick",
 | 
			
		||||
	0)
 | 
			
		||||
 | 
			
		||||
-- More Blocks stairs/slabs/panels/microblocks
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "circle_stone_bricks", "moreblocks:circle_stone_bricks",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"moreblocks_circle_stone_bricks.png"},
 | 
			
		||||
	"Circle Stone Bricks",
 | 
			
		||||
	"circle_stone_bricks",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "iron_stone_bricks", "moreblocks:iron_stone_bricks",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"moreblocks_iron_stone_bricks.png"},
 | 
			
		||||
	"Iron Stone Bricks",
 | 
			
		||||
	"iron_stone_bricks",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "stone_tile", "moreblocks:stone_tile",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"moreblocks_stone_tile.png"},
 | 
			
		||||
	"Stonesquare",
 | 
			
		||||
	"stone_tile",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "split_stone_tile", "moreblocks:split_stone_tile",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"moreblocks_split_stone_tile_top.png", "moreblocks_split_stone_tile.png"},
 | 
			
		||||
	"Split Stonesquare",
 | 
			
		||||
	"split_stone_tile",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "jungle_wood", "default:junglewood",
 | 
			
		||||
	{not_in_creative_inventory=1,snappy=1, choppy=2, oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	{"default_junglewood.png"},
 | 
			
		||||
	"Jungle Wood",
 | 
			
		||||
	"jungle_wood",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "plankstone", "moreblocks:plankstone",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"moreblocks_plankstone.png", "moreblocks_plankstone.png", "moreblocks_plankstone.png",
 | 
			
		||||
	"moreblocks_plankstone.png", "moreblocks_plankstone.png^[transformR90", "moreblocks_plankstone.png^[transformR90"},
 | 
			
		||||
	"Plankstone",
 | 
			
		||||
	"plankstone",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "coal_checker", "moreblocks:coal_checker",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"moreblocks_coal_checker.png", "moreblocks_coal_checker.png", "moreblocks_coal_checker.png",
 | 
			
		||||
	"moreblocks_coal_checker.png", "moreblocks_coal_checker.png^[transformR90", "moreblocks_coal_checker.png^[transformR90"},
 | 
			
		||||
	"Coal Checker",
 | 
			
		||||
	"coal_checker",
 | 
			
		||||
	0)
 | 
			
		||||
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "iron_checker", "moreblocks:iron_checker",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"moreblocks_iron_checker.png", "moreblocks_iron_checker.png", "moreblocks_iron_checker.png",
 | 
			
		||||
	"moreblocks_iron_checker.png", "moreblocks_iron_checker.png^[transformR90", "moreblocks_iron_checker.png^[transformR90"},
 | 
			
		||||
	"Iron Checker",
 | 
			
		||||
	"iron_checker",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "cactus_checker", "moreblocks:cactus_checker",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png",
 | 
			
		||||
	"moreblocks_cactus_checker.png", "moreblocks_cactus_checker.png^[transformR90", "moreblocks_cactus_checker.png^[transformR90"},
 | 
			
		||||
	"Cactus Checker",
 | 
			
		||||
	"cactus_checker",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "coal_stone", "moreblocks:coal_stone",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"moreblocks_coal_stone.png"},
 | 
			
		||||
	"Coal Stone",
 | 
			
		||||
	"coal_stone",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "iron_stone", "moreblocks:iron_stone",
 | 
			
		||||
	{not_in_creative_inventory=1,cracky=3},
 | 
			
		||||
	{"moreblocks_iron_stone.png"},
 | 
			
		||||
	"Iron Stone",
 | 
			
		||||
	"iron_stone",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "glow_glass", "moreblocks:glow_glass",
 | 
			
		||||
	{not_in_creative_inventory=1,snappy=2,cracky=3,oddly_breakable_by_hand=3},
 | 
			
		||||
	{"moreblocks_glow_glass_stairsplus.png"},
 | 
			
		||||
	"Glow Glass",
 | 
			
		||||
	"glow_glass",
 | 
			
		||||
	11)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "super_glow_glass", "moreblocks:super_glow_glass",
 | 
			
		||||
	{not_in_creative_inventory=1,snappy=2, cracky=3, oddly_breakable_by_hand=3},
 | 
			
		||||
	{"moreblocks_super_glow_glass_stairsplus.png"},
 | 
			
		||||
	"Super Glow Glass",
 | 
			
		||||
	"super_glow_glass",
 | 
			
		||||
	15)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "coal_glass", "moreblocks:coal_glass",
 | 
			
		||||
	{not_in_creative_inventory=1,snappy=2, cracky=3, oddly_breakable_by_hand=3},
 | 
			
		||||
	{"moreblocks_coal_glass_stairsplus.png"},
 | 
			
		||||
	"Coal Glass",
 | 
			
		||||
	"coal_glass",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "iron_glass", "moreblocks:iron_glass",
 | 
			
		||||
	{not_in_creative_inventory=1,snappy=2,cracky=3,oddly_breakable_by_hand=3},
 | 
			
		||||
	{"moreblocks_iron_glass_stairsplus.png"},
 | 
			
		||||
	"Iron Glass",
 | 
			
		||||
	"iron_glass",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "wood_tile", "moreblocks:wood_tile",
 | 
			
		||||
	{not_in_creative_inventory=1,snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	{"moreblocks_wood_tile.png", "moreblocks_wood_tile.png", "moreblocks_wood_tile.png",
 | 
			
		||||
	"moreblocks_wood_tile.png", "moreblocks_wood_tile.png^[transformR90", "moreblocks_wood_tile.png^[transformR90"},
 | 
			
		||||
	"Wooden Tile",
 | 
			
		||||
	"wood_tile",
 | 
			
		||||
	0)
 | 
			
		||||
	
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "wood_tile_center", "moreblocks:wood_tile_center",
 | 
			
		||||
	{not_in_creative_inventory=1,snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	{"moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png",
 | 
			
		||||
	"moreblocks_wood_tile_center.png", "moreblocks_wood_tile_center.png^[transformR90", "moreblocks_wood_tile_center.png^[transformR90"},
 | 
			
		||||
	"Centered Wooden Tile",
 | 
			
		||||
	"wood_tile_center",
 | 
			
		||||
	0)
 | 
			
		||||
 | 
			
		||||
register_stair_slab_panel_micro("moreblocks", "wood_tile_full", "moreblocks:wood_tile_full",
 | 
			
		||||
	{not_in_creative_inventory=1,snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3},
 | 
			
		||||
	{"moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png",
 | 
			
		||||
	"moreblocks_wood_tile_full.png", "moreblocks_wood_tile_full.png^[transformR90", "moreblocks_wood_tile_full.png^[transformR90"},
 | 
			
		||||
	"Full Wooden Tile",
 | 
			
		||||
	"wood_tile_full",
 | 
			
		||||
	0)
 | 
			
		||||
							
								
								
									
										61
									
								
								stairsplus/aliases.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,61 @@
 | 
			
		||||
function register_stairsplus_alias(modname, origname, newname)
 | 
			
		||||
minetest.register_alias(modname .. ":slab_" .. origname, "moreblocks:slab_" .. newname)
 | 
			
		||||
minetest.register_alias(modname .. ":slab_" .. origname .. "_inverted", "moreblocks:slab_" .. newname .. "_inverted")
 | 
			
		||||
minetest.register_alias(modname .. ":slab_" .. origname .. "_wall", "moreblocks:slab_" .. newname .. "_wall")
 | 
			
		||||
minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter", "moreblocks:slab_" .. newname .. "_quarter")
 | 
			
		||||
minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_inverted", "moreblocks:slab_" .. newname .. "_quarter_inverted")
 | 
			
		||||
minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_wall", "moreblocks:slab_" .. newname .. "_quarter_wall")
 | 
			
		||||
minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter", "moreblocks:slab_" .. newname .. "_three_quarter")
 | 
			
		||||
minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_inverted", "moreblocks:slab_" .. newname .. "_three_quarter_inverted")
 | 
			
		||||
minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_wall", "moreblocks:slab_" .. newname .. "_three_quarter_wall")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname, "moreblocks:stair_" .. newname)
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_inverted", "moreblocks:stair_" .. newname .. "_inverted")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_wall", "moreblocks:stair_" .. newname .. "_wall")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", "moreblocks:stair_" .. newname .. "_wall_half")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", "moreblocks:stair_" .. newname .. "_wall_half_inverted")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_half", "moreblocks:stair_" .. newname .. "_half")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_half_inverted", "moreblocks:stair_" .. newname .. "_half_inverted")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half", "moreblocks:stair_" .. newname .. "_right_half")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half_inverted", "moreblocks:stair_" .. newname .. "_right_half_inverted")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", "moreblocks:stair_" .. newname .. "_wall_half")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", "moreblocks:stair_" .. newname .. "_wall_half_inverted")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_inner", "moreblocks:stair_" .. newname .. "_inner")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_inner_inverted", "moreblocks:stair_" .. newname .. "_inner_inverted")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_outer", "moreblocks:stair_" .. newname .. "_outer")
 | 
			
		||||
minetest.register_alias(modname .. ":stair_" .. origname .. "_outer_inverted", "moreblocks:stair_" .. newname .. "_outer_inverted")
 | 
			
		||||
minetest.register_alias(modname .. ":panel_" .. origname .. "_bottom", "moreblocks:panel_" .. newname .. "_bottom")
 | 
			
		||||
minetest.register_alias(modname .. ":panel_" .. origname .. "_top", "moreblocks:panel_" .. newname .. "_top")
 | 
			
		||||
minetest.register_alias(modname .. ":panel_" .. origname .. "_vertical", "moreblocks:panel_" .. newname .. "_vertical")
 | 
			
		||||
minetest.register_alias(modname .. ":micro_" .. origname .. "_bottom", "moreblocks:micro_" .. newname .. "_bottom")
 | 
			
		||||
minetest.register_alias(modname .. ":micro_" .. origname .. "_top", "moreblocks:micro_" .. newname .. "_top")
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
register_stairsplus_alias("stairsplus", "stone", "stone")
 | 
			
		||||
register_stairsplus_alias("stairsplus", "wood", "wood")
 | 
			
		||||
register_stairsplus_alias("stairsplus", "cobble", "cobble")
 | 
			
		||||
register_stairsplus_alias("stairsplus", "brick", "brick")
 | 
			
		||||
register_stairsplus_alias("stairsplus", "sandstone", "sandstone")
 | 
			
		||||
register_stairsplus_alias("stairsplus", "glass", "glass")
 | 
			
		||||
register_stairsplus_alias("stairsplus", "tree", "tree")
 | 
			
		||||
register_stairsplus_alias("stairsplus", "jungletree", "jungletree")
 | 
			
		||||
register_stairsplus_alias("stairsplus", "desert_stone", "desert_stone")
 | 
			
		||||
register_stairsplus_alias("stairsplus", "steelblock", "steelblock")
 | 
			
		||||
register_stairsplus_alias("stairsplus", "mossycobble", "mossycobble")
 | 
			
		||||
 | 
			
		||||
register_stairsplus_alias("moreblocks", "coalstone", "coal_stone")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "junglewood", "jungle_wood")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "circlestonebrick", "circle_stone_bricks")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "ironstone", "iron_stone")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "coalglass", "coal_glass")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "ironglass", "iron_glass")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "glowglass", "glow_glass")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "superglowglass", "super_glow_glass")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "coalchecker", "coal_checker")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "ironchecker", "iron_checker")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "cactuschecker", "cactus_checker")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "ironstonebrick", "iron_stone_bricks")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "stonesquare", "stone_tile")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "splitstonesquare", "split_stone_tile")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "woodtile", "wood_tile")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "woodtile_centered", "wood_tile_centered")
 | 
			
		||||
register_stairsplus_alias("moreblocks", "woodtile_full", "wood_tile_full")
 | 
			
		||||
							
								
								
									
										43
									
								
								stairsplus/microblocks.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,43 @@
 | 
			
		||||
-- Load translation library if intllib is installed
 | 
			
		||||
 | 
			
		||||
local S
 | 
			
		||||
if (minetest.get_modpath("intllib")) then
 | 
			
		||||
	dofile(minetest.get_modpath("intllib").."/intllib.lua")
 | 
			
		||||
	S = intllib.Getter(minetest.get_current_modname())
 | 
			
		||||
	else
 | 
			
		||||
	S = function ( s ) return s end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- 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,
 | 
			
		||||
		groups = groups,
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {-0.5, -0.5, 0, 0, 0, 0.5},
 | 
			
		||||
		},
 | 
			
		||||
		selection_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {-0.5, -0.5, 0, 0, 0, 0.5},
 | 
			
		||||
		},
 | 
			
		||||
		sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
			local keys=placer:get_player_control()
 | 
			
		||||
			stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"])
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	minetest.register_alias(modname..":micro_"..subname.."_bottom", modname..":micro_"..subname)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										42
									
								
								stairsplus/panels.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,42 @@
 | 
			
		||||
-- Load translation library if intllib is installed
 | 
			
		||||
 | 
			
		||||
local S
 | 
			
		||||
if (minetest.get_modpath("intllib")) then
 | 
			
		||||
	dofile(minetest.get_modpath("intllib").."/intllib.lua")
 | 
			
		||||
	S = intllib.Getter(minetest.get_current_modname())
 | 
			
		||||
	else
 | 
			
		||||
	S = function ( s ) return s end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Node will be called <modname>panel_<subname>
 | 
			
		||||
 | 
			
		||||
function register_panel(modname, subname, recipeitem, groups, images, description, drop, light)
 | 
			
		||||
 | 
			
		||||
	minetest.register_node(":" .. modname .. ":panel_" .. subname, {
 | 
			
		||||
		description = S("%s Panel"):format(S(description)),
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		tiles = images,
 | 
			
		||||
		light_source = light,
 | 
			
		||||
		drop = modname .. ":panel_" .. drop,
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		sunlight_propagates = true,
 | 
			
		||||
		groups = groups,
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {-0.5, -0.5, 0, 0.5, 0, 0.5},
 | 
			
		||||
		},
 | 
			
		||||
		selection_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {-0.5, -0.5, 0, 0.5, 0, 0.5},
 | 
			
		||||
		},
 | 
			
		||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
			local keys=placer:get_player_control()
 | 
			
		||||
			stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"])
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	minetest.register_alias(modname..":panel_"..subname.."_bottom", modname..":panel_"..subname)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										127
									
								
								stairsplus/slabs.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,127 @@
 | 
			
		||||
-- Load translation library if intllib is installed
 | 
			
		||||
 | 
			
		||||
local S
 | 
			
		||||
if (minetest.get_modpath("intllib")) then
 | 
			
		||||
	dofile(minetest.get_modpath("intllib").."/intllib.lua")
 | 
			
		||||
	S = intllib.Getter(minetest.get_current_modname())
 | 
			
		||||
	else
 | 
			
		||||
	S = function ( s ) return s end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Node will be called <modname>slab_<subname>
 | 
			
		||||
 | 
			
		||||
function register_slab(modname, subname, recipeitem, groups, images, description, drop, light)
 | 
			
		||||
 | 
			
		||||
	minetest.register_node(":" .. modname .. ":slab_" .. subname, {
 | 
			
		||||
		description = S("%s Slab"):format(S(description)),
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		tiles = images,
 | 
			
		||||
		light_source = light,
 | 
			
		||||
		drop = modname .. ":slab_" .. drop,
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		sunlight_propagates = true,
 | 
			
		||||
		groups = groups,
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
		},
 | 
			
		||||
		selection_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
		},
 | 
			
		||||
		sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
			local keys=placer:get_player_control()
 | 
			
		||||
			stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"])
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	minetest.register_node(":stairs:slab_" .. subname, {
 | 
			
		||||
		description = S("%s Slab"):format(S(description)),
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		tiles = images,
 | 
			
		||||
		drop = modname .. ":slab_" .. drop,
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		sunlight_propagates = true,
 | 
			
		||||
		groups = groups,
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
		},
 | 
			
		||||
		selection_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
		},
 | 
			
		||||
		sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
			local keys=placer:get_player_control()
 | 
			
		||||
			stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"])
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	minetest.register_node(":"..modname .. ":slab_" .. subname .. "_quarter", {
 | 
			
		||||
		description = S("%s Slab"):format(S(description)),
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		tiles = images,
 | 
			
		||||
		light_source = light,
 | 
			
		||||
		drop = modname .. ":slab_" .. drop .. "_quarter",
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		sunlight_propagates = true,
 | 
			
		||||
		groups = groups,
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
 | 
			
		||||
		},
 | 
			
		||||
		selection_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
 | 
			
		||||
		},
 | 
			
		||||
		sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
			local keys=placer:get_player_control()
 | 
			
		||||
			stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"])
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	minetest.register_node(":"..modname .. ":slab_" .. subname .. "_three_quarter", {
 | 
			
		||||
		description = S("%s Slab"):format(S(description)),
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		tiles = images,
 | 
			
		||||
		light_source = light,
 | 
			
		||||
		drop = modname .. ":slab_" .. drop .. "_three_quarter",
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		sunlight_propagates = true,
 | 
			
		||||
		groups = groups,
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {-0.5, -0.5, -0.5, 0.5, 0.25, 0.5},
 | 
			
		||||
		},
 | 
			
		||||
		selection_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {-0.5, -0.5, -0.5, 0.5, 0.25, 0.5},
 | 
			
		||||
		},
 | 
			
		||||
		sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
			local keys=placer:get_player_control()
 | 
			
		||||
			stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"])
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	-- Unregister default recipes
 | 
			
		||||
 | 
			
		||||
	minetest.register_craft({
 | 
			
		||||
		output = "moreblocks:nothing 1",
 | 
			
		||||
		recipe = {
 | 
			
		||||
			{recipeitem, recipeitem, recipeitem},
 | 
			
		||||
		},
 | 
			
		||||
	})
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										248
									
								
								stairsplus/stairs.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,248 @@
 | 
			
		||||
-- Load translation library if intllib is installed
 | 
			
		||||
 | 
			
		||||
local S
 | 
			
		||||
if (minetest.get_modpath("intllib")) then
 | 
			
		||||
	dofile(minetest.get_modpath("intllib").."/intllib.lua")
 | 
			
		||||
	S = intllib.Getter(minetest.get_current_modname())
 | 
			
		||||
	else
 | 
			
		||||
	S = function ( s ) return s end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Node will be called <modname>:stair_<subname>
 | 
			
		||||
 | 
			
		||||
function register_stair(modname, subname, recipeitem, groups, images, description, drop, light)
 | 
			
		||||
 | 
			
		||||
	minetest.register_node(":" .. modname .. ":stair_" .. subname, {
 | 
			
		||||
		description = S("%s Stairs"):format(S(description)),
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		tiles = images,
 | 
			
		||||
		light_source = light,
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		sunlight_propagates = true,
 | 
			
		||||
		groups = groups,
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
				{-0.5, 0, 0, 0.5, 0.5, 0.5},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		selection_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
				{-0.5, 0, 0, 0.5, 0.5, 0.5},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
			local keys=placer:get_player_control()
 | 
			
		||||
			stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"])
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	minetest.register_node(":stairs:stair_" .. subname, {
 | 
			
		||||
		description = S("%s Stairs"):format(S(description)),
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		tiles = images,
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		sunlight_propagates = true,
 | 
			
		||||
		groups = {cracky=3, not_in_creative_inventory=1},
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
				{-0.5, 0, 0, 0.5, 0.5, 0.5},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		selection_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
				{-0.5, 0, 0, 0.5, 0.5, 0.5},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
			local keys=placer:get_player_control()
 | 
			
		||||
			stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"])
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	minetest.register_node(":" .. modname .. ":stair_" .. subname .. "_half", {
 | 
			
		||||
		description = S("%s Stairs"):format(S(description)),
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		tiles = images,
 | 
			
		||||
		light_source = light,
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		sunlight_propagates = true,
 | 
			
		||||
		groups = groups,
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{-0.5, -0.5, -0.5, 0, 0, 0.5},
 | 
			
		||||
				{-0.5, 0, 0, 0, 0.5, 0.5},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		selection_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{-0.5, -0.5, -0.5, 0, 0, 0.5},
 | 
			
		||||
				{-0.5, 0, 0, 0, 0.5, 0.5},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
			local keys=placer:get_player_control()
 | 
			
		||||
			stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"])
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	minetest.register_node(":"..modname .. ":stair_" .. subname .. "_right_half", {
 | 
			
		||||
		description = S("%s Stairs"):format(S(description)),
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		tiles = images,
 | 
			
		||||
		light_source = light,
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		sunlight_propagates = true,
 | 
			
		||||
		groups = groups,
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{0, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
				{0, 0, 0, 0.5, 0.5, 0.5},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		selection_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{0, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
				{0, 0, 0, 0.5, 0.5, 0.5},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
			local keys=placer:get_player_control()
 | 
			
		||||
			stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"])
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	minetest.register_node(":"..modname .. ":stair_" .. subname .. "_inner", {
 | 
			
		||||
		description = S("%s Stairs"):format(S(description)),
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		tiles = images,
 | 
			
		||||
		light_source = light,
 | 
			
		||||
		drop = modname .. ":stair_" .. drop .. "_inner",
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		sunlight_propagates = true,
 | 
			
		||||
		groups = groups,
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
				{-0.5, 0, 0, 0.5, 0.5, 0.5},
 | 
			
		||||
				{-0.5, 0, -0.5, 0, 0.5, 0},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		selection_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
				{-0.5, 0, 0, 0.5, 0.5, 0.5},
 | 
			
		||||
				{-0.5, 0, -0.5, 0, 0.5, 0},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
			local keys=placer:get_player_control()
 | 
			
		||||
			stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"])
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	minetest.register_node(":"..modname .. ":stair_" .. subname .. "_outer", {
 | 
			
		||||
		description = S("%s Stairs"):format(S(description)),
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		tiles = images,
 | 
			
		||||
		light_source = light,
 | 
			
		||||
		drop = modname .. ":stair_" .. drop .. "_outer",
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		sunlight_propagates = true,
 | 
			
		||||
		groups = groups,
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
				{-0.5, 0, 0, 0, 0.5, 0.5},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		selection_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
 | 
			
		||||
				{-0.5, 0, 0, 0, 0.5, 0.5},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
			local keys=placer:get_player_control()
 | 
			
		||||
			stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"])
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	minetest.register_node(":" .. modname .. ":stair_" .. subname .. "_alt", {
 | 
			
		||||
		description = S("%s Stairs"):format(S(description)),
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		tiles = images,
 | 
			
		||||
		light_source = light,
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		sunlight_propagates = true,
 | 
			
		||||
		groups = groups,
 | 
			
		||||
		node_box = {
 | 
			
		||||
			type = "fixed",
 | 
			
		||||
			fixed = {
 | 
			
		||||
				{-0.5, -0.5, -0.5, 0.5, 0, 0},
 | 
			
		||||
				{-0.5, 0, 0, 0.5, 0.5, 0.5},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
		on_place = function(itemstack, placer, pointed_thing)
 | 
			
		||||
			local keys=placer:get_player_control()
 | 
			
		||||
			stairsplus_rotate_and_place(itemstack, placer, pointed_thing, keys["sneak"])
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	-- Unregister default recipes
 | 
			
		||||
 | 
			
		||||
	minetest.register_craft({
 | 
			
		||||
		output = "moreblocks:nothing 1",
 | 
			
		||||
		recipe = {
 | 
			
		||||
			{recipeitem, "", ""},
 | 
			
		||||
			{recipeitem, recipeitem, ""},
 | 
			
		||||
			{recipeitem, recipeitem, recipeitem},
 | 
			
		||||
		},
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	minetest.register_craft({
 | 
			
		||||
		output = "moreblocks:nothing 1",
 | 
			
		||||
		recipe = {
 | 
			
		||||
			{"", "", recipeitem},
 | 
			
		||||
			{"", recipeitem, recipeitem},
 | 
			
		||||
			{recipeitem, recipeitem, recipeitem},
 | 
			
		||||
		},
 | 
			
		||||
	})
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										133
									
								
								stairsplus_convert.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,133 @@
 | 
			
		||||
-- Function to convert all stairs/slabs/etc nodes from
 | 
			
		||||
-- inverted, wall, etc to regular + 6d facedir
 | 
			
		||||
 | 
			
		||||
local dirs1 = { 21, 20, 23, 22, 21 }
 | 
			
		||||
local dirs2 = { 15, 8, 17, 6, 15 }
 | 
			
		||||
local dirs3 = { 14, 11, 16, 5, 14 }
 | 
			
		||||
 | 
			
		||||
function register_6dfacedir_conversion(modname, material)
 | 
			
		||||
	--print("Register stairsplus 6d facedir conversion")
 | 
			
		||||
	--print('ABM for '..modname..' "'..material..'"')
 | 
			
		||||
 | 
			
		||||
	local objects_list1 = {
 | 
			
		||||
		modname..":slab_" .. material .. "_inverted",
 | 
			
		||||
		modname..":slab_" .. material .. "_quarter_inverted",
 | 
			
		||||
		modname..":slab_" .. material .. "_three_quarter_inverted",
 | 
			
		||||
		modname..":stair_" .. material .. "_inverted",
 | 
			
		||||
		modname..":stair_" .. material .. "_wall",
 | 
			
		||||
		modname..":stair_" .. material .. "_wall_half",
 | 
			
		||||
		modname..":stair_" .. material .. "_wall_half_inverted",
 | 
			
		||||
		modname..":stair_" .. material .. "_half_inverted",
 | 
			
		||||
		modname..":stair_" .. material .. "_right_half_inverted",
 | 
			
		||||
		modname..":panel_" .. material .. "_vertical",
 | 
			
		||||
		modname..":panel_" .. material .. "_top",
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	local objects_list2 = {
 | 
			
		||||
		modname..":slab_" .. material .. "_wall",
 | 
			
		||||
		modname..":slab_" .. material .. "_quarter_wall",
 | 
			
		||||
		modname..":slab_" .. material .. "_three_quarter_wall",
 | 
			
		||||
		modname..":stair_" .. material .. "_inner_inverted",
 | 
			
		||||
		modname..":stair_" .. material .. "_outer_inverted",
 | 
			
		||||
		modname..":micro_" .. material .. "_top"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for j in ipairs(objects_list1) do
 | 
			
		||||
		local flip_upside_down = false
 | 
			
		||||
		local flip_to_wall = false
 | 
			
		||||
 | 
			
		||||
		local object = objects_list1[j]
 | 
			
		||||
		local dest_object = objects_list1[j]
 | 
			
		||||
 | 
			
		||||
		if string.find(dest_object, "_inverted") then
 | 
			
		||||
			flip_upside_down = true
 | 
			
		||||
			dest_object = string.gsub(dest_object, "_inverted", "")
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		if string.find(dest_object, "_top") then
 | 
			
		||||
			flip_upside_down = true
 | 
			
		||||
			dest_object = string.gsub(dest_object, "_top", "")
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		if string.find(dest_object, "_wall") then
 | 
			
		||||
			flip_to_wall = true
 | 
			
		||||
			dest_object = string.gsub(dest_object, "_wall", "")
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		if string.find(dest_object, "_vertical") then
 | 
			
		||||
			flip_to_wall = true
 | 
			
		||||
			dest_object = string.gsub(dest_object, "_vertical", "")
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		if string.find(dest_object, "_half") and not string.find(dest_object, "_right_half") then
 | 
			
		||||
			dest_object = string.gsub(dest_object, "_half", "_right_half")
 | 
			
		||||
		elseif string.find(dest_object, "_right_half") then
 | 
			
		||||
			dest_object = string.gsub(dest_object, "_right_half", "_half")
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		--print("    +---> convert "..object)
 | 
			
		||||
		--print("    |     to "..dest_object)
 | 
			
		||||
 | 
			
		||||
		minetest.register_abm({
 | 
			
		||||
			nodenames = { object },
 | 
			
		||||
			interval = 1,
 | 
			
		||||
			chance = 1,
 | 
			
		||||
			action = function(pos, node, active_object_count, active_object_count_wider)
 | 
			
		||||
				local fdir = node.param2 or 0
 | 
			
		||||
 | 
			
		||||
				if flip_upside_down and not flip_to_wall then 
 | 
			
		||||
					nfdir = dirs1[fdir+2]
 | 
			
		||||
				elseif flip_to_wall and not flip_upside_down then
 | 
			
		||||
					nfdir = dirs2[fdir+1]
 | 
			
		||||
				elseif flip_to_wall and flip_upside_down then
 | 
			
		||||
					nfdir = dirs3[fdir+2]
 | 
			
		||||
				end
 | 
			
		||||
				minetest.env:add_node(pos, {name = dest_object, param2 = nfdir})
 | 
			
		||||
			end
 | 
			
		||||
		})
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	for j in ipairs(objects_list2) do
 | 
			
		||||
		local flip_upside_down = false
 | 
			
		||||
		local flip_to_wall = false
 | 
			
		||||
 | 
			
		||||
		local object = objects_list2[j]
 | 
			
		||||
		local dest_object = objects_list2[j]
 | 
			
		||||
 | 
			
		||||
		if string.find(dest_object, "_inverted") then
 | 
			
		||||
			flip_upside_down = true
 | 
			
		||||
			dest_object = string.gsub(dest_object, "_inverted", "")
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		if string.find(dest_object, "_top") then
 | 
			
		||||
			flip_upside_down = true
 | 
			
		||||
			dest_object = string.gsub(dest_object, "_top", "")
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		if string.find(dest_object, "_wall") then
 | 
			
		||||
			flip_to_wall = true
 | 
			
		||||
			dest_object = string.gsub(dest_object, "_wall", "")
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		--print("    +---> convert "..object)
 | 
			
		||||
		--print("    |     to "..dest_object)
 | 
			
		||||
 | 
			
		||||
		minetest.register_abm({
 | 
			
		||||
			nodenames = { object },
 | 
			
		||||
			interval = 1,
 | 
			
		||||
			chance = 1,
 | 
			
		||||
			action = function(pos, node, active_object_count, active_object_count_wider)
 | 
			
		||||
				local fdir = node.param2
 | 
			
		||||
				local nfdir = 20
 | 
			
		||||
 | 
			
		||||
				if flip_upside_down and not flip_to_wall then 
 | 
			
		||||
					nfdir = dirs1[fdir+1]
 | 
			
		||||
				elseif flip_to_wall and not flip_upside_down then
 | 
			
		||||
					nfdir = dirs2[fdir+2]
 | 
			
		||||
 | 
			
		||||
				end
 | 
			
		||||
				minetest.env:add_node(pos, {name = dest_object, param2 = nfdir})
 | 
			
		||||
			end
 | 
			
		||||
		})
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_cactus_brick.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 735 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_cactus_checker.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 826 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_circle_stone_bricks.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 646 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_circular_saw_bottom.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 699 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_circular_saw_side.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 587 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_circular_saw_top.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 667 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_clean_glass.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 249 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_coal_checker.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 902 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_coal_glass.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 245 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_coal_glass_stairsplus.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 278 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_coal_stone.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 545 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_empty_bookshelf.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 675 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_fence_jungle_wood.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 392 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_fence_wood.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 539 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_glass.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 978 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_glass_stairsplus.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 973 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_glow_glass.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 265 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_glow_glass_stairsplus.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 287 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_iron_checker.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 884 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_iron_glass.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 248 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_iron_glass_stairsplus.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 283 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_iron_stone.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 555 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_iron_stone_bricks.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 741 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_jungle_wood.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 362 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_junglestick.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 215 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_obsidian_glass_stairsplus.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 209 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_plankstone.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 598 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_plankstone_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 604 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_rope.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 517 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_split_stone_tile.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 734 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_split_stone_tile_top.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 752 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_stone_bricks.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 650 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_stone_tile.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 700 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_super_glow_glass.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 249 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_super_glow_glass_stairsplus.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 288 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_sweeper.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 477 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_trap_glass.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 261 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_trap_stone.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 817 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_wood.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 387 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_wood_tile.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 598 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_wood_tile_center.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 545 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_wood_tile_down.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 522 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_wood_tile_flipped.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 554 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_wood_tile_full.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 594 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_wood_tile_left.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 507 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_wood_tile_right.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 533 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/moreblocks_wood_tile_up.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 533 B  |