summaryrefslogtreecommitdiff
path: root/gates.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gates.lua')
-rw-r--r--gates.lua126
1 files changed, 126 insertions, 0 deletions
diff --git a/gates.lua b/gates.lua
new file mode 100644
index 0000000..aab18fa
--- /dev/null
+++ b/gates.lua
@@ -0,0 +1,126 @@
+-- Node Box coords
+local nb_gap = {
+ {-1, 0.1875, -0.0625, -0.5, 0.3125, 0.0625},
+ {-1, -0.1875, -0.0625, -0.5, -0.3125, 0.0625},
+ {0.5, 0.1875, -0.0625, 1, 0.3125, 0.0625},
+ {0.5, -0.1875, -0.0625, 1, -0.3125, 0.0625}
+ }
+
+local nb_pil = {
+ {0.5, -0.5, -0.09375, 0.5625, 0.5, 0.09375},
+ {-0.5625, -0.5, -0.09375, -0.5, 0.5, 0.09375},
+ {-0.5, -0.3125, -0.0625, -0.375, 0.3125, 0.0625},
+ {0.375, -0.3125, -0.0625, 0.5, 0.3125, 0.0625}
+ }
+
+-- Open/Close Gates
+function gate_rightclick(pos, node)
+ local data = nil
+ data = string.split(node.name, "_", 2)
+ local gate = data[1].."_"
+ local open = data[2]
+
+ if open == "open" then
+ minetest.sound_play("door_close", {pos=pos, gain = 0.3, max_hear_distance = 10})
+ minetest.set_node(pos, {name=gate.."closed", param2=node.param2})
+ else
+ minetest.sound_play("door_open", {pos=pos, gain = 0.3, max_hear_distance = 10})
+ minetest.set_node(pos, {name=gate.."open", param2=node.param2})
+ end
+end
+
+local gate = {}
+
+gate.type = {
+ {"wood", "Wood", "default_wood.png", "default:wood"},
+ {"junglewood", "Jungle Wood", "default_junglewood.png", "default:junglewood"},
+ {"scorched", "Scorched", "scorched_tree.png", "ethereal:scorched_tree"},
+ {"frostwood", "Frost Wood", "frost_wood.png", "ethereal:frost_wood"},
+ {"redwood", "Redwood", "redwood_wood.png", "ethereal:redwood_wood"},
+ {"willow", "Willow", "willow_wood.png", "ethereal:willow_wood"},
+ {"yellowwood", "Healing Wood", "yellow_wood.png", "ethereal:yellow_wood"},
+ {"palm", "Palm Wood", "moretrees_palm_wood.png", "ethereal:palm_wood"},
+ {"banana", "Banana Wood", "banana_wood.png", "ethereal:banana_wood"},
+ {"mushroom", "Mushroom", "mushroom_trunk.png", "ethereal:mushroom_trunk"},
+ {"acacia", "Acacia Wood", "moretrees_acacia_wood.png","ethereal:acacia_wood"},
+
+}
+
+for _, row in ipairs(gate.type) do
+ local name = row[1]
+ local desc = row[2]
+ local texture = row[3]
+ local nod = row[4]
+
+minetest.register_node("ethereal:"..name.."gate_open", {
+ tiles = {texture},
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ walkable = true,
+ groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_inventory = 1},
+ drop = "ethereal:"..name.."gate_closed",
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.3125, 0.4375, -0.375, 0.3125, 0.5},
+ {0.375, -0.3125, 0.4375, 0.5, 0.3125, 0.5},
+ {-0.5, 0.1875, 0.0625, -0.375, 0.3125, 0.4375},
+ {-0.5, -0.1875, 0.0625, -0.375, -0.3125, 0.4375},
+ {0.375, 0.1875, 0.0625, 0.5, 0.3125, 0.4375},
+ {0.375, -0.1875, 0.0625, 0.5, -0.3125, 0.4375},
+ nb_pil[1], nb_pil[2],
+ nb_pil[3], nb_pil[4],
+ nb_gap[1], nb_gap[2],
+ nb_gap[3], nb_gap[4],
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.3125, -0.0625, -0.375, 0.3125, 0.5},
+ {0.375, -0.3125, -0.0625, 0.5, 0.3125, 0.5},
+ }
+ },
+ on_rightclick = gate_rightclick,
+})
+
+minetest.register_node("ethereal:"..name.."gate_closed", {
+ description = name.." fence gate",
+ tiles = {texture},
+ inventory_image = "default_gate_overlay.png^"..texture.."^default_gate_overlay.png^[makealpha:255,126,126",
+ wield_image = "default_gate_overlay.png^"..texture.."^default_gate_overlay.png^[makealpha:255,126,126",
+ paramtype = "light",
+ paramtype2 = "facedir",
+ sunlight_propagates = true,
+ walkable = true,
+ groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ nb_pil[1], nb_pil[2],
+ nb_pil[3], nb_pil[4],
+ {-0.0625, -0.3125, -0.0625, 0.0625, 0.3125, 0.0625},
+ {-1, 0.1875, -0.0625, 1, 0.3125, 0.0625},
+ {-1, -0.1875, -0.0625, 1, -0.3125, 0.0625},
+ }
+ },
+ selection_box = {
+ type = "fixed",
+ fixed = {{-0.5, -0.3125, -0.0625, 0.5, 0.3125, 0.0625}}
+ },
+ on_rightclick = gate_rightclick,
+})
+
+-- Fencegate Recipe
+minetest.register_craft({
+ output = "ethereal:"..name.."gate_closed",
+ recipe = {
+ {"group:stick", nod, "group:stick"},
+ {"group:stick", nod, "group:stick"},
+ }
+})
+
+end