Namespacing pt. 1
This commit is contained in:
145
mods/ip_elevator/doors.lua
Normal file
145
mods/ip_elevator/doors.lua
Normal file
@@ -0,0 +1,145 @@
|
||||
-- Doors that are especially useful for elevator elevators but can also be used in other situations.
|
||||
-- All doors (not only these here) in front of a elevator or elevator are opened automaticly when a player arrives
|
||||
-- and are closed when a player departs from the elevator or elevator.
|
||||
-- Autor: Sokomine
|
||||
local S = minetest.get_translator("elevator")
|
||||
|
||||
|
||||
doors.register("elevator:swing_door", {
|
||||
tiles = {
|
||||
{name = "elevator_door.png", backface_culling = true}
|
||||
},
|
||||
description = "Swinging Elevator Door",
|
||||
inventory_image = "elevator_door.png",
|
||||
groups = {cracky = 2, door = 1},
|
||||
})
|
||||
|
||||
doors.register("elevator:swing_door_aqua", {
|
||||
tiles = {
|
||||
{name = "elevator_door1.png", backface_culling = true}
|
||||
},
|
||||
description = "Swinging Elevator Door",
|
||||
inventory_image = "elevator_door1.png",
|
||||
groups = {cracky = 2, door = 1},
|
||||
})
|
||||
|
||||
function elevator.register_door(node_base_name, def_tiles, material)
|
||||
local closed_door = node_base_name .. "_closed"
|
||||
local open_door = node_base_name .. "_open"
|
||||
|
||||
minetest.register_node(open_door, {
|
||||
description = S("elevator door (open)"),
|
||||
drawtype = "nodebox",
|
||||
tiles = def_tiles,
|
||||
use_texture_alpha = "clip",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = true,
|
||||
-- only the closed variant is in creative inventory
|
||||
groups = {
|
||||
snappy = 2,
|
||||
choppy = 2,
|
||||
oddly_breakable_by_hand = 2,
|
||||
not_in_creative_inventory = 1
|
||||
},
|
||||
-- larger than one node but slightly smaller than a half node so
|
||||
-- that wallmounted torches pose no problem
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.90, -0.5, 0.4, -0.49, 1.5, 0.5 },
|
||||
{ 0.49, -0.5, 0.4, 0.9, 1.5, 0.5 },
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.9, -0.5, 0.4, 0.9, 1.5, 0.5 },
|
||||
},
|
||||
},
|
||||
drop = closed_door,
|
||||
on_rightclick = function(pos, node)
|
||||
minetest.add_node(pos, {
|
||||
name = closed_door,
|
||||
param2 = node.param2
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node(closed_door, {
|
||||
description = S("elevator door (closed)"),
|
||||
drawtype = "nodebox",
|
||||
tiles = def_tiles,
|
||||
use_texture_alpha = "clip",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = true,
|
||||
groups = {
|
||||
snappy = 2,
|
||||
choppy = 2,
|
||||
oddly_breakable_by_hand = 2
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.5, -0.5, 0.4, -0.01, 1.5, 0.5 },
|
||||
{ 0.01, -0.5, 0.4, 0.5, 1.5, 0.5 },
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.5, -0.5, 0.4, 0.5, 1.5, 0.5 },
|
||||
},
|
||||
},
|
||||
on_rightclick = function(pos, node)
|
||||
minetest.add_node(pos, {
|
||||
name = open_door,
|
||||
param2 = node.param2
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
-- add a craft receipe for the door
|
||||
minetest.register_craft({
|
||||
output = closed_door,
|
||||
recipe = {
|
||||
{ material, "", material },
|
||||
{ material, "", material },
|
||||
{ material, "", material }
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
-- Make doors reacts to mesecons
|
||||
if minetest.get_modpath("mesecons") then
|
||||
local mesecons = {
|
||||
effector = {
|
||||
action_on = function(pos, node)
|
||||
minetest.add_node(pos, {
|
||||
name = open_door,
|
||||
param2 = node.param2
|
||||
})
|
||||
end,
|
||||
action_off = function(pos, node)
|
||||
minetest.add_node(pos, {
|
||||
name = closed_door,
|
||||
param2 = node.param2
|
||||
})
|
||||
end,
|
||||
rules = mesecon.rules.pplate
|
||||
}
|
||||
}
|
||||
|
||||
minetest.override_item(closed_door, { mesecons=mesecons })
|
||||
minetest.override_item(open_door, { mesecons=mesecons })
|
||||
end
|
||||
end
|
||||
|
||||
-- actually register the doors
|
||||
-- (but only if the materials for them exist)
|
||||
if minetest.get_modpath("default") then
|
||||
elevator.register_door("elevator:elevator_door_steel", { "default_stone.png" }, "default:steel_ingot")
|
||||
elevator.register_door("elevator:elevator_door_glass", { "elevator_elevator_door_glass.png" }, "default:glass")
|
||||
elevator.register_door("elevator:elevator_door_tin", { "default_clay.png" }, "default:tin_ingot")
|
||||
end
|
||||
Reference in New Issue
Block a user