123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- -- Doors that are especially useful for travelnet elevators but can also be used in other situations.
- -- All doors (not only these here) in front of a travelnet or elevator are opened automaticly when a player arrives
- -- and are closed when a player departs from the travelnet or elevator.
- -- Autor: Sokomine
- local S = minetest.get_translator("travelnet")
- function travelnet.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,
- door = 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,
- door = 1
- },
- 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
- travelnet.register_door(":travelnet:elevator_door_steel", { "default_stone.png" }, "default:steel_ingot")
- travelnet.register_door(":travelnet:elevator_door_glass", { "travelnet_elevator_door_glass.png" }, "default:glass")
- travelnet.register_door(":travelnet:elevator_door_tin", { "default_clay.png" }, "default:tin_ingot")
- elseif minetest.registered_nodes[":mcl_core:wood"] then
- travelnet.register_door(":travelnet:elevator_door_steel", { "default_stone.png" }, "mcl_core:iron_ingot")
- travelnet.register_door(":travelnet:elevator_door_glass", { "travelnet_elevator_door_glass.png" }, "mcl_core:glass")
- -- travelnet.register_door("travelnet:elevator_door_tin", { "default_clay.png" }, "default:tin_ingot")
- end
|