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 |