@@ -17,9 +17,9 @@ doors = {}
17
17
-- open it
18
18
function doors :register_door (name , def )
19
19
def .groups .not_in_creative_inventory = 1
20
-
20
+
21
21
local box = {{- 0.5 , - 0.5 , - 0.5 , 0.5 , 0.5 , - 0.5 + 1.5 / 16 }}
22
-
22
+
23
23
if not def .node_box_bottom then
24
24
def .node_box_bottom = box
25
25
end
@@ -32,22 +32,22 @@ function doors:register_door(name, def)
32
32
if not def .selection_box_top then
33
33
def .selection_box_top = box
34
34
end
35
-
35
+
36
36
minetest .register_craftitem (name , {
37
37
description = def .description ,
38
38
inventory_image = def .inventory_image ,
39
-
39
+
40
40
on_place = function (itemstack , placer , pointed_thing )
41
41
if not pointed_thing .type == " node" then
42
42
return itemstack
43
43
end
44
-
44
+
45
45
local ptu = pointed_thing .under
46
46
local nu = minetest .get_node (ptu )
47
47
if minetest .registered_nodes [nu .name ].on_rightclick then
48
48
return minetest .registered_nodes [nu .name ].on_rightclick (ptu , nu , placer , itemstack )
49
49
end
50
-
50
+
51
51
local pt = pointed_thing .above
52
52
local pt2 = {x = pt .x , y = pt .y , z = pt .z }
53
53
pt2 .y = pt2 .y + 1
@@ -65,7 +65,7 @@ function doors:register_door(name, def)
65
65
minetest .record_protection_violation (pt , placer :get_player_name ())
66
66
return itemstack
67
67
end
68
-
68
+
69
69
local p2 = minetest .dir_to_facedir (placer :get_look_dir ())
70
70
local pt3 = {x = pt .x , y = pt .y , z = pt .z }
71
71
if p2 == 0 then
@@ -84,7 +84,7 @@ function doors:register_door(name, def)
84
84
minetest .set_node (pt , {name = name .. " _b_2" , param2 = p2 })
85
85
minetest .set_node (pt2 , {name = name .. " _t_2" , param2 = p2 })
86
86
end
87
-
87
+
88
88
if def .only_placer_can_open then
89
89
local pn = placer :get_player_name ()
90
90
local meta = minetest .get_meta (pt )
@@ -94,37 +94,37 @@ function doors:register_door(name, def)
94
94
meta :set_string (" doors_owner" , pn )
95
95
meta :set_string (" infotext" , " Owned by " .. pn )
96
96
end
97
-
97
+
98
98
if not minetest .setting_getbool (" creative_mode" ) then
99
99
itemstack :take_item ()
100
100
end
101
101
return itemstack
102
102
end ,
103
103
})
104
-
104
+
105
105
local tt = def .tiles_top
106
106
local tb = def .tiles_bottom
107
-
107
+
108
108
local function after_dig_node (pos , name )
109
109
if minetest .get_node (pos ).name == name then
110
110
minetest .remove_node (pos )
111
111
end
112
112
end
113
-
113
+
114
114
local function on_rightclick (pos , dir , check_name , replace , replace_dir , params )
115
115
pos .y = pos .y + dir
116
116
if not minetest .get_node (pos ).name == check_name then
117
117
return
118
118
end
119
119
local p2 = minetest .get_node (pos ).param2
120
120
p2 = params [p2 + 1 ]
121
-
121
+
122
122
minetest .swap_node (pos , {name = replace_dir , param2 = p2 })
123
-
123
+
124
124
pos .y = pos .y - dir
125
125
minetest .swap_node (pos , {name = replace , param2 = p2 })
126
126
end
127
-
127
+
128
128
local function check_player_priv (pos , player )
129
129
if not def .only_placer_can_open then
130
130
return true
@@ -133,7 +133,7 @@ function doors:register_door(name, def)
133
133
local pn = player :get_player_name ()
134
134
return meta :get_string (" doors_owner" ) == pn
135
135
end
136
-
136
+
137
137
minetest .register_node (name .. " _b_1" , {
138
138
tiles = {tb [2 ], tb [2 ], tb [2 ], tb [2 ], tb [1 ], tb [1 ].. " ^[transformfx" },
139
139
paramtype = " light" ,
@@ -149,21 +149,21 @@ function doors:register_door(name, def)
149
149
fixed = def .selection_box_bottom
150
150
},
151
151
groups = def .groups ,
152
-
152
+
153
153
after_dig_node = function (pos , oldnode , oldmetadata , digger )
154
154
pos .y = pos .y + 1
155
155
after_dig_node (pos , name .. " _t_1" )
156
156
end ,
157
-
157
+
158
158
on_rightclick = function (pos , node , clicker )
159
159
if check_player_priv (pos , clicker ) then
160
160
on_rightclick (pos , 1 , name .. " _t_1" , name .. " _b_2" , name .. " _t_2" , {1 ,2 ,3 ,0 })
161
161
end
162
162
end ,
163
-
163
+
164
164
can_dig = check_player_priv ,
165
165
})
166
-
166
+
167
167
minetest .register_node (name .. " _t_1" , {
168
168
tiles = {tt [2 ], tt [2 ], tt [2 ], tt [2 ], tt [1 ], tt [1 ].. " ^[transformfx" },
169
169
paramtype = " light" ,
@@ -179,21 +179,21 @@ function doors:register_door(name, def)
179
179
fixed = def .selection_box_top
180
180
},
181
181
groups = def .groups ,
182
-
182
+
183
183
after_dig_node = function (pos , oldnode , oldmetadata , digger )
184
184
pos .y = pos .y - 1
185
185
after_dig_node (pos , name .. " _b_1" )
186
186
end ,
187
-
187
+
188
188
on_rightclick = function (pos , node , clicker )
189
189
if check_player_priv (pos , clicker ) then
190
190
on_rightclick (pos , - 1 , name .. " _b_1" , name .. " _t_2" , name .. " _b_2" , {1 ,2 ,3 ,0 })
191
191
end
192
192
end ,
193
-
193
+
194
194
can_dig = check_player_priv ,
195
195
})
196
-
196
+
197
197
minetest .register_node (name .. " _b_2" , {
198
198
tiles = {tb [2 ], tb [2 ], tb [2 ], tb [2 ], tb [1 ].. " ^[transformfx" , tb [1 ]},
199
199
paramtype = " light" ,
@@ -209,21 +209,21 @@ function doors:register_door(name, def)
209
209
fixed = def .selection_box_bottom
210
210
},
211
211
groups = def .groups ,
212
-
212
+
213
213
after_dig_node = function (pos , oldnode , oldmetadata , digger )
214
214
pos .y = pos .y + 1
215
215
after_dig_node (pos , name .. " _t_2" )
216
216
end ,
217
-
217
+
218
218
on_rightclick = function (pos , node , clicker )
219
219
if check_player_priv (pos , clicker ) then
220
220
on_rightclick (pos , 1 , name .. " _t_2" , name .. " _b_1" , name .. " _t_1" , {3 ,0 ,1 ,2 })
221
221
end
222
222
end ,
223
-
223
+
224
224
can_dig = check_player_priv ,
225
225
})
226
-
226
+
227
227
minetest .register_node (name .. " _t_2" , {
228
228
tiles = {tt [2 ], tt [2 ], tt [2 ], tt [2 ], tt [1 ].. " ^[transformfx" , tt [1 ]},
229
229
paramtype = " light" ,
@@ -239,21 +239,20 @@ function doors:register_door(name, def)
239
239
fixed = def .selection_box_top
240
240
},
241
241
groups = def .groups ,
242
-
242
+
243
243
after_dig_node = function (pos , oldnode , oldmetadata , digger )
244
244
pos .y = pos .y - 1
245
245
after_dig_node (pos , name .. " _b_2" )
246
246
end ,
247
-
247
+
248
248
on_rightclick = function (pos , node , clicker )
249
249
if check_player_priv (pos , clicker ) then
250
250
on_rightclick (pos , - 1 , name .. " _b_2" , name .. " _t_1" , name .. " _b_1" , {3 ,0 ,1 ,2 })
251
251
end
252
252
end ,
253
-
253
+
254
254
can_dig = check_player_priv ,
255
255
})
256
-
257
256
end
258
257
259
258
doors :register_door (" doors:door_wood" , {
0 commit comments