summaryrefslogtreecommitdiff
path: root/gates.lua
blob: 3ffc0d67706d06b1dfba54dcb732666022fff314 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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 gate, open = unpack(string.split(node.name, "_", 2))
	local gate = gate.."_"
	local sound, name
	if open == "open" then
		sound = "close"
		name = "closed"
	else
		sound = "open"
		name = "open"
	end
	node.name = gate..name
	minetest.set_node(pos, node)
	minetest.sound_play("doors_door_"..sound, {
		pos = pos,
		gain = 0.3,
		max_hear_distance = 10
	})
end

local gates = {
	{"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"},
	{"pine", "Pine Wood", "default_pine_wood.png", "default:pinewood"},
	{"birch", "Birch Wood", "moretrees_birch_wood.png", "ethereal:birch_wood"},
}

for _, row in pairs(gates) do

minetest.register_node("ethereal:"..row[1].."gate_open", {
	tiles = {row[3]},
	paramtype = "light",
	paramtype2 = "facedir",
	sunlight_propagates = true,
	is_ground_content = false,
	walkable = true,
	groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_inventory = 1},
	drop = "ethereal:"..row[1].."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:"..row[1].."gate_closed", {
	description = row[2].." Gate",
	tiles = {row[3]},
	inventory_image = "default_gate_overlay.png^"..row[3].."^default_gate_overlay.png^[makealpha:255,126,126",
	wield_image = "default_gate_overlay.png^"..row[3].."^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,
})

minetest.register_craft({
	output = "ethereal:"..row[1].."gate_closed",
	recipe = {
		 {"group:stick", row[4], "group:stick"},
		 {"group:stick", row[4], "group:stick"},
	}
})

end