1590 lines
42 KiB
Lua
1590 lines
42 KiB
Lua
|
-- Minetest 0.4 mod: default
|
||
|
-- See README.txt for licensing and other information.
|
||
|
|
||
|
-- The API documentation in here was moved into doc/lua_api.txt
|
||
|
-- Perlipop:code imported from moreblocks by Calinou
|
||
|
-- 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("poudlard").."/poudecor/nightstand.lua")
|
||
|
dofile(minetest.get_modpath("poudlard").."/poudecor/armchair.lua")
|
||
|
dofile(minetest.get_modpath("poudlard").."/poudecor/torch.lua")
|
||
|
dofile(minetest.get_modpath("poudlard").."/poudecor/curtain.lua")
|
||
|
dofile(minetest.get_modpath("poudlard").."/poudecor/crafts.lua")
|
||
|
dofile(minetest.get_modpath("poudlard").."/poudecor/furniture_recipes.lua")
|
||
|
|
||
|
|
||
|
--Construction Blocks
|
||
|
-- Stairs/Slabs/Panels/Microblocks -- code imported from the Stairs+ & moreblocks mods. :)
|
||
|
|
||
|
poudlard = {}
|
||
|
|
||
|
-- Node will be called <modname>:stair_<subname>
|
||
|
|
||
|
function poudlard.register_stair(modname, subname, recipeitem, groups, images, description, drop)
|
||
|
minetest.register_node(modname .. ":stair_" .. subname, {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = 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)
|
||
|
if pointed_thing.type ~= "node" then
|
||
|
return itemstack
|
||
|
end
|
||
|
|
||
|
local p0 = pointed_thing.under
|
||
|
local p1 = pointed_thing.above
|
||
|
if p0.y-1 == p1.y then
|
||
|
local fakestack = ItemStack(modname .. ":stair_" .. subname.. "_inverted")
|
||
|
local ret = minetest.item_place(fakestack, placer, pointed_thing)
|
||
|
if ret:is_empty() then
|
||
|
itemstack:take_item()
|
||
|
return itemstack
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- Otherwise place regularly
|
||
|
return minetest.item_place(itemstack, placer, pointed_thing)
|
||
|
end,
|
||
|
})
|
||
|
|
||
|
minetest.register_node(":stairs:stair_" .. subname, {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = 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(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":stair_" .. subname .. "_inverted", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":stair_" .. drop,
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{-0.5, 0, -0.5, 0.5, 0.5, 0.5},
|
||
|
{-0.5, -0.5, 0, 0.5, 0, 0.5},
|
||
|
},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{-0.5, 0, -0.5, 0.5, 0.5, 0.5},
|
||
|
{-0.5, -0.5, 0, 0.5, 0, 0.5},
|
||
|
},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":stair_" .. subname .. "_half", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = 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)
|
||
|
if pointed_thing.type ~= "node" then
|
||
|
return itemstack
|
||
|
end
|
||
|
|
||
|
local p0 = pointed_thing.under
|
||
|
local p1 = pointed_thing.above
|
||
|
if p0.y-1 == p1.y then
|
||
|
local fakestack = ItemStack(modname .. ":stair_" .. subname.. "_half_inverted")
|
||
|
local ret = minetest.item_place(fakestack, placer, pointed_thing)
|
||
|
if ret:is_empty() then
|
||
|
itemstack:take_item()
|
||
|
return itemstack
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- Otherwise place regularly
|
||
|
return minetest.item_place(itemstack, placer, pointed_thing)
|
||
|
end,
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":stair_" .. subname .. "_half_inverted", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{-0.5, 0, -0.5, 0, 0.5, 0.5},
|
||
|
{-0.5, -0.5, 0, 0, 0, 0.5},
|
||
|
},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{-0.5, 0, -0.5, 0, 0.5, 0.5},
|
||
|
{-0.5, -0.5, 0, 0, 0, 0.5},
|
||
|
},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":stair_" .. subname .. "_right_half", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = 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)
|
||
|
if pointed_thing.type ~= "node" then
|
||
|
return itemstack
|
||
|
end
|
||
|
|
||
|
local p0 = pointed_thing.under
|
||
|
local p1 = pointed_thing.above
|
||
|
if p0.y-1 == p1.y then
|
||
|
local fakestack = ItemStack(modname .. ":stair_" .. subname.. "_right_half_inverted")
|
||
|
local ret = minetest.item_place(fakestack, placer, pointed_thing)
|
||
|
if ret:is_empty() then
|
||
|
itemstack:take_item()
|
||
|
return itemstack
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- Otherwise place regularly
|
||
|
return minetest.item_place(itemstack, placer, pointed_thing)
|
||
|
end,
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":stair_" .. subname .. "_right_half_inverted", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{0, 0, -0.5, 0.5, 0.5, 0.5},
|
||
|
{0, -0.5, 0, 0.5, 0, 0.5},
|
||
|
},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{0, 0, -0.5, 0.5, 0.5, 0.5},
|
||
|
{0, -0.5, 0, 0.5, 0, 0.5},
|
||
|
},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":stair_" .. subname .. "_wall", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":stair_" .. drop,
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{-0.5, -0.5, 0, 0.5, 0.5, 0.5},
|
||
|
{-0.5, -0.5, -0.5, 0, 0.5, 0},
|
||
|
},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{-0.5, -0.5, 0, 0.5, 0.5, 0.5},
|
||
|
{-0.5, -0.5, -0.5, 0, 0.5, 0},
|
||
|
},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":stair_" .. subname .. "_wall_half", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":stair_" .. drop .. "_wall_half",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{-0.5, -0.5, 0, 0.5, 0, 0.5},
|
||
|
{-0.5, -0.5, -0.5, 0, 0, 0},
|
||
|
},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{-0.5, -0.5, 0, 0.5, 0, 0.5},
|
||
|
{-0.5, -0.5, -0.5, 0, 0, 0},
|
||
|
},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
on_place = function(itemstack, placer, pointed_thing)
|
||
|
if pointed_thing.type ~= "node" then
|
||
|
return itemstack
|
||
|
end
|
||
|
|
||
|
local p0 = pointed_thing.under
|
||
|
local p1 = pointed_thing.above
|
||
|
if p0.y-1 == p1.y then
|
||
|
local fakestack = ItemStack(modname .. ":stair_" .. subname.. "_wall_half_inverted")
|
||
|
local ret = minetest.item_place(fakestack, placer, pointed_thing)
|
||
|
if ret:is_empty() then
|
||
|
itemstack:take_item()
|
||
|
return itemstack
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- Otherwise place regularly
|
||
|
return minetest.item_place(itemstack, placer, pointed_thing)
|
||
|
end,
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":stair_" .. subname .. "_wall_half_inverted", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":stair_" .. drop .. "_wall_half",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{-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, 0, 0.5, 0.5, 0.5},
|
||
|
{-0.5, 0, -0.5, 0, 0.5, 0},
|
||
|
},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":stair_" .. subname .. "_inner", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":stair_" .. drop .. "_inner",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
is_ground_content = true,
|
||
|
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)
|
||
|
if pointed_thing.type ~= "node" then
|
||
|
return itemstack
|
||
|
end
|
||
|
|
||
|
local p0 = pointed_thing.under
|
||
|
local p1 = pointed_thing.above
|
||
|
if p0.y-1 == p1.y then
|
||
|
local fakestack = ItemStack(modname .. ":stair_" .. subname.. "_inner_inverted")
|
||
|
local ret = minetest.item_place(fakestack, placer, pointed_thing)
|
||
|
if ret:is_empty() then
|
||
|
itemstack:take_item()
|
||
|
return itemstack
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- Otherwise place regularly
|
||
|
return minetest.item_place(itemstack, placer, pointed_thing)
|
||
|
end,
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":stair_" .. subname .. "_outer", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":stair_" .. drop .. "_outer",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = 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)
|
||
|
if pointed_thing.type ~= "node" then
|
||
|
return itemstack
|
||
|
end
|
||
|
|
||
|
local p0 = pointed_thing.under
|
||
|
local p1 = pointed_thing.above
|
||
|
if p0.y-1 == p1.y then
|
||
|
local fakestack = ItemStack(modname .. ":stair_" .. subname.. "_outer_inverted")
|
||
|
local ret = minetest.item_place(fakestack, placer, pointed_thing)
|
||
|
if ret:is_empty() then
|
||
|
itemstack:take_item()
|
||
|
return itemstack
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- Otherwise place regularly
|
||
|
return minetest.item_place(itemstack, placer, pointed_thing)
|
||
|
end,
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":stair_" .. subname .. "_inner_inverted", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":stair_" .. drop .. "_inner",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{-0.5, 0, -0.5, 0.5, 0.5, 0.5},
|
||
|
{-0.5, -0.5, 0, 0.5, 0, 0.5},
|
||
|
{-0.5, -0.5, -0.5, 0, 0, 0},
|
||
|
},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{-0.5, 0, -0.5, 0.5, 0.5, 0.5},
|
||
|
{-0.5, -0.5, 0, 0.5, 0, 0.5},
|
||
|
{-0.5, -0.5, -0.5, 0, 0, 0},
|
||
|
},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":stair_" .. subname .. "_outer_inverted", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":stair_" .. drop .. "_outer",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{-0.5, 0, -0.5, 0.5, 0.5, 0.5},
|
||
|
{-0.5, -0.5, 0, 0, 0, 0.5},
|
||
|
},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {
|
||
|
{-0.5, 0, -0.5, 0.5, 0.5, 0.5},
|
||
|
{-0.5, -0.5, 0, 0, 0, 0.5},
|
||
|
},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. " 8",
|
||
|
recipe = {
|
||
|
{recipeitem, "", ""},
|
||
|
{recipeitem, recipeitem, ""},
|
||
|
{recipeitem, recipeitem, recipeitem},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. " 8",
|
||
|
recipe = {
|
||
|
{"", "", recipeitem},
|
||
|
{"", recipeitem, recipeitem},
|
||
|
{recipeitem, recipeitem, recipeitem},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_wall 8",
|
||
|
recipe = {
|
||
|
{recipeitem, recipeitem, recipeitem},
|
||
|
{recipeitem, recipeitem, ""},
|
||
|
{recipeitem, "", ""},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_wall 8",
|
||
|
recipe = {
|
||
|
{recipeitem, recipeitem, recipeitem},
|
||
|
{"", recipeitem, recipeitem},
|
||
|
{"", "", recipeitem},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_wall 2",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname, modname .. ":stair_" .. subname},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_wall 2",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_inverted", modname .. ":stair_" .. subname .. "_inverted"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. " 2",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_wall"},
|
||
|
{modname .. ":stair_" .. subname .. "_wall"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_inner 1",
|
||
|
recipe = {
|
||
|
{modname .. ":micro_" .. subname .. "_bottom", modname .. ":stair_" .. subname},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_inner 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_wall_half"},
|
||
|
{modname .. ":slab_" .. subname},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_outer 1",
|
||
|
recipe = {
|
||
|
{modname .. ":micro_" .. subname .. "_bottom"},
|
||
|
{modname .. ":slab_" .. subname},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_half 1",
|
||
|
recipe = {
|
||
|
{modname .. ":micro_" .. subname .. "_bottom"},
|
||
|
{modname .. ":panel_" .. subname .. "_bottom"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_half_inverted 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_half 1"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_half 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_half_inverted 1"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_right_half 2",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_half", modname .. ":stair_" .. subname .. "_half"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_half 2",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_right_half", modname .. ":stair_" .. subname .. "_right_half"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_right_half_inverted 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_right_half"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_right_half 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_right_half_inverted"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_half_inverted 2",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_right_half_inverted", modname .. ":stair_" .. subname .. "_right_half_inverted"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_right_half_inverted 2",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_half_inverted", modname .. ":stair_" .. subname .. "_half_inverted"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_inner_inverted 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_inner"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_outer_inverted 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_outer"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_inner 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_inner_inverted"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_outer 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_outer_inverted"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_wall_half 2",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_wall"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_wall 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_wall_half"},
|
||
|
{modname .. ":stair_" .. subname .. "_wall_half"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_wall_half_inverted 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_wall_half"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_wall_half 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_wall_half_inverted"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. "_inverted 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":stair_" .. subname .. " 1",
|
||
|
recipe = {
|
||
|
{modname .. ":stair_" .. subname .. "_inverted"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
type = "cooking",
|
||
|
output = modname .. ":stair_" .. subname .. "_stone",
|
||
|
recipe = modname .. ":stair_" .. subname .. "_cobble",
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
type = "cooking",
|
||
|
output = modname .. ":stair_" .. subname .. "_stone_wall",
|
||
|
recipe = modname .. ":stair_" .. subname .. "_cobble_wall",
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
type = "cooking",
|
||
|
output = modname .. ":stair_" .. subname .. "_stone_wall_half",
|
||
|
recipe = modname .. ":stair_" .. subname .. "_cobble_wall_half",
|
||
|
})
|
||
|
end
|
||
|
|
||
|
-- Node will be called <modname>slab_<subname>
|
||
|
|
||
|
function poudlard.register_slab(modname, subname, recipeitem, groups, images, description, drop, paramtype2)
|
||
|
minetest.register_node(modname .. ":slab_" .. subname, {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":slab_" .. drop,
|
||
|
paramtype = "light",
|
||
|
paramtype2 = paramtype2,
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = 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)
|
||
|
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,
|
||
|
})
|
||
|
|
||
|
minetest.register_node(":stairs:slab_" .. subname, {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":slab_" .. drop,
|
||
|
paramtype = "light",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = 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(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":slab_" .. subname .. "_inverted", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":slab_" .. drop .. "_inverted",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = paramtype2,
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, 0, -0.5, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, 0, -0.5, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
on_place = function(itemstack, placer, pointed_thing)
|
||
|
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 .. "_inverted" 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_inverted" 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_inverted")
|
||
|
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,
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":slab_" .. subname .. "_wall", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":slab_" .. drop .. "_wall",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":slab_" .. subname .. "_quarter_wall", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":slab_" .. drop .. "_quarter_wall",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, -0.5, 0.25, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, -0.5, 0.25, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":slab_" .. subname .. "_three_quarter_wall", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":slab_" .. drop .. "_three_quarter_wall",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, -0.5, -0.25, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, -0.5, -0.25, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":slab_" .. subname .. "_quarter", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":slab_" .. drop .. "_quarter",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = paramtype2,
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = 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)
|
||
|
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 .. "_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)
|
||
|
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 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
|
||
|
|
||
|
if n1.name == modname .. ":slab_" .. subname .. "_three_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(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
|
||
|
|
||
|
-- Otherwise place regularly
|
||
|
return minetest.item_place(itemstack, placer, pointed_thing)
|
||
|
end,
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":slab_" .. subname .. "_quarter_inverted", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":slab_" .. drop .. "_quarter",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = paramtype2,
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, 0.25, -0.5, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, 0.25, -0.5, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
on_place = function(itemstack, placer, pointed_thing)
|
||
|
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 .. "_quarter_inverted" 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 .. "_inverted")
|
||
|
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 .. "_inverted" 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_inverted")
|
||
|
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 .. "_three_quarter_inverted" 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
|
||
|
|
||
|
-- Otherwise place regularly
|
||
|
return minetest.item_place(itemstack, placer, pointed_thing)
|
||
|
end,
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":slab_" .. subname .. "_three_quarter", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":slab_" .. drop .. "_three_quarter",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = paramtype2,
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = 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(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":slab_" .. subname .. "_three_quarter_inverted", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":slab_" .. drop .. "_three_quarter",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = paramtype2,
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, -0.25, -0.5, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, -0.25, -0.5, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":slab_" .. subname .. " 6",
|
||
|
recipe = {
|
||
|
{recipeitem, recipeitem, recipeitem},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":slab_" .. subname .. "_wall 6",
|
||
|
recipe = {
|
||
|
{recipeitem},
|
||
|
{recipeitem},
|
||
|
{recipeitem},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":slab_" .. subname .. "_inverted 1",
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":slab_" .. subname .. " 1",
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname .. "_inverted"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = recipeitem,
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname},
|
||
|
{modname .. ":slab_" .. subname},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = recipeitem,
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname .. "_inverted"},
|
||
|
{modname .. ":slab_" .. subname .. "_inverted"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = recipeitem,
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname .. "_wall", modname .. ":slab_" .. subname .. "_wall"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = recipeitem,
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname},
|
||
|
{modname .. ":slab_" .. subname},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":slab_" .. subname .. "_quarter 6",
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname, modname .. ":slab_" .. subname, modname .. ":slab_" .. subname},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":slab_" .. subname .. "_quarter_inverted 1",
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname .. "_quarter"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":slab_" .. subname .. "_quarter 1",
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname .. "_quarter_inverted"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":slab_" .. subname .. "_three_quarter_inverted 1",
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname .. "_three_quarter"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":slab_" .. subname .. "_three_quarter 1",
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname .. "_three_quarter_inverted"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":slab_" .. subname .. "_three_quarter 1",
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname .. "_quarter"},
|
||
|
{modname .. ":slab_" .. subname .. "_quarter"},
|
||
|
{modname .. ":slab_" .. subname .. "_quarter"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":slab_" .. subname .. "_quarter 6",
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname .. "_three_quarter"},
|
||
|
{modname .. ":slab_" .. subname .. "_three_quarter"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":slab_" .. subname .. "_quarter_wall 6",
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname .. "_wall"},
|
||
|
{modname .. ":slab_" .. subname .. "_wall"},
|
||
|
{modname .. ":slab_" .. subname .. "_wall"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":slab_" .. subname .. "_three_quarter_wall 1",
|
||
|
recipe = {
|
||
|
{modname .. ":slab_" .. subname .. "_quarter_wall", modname .. ":slab_" .. subname .. "_quarter_wall", modname .. ":slab_" .. subname .. "_quarter_wall"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
end
|
||
|
|
||
|
-- Node will be called <modname>panel_<subname>
|
||
|
|
||
|
function poudlard.register_panel(modname, subname, recipeitem, groups, images, description, drop)
|
||
|
minetest.register_node(modname .. ":panel_" .. subname .. "_bottom", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":panel_" .. drop .. "_bottom",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = 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},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":panel_" .. subname .. "_top", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":panel_" .. drop .. "_bottom",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, 0, 0, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, 0, 0, 0.5, 0.5, 0.5},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":panel_" .. subname .. "_vertical", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":panel_" .. drop .. "_bottom",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, -0.5, 0, 0, 0.5, 0.5},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, -0.5, 0, 0, 0.5, 0.5},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":panel_" .. subname .. "_bottom 8",
|
||
|
recipe = {
|
||
|
{recipeitem, recipeitem},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":panel_" .. subname .. "_vertical 8",
|
||
|
recipe = {
|
||
|
{recipeitem},
|
||
|
{recipeitem},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":panel_" .. subname .. "_top 1",
|
||
|
recipe = {
|
||
|
{modname .. ":panel_" .. subname .. "_bottom"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":panel_" .. subname .. "_bottom 1",
|
||
|
recipe = {
|
||
|
{modname .. ":panel_" .. subname .. "_top"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":panel_" .. subname .. "_vertical 2",
|
||
|
recipe = {
|
||
|
{modname .. ":panel_" .. subname .. "_bottom"},
|
||
|
{modname .. ":panel_" .. subname .. "_bottom"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":panel_" .. subname .. "_bottom 2",
|
||
|
recipe = {
|
||
|
{modname .. ":panel_" .. subname .. "_vertical", modname .. ":panel_" .. subname .. "_vertical"},
|
||
|
},
|
||
|
})
|
||
|
end
|
||
|
|
||
|
-- Node will be called <modname>micro_<subname>
|
||
|
|
||
|
function poudlard.register_micro(modname, subname, recipeitem, groups, images, description, drop)
|
||
|
minetest.register_node(modname .. ":micro_" .. subname .. "_bottom", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":micro_" .. drop .. "_bottom",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = 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)
|
||
|
if pointed_thing.type ~= "node" then
|
||
|
return itemstack
|
||
|
end
|
||
|
|
||
|
local p0 = pointed_thing.under
|
||
|
local p1 = pointed_thing.above
|
||
|
if p0.y-1 == p1.y then
|
||
|
local fakestack = ItemStack(modname .. ":micro_" .. subname.. "_top")
|
||
|
local ret = minetest.item_place(fakestack, placer, pointed_thing)
|
||
|
if ret:is_empty() then
|
||
|
itemstack:take_item()
|
||
|
return itemstack
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- Otherwise place regularly
|
||
|
return minetest.item_place(itemstack, placer, pointed_thing)
|
||
|
end,
|
||
|
})
|
||
|
|
||
|
minetest.register_node(modname .. ":micro_" .. subname .. "_top", {
|
||
|
description = description,
|
||
|
drawtype = "nodebox",
|
||
|
tiles = images,
|
||
|
drop = modname .. ":micro_" .. drop .. "_top",
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "facedir",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = true,
|
||
|
groups = groups,
|
||
|
node_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, 0, 0, 0, 0.5, 0.5},
|
||
|
},
|
||
|
selection_box = {
|
||
|
type = "fixed",
|
||
|
fixed = {-0.5, 0, 0, 0, 0.5, 0.5},
|
||
|
},
|
||
|
sounds = default.node_sound_stone_defaults(),
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":micro_" .. subname .. "_bottom 8",
|
||
|
recipe = {
|
||
|
{"default:stick"},
|
||
|
{recipeitem},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":micro_" .. subname .. "_top 1",
|
||
|
recipe = {
|
||
|
{modname .. ":micro_" .. subname .. "_bottom"},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
minetest.register_craft({
|
||
|
output = modname .. ":micro_" .. subname .. "_bottom 1",
|
||
|
recipe = {
|
||
|
{modname .. ":micro_" .. subname .. "_top"},
|
||
|
},
|
||
|
})
|
||
|
end
|
||
|
|
||
|
dofile(minetest.get_modpath("poudlard").."/nodes.lua")
|
||
|
dofile(minetest.get_modpath("poudlard").."/registration.lua")
|
||
|
dofile(minetest.get_modpath("poudlard").."/aliases.lua")
|
||
|
|
||
|
|
||
|
-- REDEFINITION default:wood =facedir
|
||
|
|
||
|
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(),
|
||
|
})
|
||
|
|
||
|
-- RESPAWN def
|
||
|
|
||
|
minetest.register_on_respawnplayer(function(player)
|
||
|
player:setpos({x=0, y=17, z=0})
|
||
|
return true
|
||
|
end)
|