Remove unused door code file

This commit is contained in:
Wuzzy 2024-03-29 17:41:34 +01:00
parent 9acb6701d7
commit 75a641b23f

View File

@ -1,819 +0,0 @@
--
-- Door mod
--
local S = minetest.get_translator("rp_door")
local GRAVITY = tonumber(minetest.settings:get("movement_gravity") or 9.81)
door = {}
-- Mark the door segment at pos as having a right hinge.
-- This function assumes that there is a door segment at pos.
local function set_segment_hinge_right(pos)
local meta = minetest.get_meta(pos)
-- the meta key "right" stores the door hinge:
-- * 0: hinge is left
-- * 1: hinge is right
meta:set_int("right", 1)
end
-- Remove node at pos and possibly trigger a fall
-- if a falling/attached node above
local function remove_node_and_check_falling(pos)
minetest.remove_node(pos)
local pos2 = {x=pos.x, y=pos.y+1, z=pos.z}
minetest.check_for_falling(pos2)
end
local function open_or_close_door_segment_raw(pos, dir, check_name, replace, replace_dir, params, sound_open_door, sound_close_door)
local other_pos = table.copy(pos)
other_pos.y = pos.y+dir
-- Check for the other door segment.
-- If it's is missing, it doesn't budge.
if minetest.get_node(other_pos).name ~= check_name then
return false
end
local p2 = minetest.get_node(pos).param2
local p2mod = p2 % 4
local p2flat = p2 - p2mod
p2mod = params[p2mod+1]
p2 = p2flat + p2mod
minetest.swap_node(other_pos, {name=replace_dir, param2=p2})
minetest.swap_node(pos, {name=replace, param2=p2})
local snd_1 = sound_close_door
local snd_2 = sound_open_door
if params[1] == 3 then
snd_1, snd_2 = snd_2, snd_1
end
local snd
if minetest.get_meta(pos):get_int("right") ~= 0 then
snd = snd_1
else
snd = snd_2
end
minetest.sound_play(
snd,
{
pos = pos,
gain = 0.8,
max_hear_distance = 10
}, true)
return true
end
local door_params = {
["_b_1"] = { 1, 2, 3, 0 },
["_t_1"] = { 1, 2, 3, 0 },
["_b_2"] = { 3, 0, 1, 2 },
["_t_2"] = { 3, 0, 1, 2 },
}
local on_toggle = function(pos, snddef, segment_type, base_name)
local ok = false
local params = door_params[segment_type]
if segment_type == "_b_1" then
ok = open_or_close_door_segment_raw(pos, 1, base_name.."_t_1", base_name.."_b_2", base_name.."_t_2", params, snddef.sound_open_door, snddef.sound_close_door)
elseif segment_type == "_t_1" then
ok = open_or_close_door_segment_raw(pos, -1, base_name.."_b_1", base_name.."_t_2", base_name.."_b_2", params, snddef.sound_open_door, snddef.sound_close_door)
elseif segment_type == "_b_2" then
ok = open_or_close_door_segment_raw(pos, 1, base_name.."_t_2", base_name.."_b_1", base_name.."_t_1", params, snddef.sound_open_door, snddef.sound_close_door)
elseif segment_type == "_t_2" then
ok = open_or_close_door_segment_raw(pos, -1, base_name.."_b_2", base_name.."_t_1", base_name.."_b_1", params, snddef.sound_open_door, snddef.sound_close_door)
else
minetest.log("error", "[rp_door] Called on_toggle with wrong segment_type!")
return false
end
if not ok then
local node = minetest.get_node(pos)
local def = minetest.registered_nodes[node.name]
if not def then
return false
end
if def.sounds and def.sounds.dug then
minetest.sound_play(def.sounds.dug, {pos=pos}, true)
end
-- Particles
minetest.add_particlespawner({
amount = math.random(10, 20),
time = 0.1,
minpos = vector.add(pos, {x=-0.4, y=-0.4, z=-0.4}),
maxpos = vector.add(pos, {x=0.4, y=0.4, z=0.4}),
minvel = {x=-0.2, y=-0.2, z=-0.2},
maxvel = {x=0.2, y=0.1, z=0.2},
minacc = {x=0, y=-GRAVITY, z=0},
maxacc = {x=0, y=-GRAVITY, z=0},
minexptime = 0.1,
maxexptime = 0.5,
minsize = 0.6,
maxsize = 0.8,
collisiondetection = true,
vertical = false,
node = node,
})
minetest.remove_node(pos)
return false
end
return true
end
door.is_open = function(pos)
local node = minetest.get_node(pos)
if minetest.get_item_group(node.name, "door") == 0 then
return nil
end
-- Get door segment type
local suffix = string.sub(node.name, -4, -1)
local params = door_params[suffix]
-- Open/closed state (true = open, false = closed)
local state1 = true
local state2 = false
if params[1] == 3 then
state1, state2 = state2, state1
end
local state
-- left/right hinge
if minetest.get_meta(pos):get_int("right") ~= 0 then
state = state1
else
state = state2
end
return state
end
door.get_free_axis = function(pos)
local node = minetest.get_node(pos)
if minetest.get_item_group(node.name, "door") == 0 then
return nil
end
local p2m = node.param2 % 4
if p2m == 0 or p2m == 2 then
return "x"
else
return "z"
end
end
-- Registers a door
function door.register_door(name, def)
local box = {{-0.5, -0.5, -0.5, 0.5, 0.5, -0.5+1.5/16}}
if not def.node_box_bottom then
def.node_box_bottom = box
end
if not def.node_box_top then
def.node_box_top = box
end
if not def.selection_box_bottom then
def.selection_box_bottom= box
end
if not def.selection_box_top then
def.selection_box_top = box
end
if not def.sound_close_door then
def.sound_close_door = "door_close"
end
if not def.sound_open_door then
def.sound_open_door = "door_open"
end
if not def.groups then
def.groups = {}
end
local groups_craftitem = table.copy(def.groups)
groups_craftitem.node = 1
groups_craftitem.creative_decoblock = 1
groups_craftitem.interactive_node = 1
-- Door item (for the players)
minetest.register_craftitem(
name, {
description = def.description,
inventory_image = def.inventory_image,
groups = groups_craftitem,
on_place = function(itemstack, placer, pointed_thing)
-- Handle pointed node handlers first
local handled, handled_itemstack = util.on_place_pointed_node_handler(itemstack, placer, pointed_thing)
if handled then
return handled_itemstack
end
-- Check protection
local pos_protected = minetest.get_pointed_thing_position(pointed_thing, true)
for i=0, 1 do
local protpos = vector.add(pos_protected, vector.new(0, i, 0))
if minetest.is_protected(protpos, placer:get_player_name()) and
not minetest.check_player_privs(placer, "protection_bypass") then
minetest.record_protection_violation(protpos, placer:get_player_name())
return itemstack
end
end
local pt = pointed_thing.above
local pt2 = {x=pt.x, y=pt.y, z=pt.z}
pt2.y = pt2.y+1
local ptdef = minetest.registered_nodes[minetest.get_node(pt).name]
local pt2def = minetest.registered_nodes[minetest.get_node(pt2).name]
if
not ptdef or
not pt2def or
not ptdef.buildable_to or
not pt2def.buildable_to or
not placer or
not placer:is_player()
then
rp_sounds.play_place_failed_sound(placer)
return itemstack
end
-- Check if there's already a door left from this door.
-- If yes, the door hinge will be right, otherwise it will be left.
-- This allows to build double doors.
local p2 = minetest.dir_to_fourdir(placer:get_look_dir())
local pt3 = {x=pt.x, y=pt.y, z=pt.z}
if p2 == 0 then
pt3.x = pt3.x-1
elseif p2 == 1 then
pt3.z = pt3.z+1
elseif p2 == 2 then
pt3.x = pt3.x+1
elseif p2 == 3 then
pt3.z = pt3.z-1
end
if minetest.get_item_group(minetest.get_node(pt3).name, "door") == 0 then
minetest.set_node(pt, {name=name.."_b_1", param2=p2})
minetest.set_node(pt2, {name=name.."_t_1", param2=p2})
else
minetest.set_node(pt, {name=name.."_b_2", param2=p2})
minetest.set_node(pt2, {name=name.."_t_2", param2=p2})
set_segment_hinge_right(pt)
set_segment_hinge_right(pt2)
end
if def.sounds and def.sounds.place then
minetest.sound_play(def.sounds.place, {pos=pt}, true)
end
if not minetest.is_creative_enabled(placer:get_player_name()) then
itemstack:take_item()
end
return itemstack
end,
})
local tt = def.tiles_top
local tb = def.tiles_bottom
local ott = def.overlay_tiles_top
local otb = def.overlay_tiles_bottom
local transformTileFX = function(tile)
if type(tile) == "string" then
return tile .. "^[transformFX"
elseif type(tile) == "table" then
local newtile = table.copy(tile)
newtile.name = newtile.name .. "^[transformFX"
return newtile
else
minetest.log("error", "[rp_door] Called transformTileFX with unknown tile type! tile="..tostring(tile))
end
end
local on_paint_or_unpaint = function(pos, new_param2, dir, check_name, replace_name)
local other_pos = table.copy(pos)
other_pos.y = pos.y+dir
local other_node = minetest.get_node(other_pos)
if other_node.name == check_name then
other_node.name = replace_name
other_node.param2 = new_param2
minetest.swap_node(other_pos, other_node)
end
return true
end
--[[ Register door segments
(internal use, should not be obtainable by player) ]]
local groups_node = table.copy(def.groups)
groups_node.not_in_creative_inventory = 1
local groups_node_b_1 = table.copy(groups_node)
-- door position: 1 = bottom, 2 = top
groups_node_b_1.door_position = 1
groups_node_b_1.door_state = 1
local groups_node_b_2 = table.copy(groups_node)
groups_node_b_2.door_position = 1
groups_node_b_2.door_state = 2
local groups_node_t_1 = table.copy(groups_node)
groups_node_t_1.door_position = 2
groups_node_t_1.door_state = 1
local groups_node_t_2 = table.copy(groups_node)
groups_node_t_2.door_position = 2
groups_node_t_2.door_state = 2
local painted_name, unpainted_name, drop_name
local palette
local paramtype2 = "4dir"
if def.is_painted then
paramtype2 = "color4dir"
palette = "rp_paint_palette_64.png"
end
if def.can_paint and not def.is_painted then
painted_name = name .. "_painted"
elseif def.is_painted then
painted_name = name
end
if def.can_unpaint then
unpainted_name = string.sub(name, 1, -9)
drop_name = unpainted_name
else
drop_name = name
end
local sounds = {}
if def.sounds then
sounds = table.copy(def.sounds)
end
sounds._rp_door_close = def.sound_close_door
sounds._rp_door_open = def.sound_open_door
-- Door segment: bottom, state 1
minetest.register_node(
name.."_b_1",
{
inventory_image = tb[1] .. "^rp_door_overlay_state_1.png",
tiles = {tb[2], tb[2], tb[2], tb[2], tb[1], transformTileFX(tb[1])},
overlay_tiles = otb and {otb[2], otb[2], otb[2], otb[2], otb[1], transformTileFX(otb[1])},
use_texture_alpha = "clip",
paramtype = "light",
paramtype2 = paramtype2,
palette = palette,
drop = drop_name,
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = def.node_box_bottom
},
selection_box = {
type = "fixed",
fixed = def.selection_box_bottom
},
groups = groups_node_b_1,
on_rightclick = function(pos, node, clicker)
on_toggle(pos, def, "_b_1", name, true)
end,
_on_paint = function(pos, new_param2)
local node = minetest.get_node(pos)
on_paint_or_unpaint(pos, new_param2, 1, name.."_t_1", painted_name.."_t_1")
end,
_on_unpaint = function(pos, newnode)
local node = minetest.get_node(pos)
on_paint_or_unpaint(pos, newnode.param2, 1, name.."_t_1", unpainted_name.."_t_1")
end,
floodable = true,
on_flood = function(bottom, oldnode)
local top = { x = bottom.x, y = bottom.y + 1, z = bottom.z }
if minetest.get_node(bottom).name ~= name.."_b_2" and minetest.get_node(top).name == name.."_t_1" then
remove_node_and_check_falling(top)
minetest.add_item(bottom, drop_name)
end
end,
on_blast = function(bottom)
minetest.remove_node(bottom)
end,
after_destruct = function(bottom, oldnode)
local top = { x = bottom.x, y = bottom.y + 1, z = bottom.z }
if minetest.get_node(bottom).name ~= name.."_b_2" and minetest.get_node(top).name == name.."_t_1" then
remove_node_and_check_falling(top)
end
end,
is_ground_content = false,
sounds = sounds,
sunlight_propagates = def.sunlight,
-- Additional fields for rp_paint mod
_rp_unpainted_node_name = unpainted_name and unpainted_name.."_b_1",
_rp_painted_node_name = painted_name and painted_name.."_b_1",
_rp_paint_particle_node = def.paint_particle_node,
})
-- Door segment: top, state 1
minetest.register_node(
name.."_t_1",
{
inventory_image = tt[1] .. "^rp_door_overlay_state_1.png",
tiles = {tt[2], tt[2], tt[2], tt[2], tt[1], transformTileFX(tt[1])},
overlay_tiles = ott and {ott[2], ott[2], ott[2], ott[2], ott[1], transformTileFX(ott[1])},
use_texture_alpha = "clip",
paramtype = "light",
paramtype2 = paramtype2,
palette = palette,
drop = "",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = def.node_box_top
},
selection_box = {
type = "fixed",
fixed = def.selection_box_top
},
groups = groups_node_t_1,
on_rightclick = function(pos, node, clicker)
on_toggle(pos, def, "_t_1", name, true)
end,
_on_paint = function(pos, new_param2)
local node = minetest.get_node(pos)
on_paint_or_unpaint(pos, new_param2, -1, name.."_b_1", painted_name.."_b_1")
end,
_on_unpaint = function(pos, newnode)
local node = minetest.get_node(pos)
on_paint_or_unpaint(pos, newnode.param2, -1, name.."_b_1", unpainted_name.."_b_1")
end,
floodable = true,
on_flood = function(top, oldnode)
local bottom = { x = top.x, y = top.y - 1, z = top.z }
if minetest.get_node(top).name ~= name.."_t_2" and minetest.get_node(bottom).name == name.."_b_1" and oldnode.name == name.."_t_1" then
minetest.dig_node(bottom)
minetest.add_item(bottom, drop_name)
end
end,
on_blast = function(top)
minetest.remove_node(top)
end,
after_destruct = function(top, oldnode)
local bottom = { x = top.x, y = top.y - 1, z = top.z }
if minetest.get_node(top).name ~= name.."_t_2" and minetest.get_node(bottom).name == name.."_b_1" and oldnode.name == name.."_t_1" then
minetest.dig_node(bottom)
end
end,
is_ground_content = false,
sounds = sounds,
sunlight_propagates = def.sunlight,
-- Additional fields for rp_paint mod
_rp_unpainted_node_name = unpainted_name and unpainted_name.."_t_1",
_rp_painted_node_name = painted_name and painted_name.."_t_1",
_rp_paint_particle_node = def.paint_particle_node,
})
-- Door segment: bottom, state 2
minetest.register_node(
name.."_b_2",
{
inventory_image = "("..tb[1] .. "^[transformfx)^rp_door_overlay_state_2.png",
tiles = {tb[2], tb[2], tb[2], tb[2], transformTileFX(tb[1]), tb[1]},
overlay_tiles = otb and {otb[2], otb[2], otb[2], otb[2], transformTileFX(otb[1]), otb[1]},
use_texture_alpha = "clip",
paramtype = "light",
paramtype2 = paramtype2,
palette = palette,
drop = drop_name,
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = def.node_box_bottom
},
selection_box = {
type = "fixed",
fixed = def.selection_box_bottom
},
groups = groups_node_b_2,
on_rightclick = function(pos, node, clicker)
on_toggle(pos, def, "_b_2", name, true)
end,
_on_paint = function(pos, new_param2)
local node = minetest.get_node(pos)
on_paint_or_unpaint(pos, new_param2, 1, name.."_t_2", painted_name.."_t_2")
end,
_on_unpaint = function(pos, newnode)
local node = minetest.get_node(pos)
on_paint_or_unpaint(pos, newnode.param2, 1, name.."_t_2", unpainted_name.."_t_2")
end,
floodable = true,
on_flood = function(bottom, oldnode)
local top = { x = bottom.x, y = bottom.y + 1, z = bottom.z }
if minetest.get_node(bottom).name ~= name.."_b_1" and minetest.get_node(top).name == name.."_t_2" then
remove_node_and_check_falling(top)
minetest.add_item(bottom, drop_name)
end
end,
on_blast = function(bottom)
minetest.remove_node(bottom)
end,
after_destruct = function(bottom, oldnode)
local top = { x = bottom.x, y = bottom.y + 1, z = bottom.z }
if minetest.get_node(bottom).name ~= name.."_b_1" and minetest.get_node(top).name == name.."_t_2" then
remove_node_and_check_falling(top)
end
end,
is_ground_content = false,
sounds = sounds,
sunlight_propagates = def.sunlight,
-- Additional fields for rp_paint mod
_rp_unpainted_node_name = unpainted_name and unpainted_name.."_b_2",
_rp_painted_node_name = painted_name and painted_name.."_b_2",
_rp_paint_particle_node = def.paint_particle_node,
})
-- Door segment: top, state 2
minetest.register_node(
name.."_t_2",
{
inventory_image = "("..tt[1] .. "^[transformfx)^rp_door_overlay_state_2.png",
tiles = {tt[2], tt[2], tt[2], tt[2], transformTileFX(tt[1]), tt[1]},
overlay_tiles = ott and {ott[2], ott[2], ott[2], ott[2], transformTileFX(ott[1]), ott[1]},
use_texture_alpha = "clip",
paramtype = "light",
paramtype2 = paramtype2,
palette = palette,
drop = "",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = def.node_box_top
},
selection_box = {
type = "fixed",
fixed = def.selection_box_top
},
groups = groups_node_t_2,
on_rightclick = function(pos, node, clicker)
on_toggle(pos, def, "_t_2", name, true)
end,
_on_paint = function(pos, new_param2)
local node = minetest.get_node(pos)
on_paint_or_unpaint(pos, new_param2, -1, name.."_b_2", painted_name.."_b_2")
end,
_on_unpaint = function(pos, newnode)
local node = minetest.get_node(pos)
on_paint_or_unpaint(pos, newnode.param2, -1, name.."_b_2", unpainted_name.."_b_2")
end,
floodable = true,
on_flood = function(top, oldnode)
local bottom = { x = top.x, y = top.y - 1, z = top.z }
if minetest.get_node(top).name ~= name.."_t_1" and minetest.get_node(bottom).name == name.."_b_2" and oldnode.name == name.."_t_2" then
minetest.dig_node(bottom)
minetest.add_item(bottom, drop_name)
end
end,
on_blast = function(top)
minetest.remove_node(top)
end,
after_destruct = function(top, oldnode)
local bottom = { x = top.x, y = top.y - 1, z = top.z }
if minetest.get_node(top).name ~= name.."_t_1" and minetest.get_node(bottom).name == name.."_b_2" and oldnode.name == name.."_t_2" then
minetest.dig_node(bottom)
end
end,
is_ground_content = false,
sounds = sounds,
sunlight_propagates = def.sunlight,
-- Additional fields for rp_paint mod
_rp_unpainted_node_name = unpainted_name and unpainted_name.."_t_2",
_rp_painted_node_name = painted_name and painted_name.."_t_2",
_rp_paint_particle_node = def.paint_particle_node,
})
end
function door.init_segment(pos, is_open)
local node = minetest.get_node(pos)
local state = minetest.get_item_group(node.name, "door_state")
if state == 0 then
return
end
if is_open == nil then
is_open = false
end
if (state == 2 and is_open == false) or (state == 1 and is_open == true) then
set_segment_hinge_right(pos)
end
end
local sounds_wood_door = rp_sounds.node_sound_planks_defaults({
dig = { name = "rp_sounds_dig_wood", pitch = 1.2, gain = 0.5 },
dug = { name = "rp_sounds_dug_planks", pitch = 1.1, gain = 0.7 },
place = { name = "rp_sounds_place_planks", pitch = 1.1, gain = 0.9 },
})
door.register_door(
"rp_door:door_wood",
{
description = S("Wooden Door"),
inventory_image = "door_wood.png",
groups = {choppy=3,oddly_breakable_by_hand=2,level=-2,flammable=2,door=1,door_wood=1,paintable=2},
tiles_top = {"door_wood_a.png", "door_wood_side.png"},
tiles_bottom = {"door_wood_b.png", "door_wood_side.png"},
sounds = sounds_wood_door,
sunlight = false,
can_paint = true,
})
door.register_door(
"rp_door:door_wood_painted",
{
description = S("Painted Wooden Door"),
inventory_image = "door_wood.png^[hsl:0:-100:0",
groups = {choppy=3,oddly_breakable_by_hand=2,level=-2,flammable=2,door=1,door_wood=1,paintable=1,not_in_creative_inventory=1},
tiles_top = {"door_wood_a_painted.png", {name="door_wood_side.png",color="white"}},
tiles_bottom = {"door_wood_b_painted.png", {name="door_wood_side.png",color="white"}},
overlay_tiles_top = {{name="door_wood_a_painted_overlay.png",color="white"}, ""},
overlay_tiles_bottom = {{name="door_wood_b_painted_overlay.png",color="white"}, ""},
sounds = sounds_wood_door,
sunlight = false,
is_painted = true,
can_unpaint = true,
paint_particle_node = false,
})
crafting.register_craft(
{
output = "rp_door:door_wood",
items = {
"rp_default:fiber 6",
"rp_default:stick 7",
"rp_default:planks 2",
}
})
door.register_door(
"rp_door:door_wood_oak",
{
description = S("Oak Door"),
inventory_image = "rp_door_wood_oak.png",
groups = {choppy=3,oddly_breakable_by_hand=2,level=-2,flammable=2,door=1,door_wood=1,paintable=2},
tiles_top = {"rp_door_wood_oak_a.png", "rp_door_wood_oak_side.png"},
tiles_bottom = {"rp_door_wood_oak_b.png", "rp_door_wood_oak_side.png"},
sounds = sounds_wood_door,
sunlight = false,
can_paint = true,
})
door.register_door(
"rp_door:door_wood_oak_painted",
{
description = S("Painted Oak Door"),
inventory_image = "rp_door_wood_oak.png^[hsl:0:-100:0",
groups = {choppy=3,oddly_breakable_by_hand=2,level=-2,flammable=2,door=1,door_wood=1,paintable=1,not_in_creative_inventory=1},
tiles_top = {"rp_door_wood_oak_a_painted.png", {name="rp_door_wood_oak_side.png",color="white"}},
tiles_bottom = {"rp_door_wood_oak_b_painted.png", {name="rp_door_wood_oak_side.png",color="white"}},
overlay_tiles_top = {{name="rp_door_wood_oak_a_painted_overlay.png",color="white"}, ""},
overlay_tiles_bottom = {{name="rp_door_wood_oak_b_painted_overlay.png",color="white"}, ""},
sounds = sounds_wood_door,
sunlight = false,
is_painted = true,
can_unpaint = true,
paint_particle_node = false,
})
crafting.register_craft(
{
output = "rp_door:door_wood_oak",
items = {
"rp_default:fiber 6",
"rp_default:stick 7",
"rp_default:planks_oak 2",
}
})
door.register_door(
"rp_door:door_wood_birch",
{
description = S("Birch Door"),
inventory_image = "rp_door_wood_birch.png",
groups = {choppy=3,oddly_breakable_by_hand=2,level=-2,flammable=2,door=1,door_wood=1,paintable=2},
tiles_top = {"rp_door_wood_birch_a.png", "rp_door_wood_birch_side.png"},
tiles_bottom = {"rp_door_wood_birch_b.png", "rp_door_wood_birch_side.png"},
sounds = sounds_wood_door,
sunlight = false,
can_paint = true,
})
door.register_door(
"rp_door:door_wood_birch_painted",
{
description = S("Painted Birch Door"),
inventory_image = "rp_door_wood_birch.png^[hsl:0:-100:0",
groups = {choppy=3,oddly_breakable_by_hand=2,level=-2,flammable=2,door=1,door_wood=1,paintable=1,not_in_creative_inventory=1},
tiles_top = {"rp_door_wood_birch_a_painted.png", {name="rp_door_wood_birch_side.png",color="white"}},
tiles_bottom = {"rp_door_wood_birch_b_painted.png", {name="rp_door_wood_birch_side.png",color="white"}},
overlay_tiles_top = {{name="rp_door_wood_birch_a_painted_overlay.png",color="white"}, ""},
overlay_tiles_bottom = {{name="rp_door_wood_birch_b_painted_overlay.png",color="white"}, ""},
sounds = sounds_wood_door,
sunlight = false,
is_painted = true,
can_unpaint = true,
paint_particle_node = false,
})
crafting.register_craft(
{
output = "rp_door:door_wood_birch",
items = {
"rp_default:fiber 6",
"rp_default:stick 7",
"rp_default:planks_birch 2",
}
})
minetest.register_craft({
type = "fuel",
recipe = "group:door_wood",
burntime = 15
})
door.register_door(
"rp_door:door_stone",
{
description = S("Stone Door"),
inventory_image = "door_stone.png",
groups = {cracky=3,oddly_breakable_by_hand=1,level=-2,door=1},
tiles_top = {"door_stone_a.png", "door_stone_side.png"},
tiles_bottom = {"door_stone_b.png", "door_stone_side.png"},
sounds = rp_sounds.node_sound_stone_defaults(),
sunlight = false,
sound_open_door = "door_open_stone",
sound_close_door = "door_close_stone",
})
door.toggle_door = function(pos)
local node = minetest.get_node(pos)
if minetest.get_item_group(node.name, "door") == 0 then
return false
end
local suffix = string.sub(node.name, -4, -1)
local prefix = string.sub(node.name, 1, -5)
local nodedef = minetest.registered_nodes[node.name]
local snddef = {}
if nodedef and nodedef.sounds then
snddef = {
sound_open_door = nodedef.sounds._rp_door_open,
sound_close_door = nodedef.sounds._rp_door_close,
}
end
return on_toggle(pos, snddef, suffix, prefix)
end
crafting.register_craft(
{
output = "rp_door:door_stone",
items = {
"rp_default:fiber 6",
"rp_default:stick 7",
"group:stone 2",
}
})
-- Achievements
achievements.register_achievement(
"adoorable",
{
title = S("Adoorable"),
description = S("Craft a door."),
times = 1,
craftitem = "group:door",
item_icon = "rp_door:door_wood",
difficulty = 2.2,
})
minetest.register_alias("door:door_stone", "rp_door:door_stone")
minetest.register_alias("door:door_stone_b_1", "rp_door:door_stone_b_1")
minetest.register_alias("door:door_stone_b_2", "rp_door:door_stone_b_2")
minetest.register_alias("door:door_stone_t_1", "rp_door:door_stone_t_1")
minetest.register_alias("door:door_stone_t_2", "rp_door:door_stone_t_2")
minetest.register_alias("door:door_wood", "rp_door:door_wood")
minetest.register_alias("door:door_wood_b_1", "rp_door:door_wood_b_1")
minetest.register_alias("door:door_wood_b_2", "rp_door:door_wood_b_2")
minetest.register_alias("door:door_wood_t_1", "rp_door:door_wood_t_1")
minetest.register_alias("door:door_wood_t_2", "rp_door:door_wood_t_2")