commit | author | age
|
773382
|
1 |
function swap_gate_node(pos,name,dir) |
R |
2 |
local node = minetest.env:get_node(pos) |
|
3 |
local meta = minetest.env:get_meta(pos) |
|
4 |
local meta0 = meta:to_table() |
|
5 |
node.name = name |
|
6 |
node.param1=0 |
|
7 |
node.param2=dir |
|
8 |
minetest.env:set_node(pos,node) |
|
9 |
meta:from_table(meta0) |
|
10 |
end |
|
11 |
|
|
12 |
function getDir (player) |
|
13 |
local dir=player:get_look_dir() |
|
14 |
if math.abs(dir.x)>math.abs(dir.z) then |
|
15 |
if dir.x>0 then return 0 end |
|
16 |
return 1 |
|
17 |
end |
|
18 |
if dir.z>0 then return 2 end |
|
19 |
return 3 |
|
20 |
end |
|
21 |
|
|
22 |
function checkNode (pos) |
|
23 |
local node=minetest.env:get_node(pos) |
|
24 |
if node.name == "air" then return 0 end |
|
25 |
return 1 |
|
26 |
end |
|
27 |
|
|
28 |
function addGateNode (gateNodes,i,pos) |
|
29 |
gateNodes[i].pos.x=pos.x |
|
30 |
gateNodes[i].pos.y=pos.y |
|
31 |
gateNodes[i].pos.z=pos.z |
|
32 |
end |
|
33 |
|
|
34 |
function placeGate (player,pos) |
|
35 |
local player_name=player:get_player_name() |
|
36 |
local dir=minetest.dir_to_facedir(player:get_look_dir()) |
|
37 |
local pos1=pos |
|
38 |
local gateNodes={} |
|
39 |
for i=1,9,1 do |
|
40 |
gateNodes[i]={} |
|
41 |
gateNodes[i].pos={} |
|
42 |
end |
|
43 |
if dir==1 then |
|
44 |
addGateNode(gateNodes,1,pos1) |
|
45 |
pos1.z=pos1.z+1 |
|
46 |
addGateNode(gateNodes,2,pos1) |
|
47 |
pos1.z=pos1.z-2 |
|
48 |
addGateNode(gateNodes,3,pos1) |
|
49 |
pos1.z=pos1.z+1 |
|
50 |
pos1.y=pos1.y+1 |
|
51 |
addGateNode(gateNodes,4,pos1) |
|
52 |
pos1.z=pos1.z+1 |
|
53 |
addGateNode(gateNodes,5,pos1) |
|
54 |
pos1.z=pos1.z-2 |
|
55 |
addGateNode(gateNodes,6,pos1) |
|
56 |
pos1.z=pos1.z+1 |
|
57 |
pos1.y=pos1.y+1 |
|
58 |
addGateNode(gateNodes,7,pos1) |
|
59 |
pos1.z=pos1.z+1 |
|
60 |
addGateNode(gateNodes,8,pos1) |
|
61 |
pos1.z=pos1.z-2 |
|
62 |
addGateNode(gateNodes,9,pos1) |
|
63 |
end |
|
64 |
if dir==3 then |
|
65 |
addGateNode(gateNodes,1,pos1) |
|
66 |
pos1.z=pos1.z+1 |
|
67 |
addGateNode(gateNodes,3,pos1) |
|
68 |
pos1.z=pos1.z-2 |
|
69 |
addGateNode(gateNodes,2,pos1) |
|
70 |
pos1.z=pos1.z+1 |
|
71 |
pos1.y=pos1.y+1 |
|
72 |
addGateNode(gateNodes,4,pos1) |
|
73 |
pos1.z=pos1.z+1 |
|
74 |
addGateNode(gateNodes,6,pos1) |
|
75 |
pos1.z=pos1.z-2 |
|
76 |
addGateNode(gateNodes,5,pos1) |
|
77 |
pos1.z=pos1.z+1 |
|
78 |
pos1.y=pos1.y+1 |
|
79 |
addGateNode(gateNodes,7,pos1) |
|
80 |
pos1.z=pos1.z+1 |
|
81 |
addGateNode(gateNodes,9,pos1) |
|
82 |
pos1.z=pos1.z-2 |
|
83 |
addGateNode(gateNodes,8,pos1) |
|
84 |
end |
|
85 |
if dir==2 then |
|
86 |
addGateNode(gateNodes,1,pos1) |
|
87 |
pos1.x=pos1.x+1 |
|
88 |
addGateNode(gateNodes,2,pos1) |
|
89 |
pos1.x=pos1.x-2 |
|
90 |
addGateNode(gateNodes,3,pos1) |
|
91 |
pos1.x=pos1.x+1 |
|
92 |
pos1.y=pos1.y+1 |
|
93 |
addGateNode(gateNodes,4,pos1) |
|
94 |
pos1.x=pos1.x+1 |
|
95 |
addGateNode(gateNodes,5,pos1) |
|
96 |
pos1.x=pos1.x-2 |
|
97 |
addGateNode(gateNodes,6,pos1) |
|
98 |
pos1.x=pos1.x+1 |
|
99 |
pos1.y=pos1.y+1 |
|
100 |
addGateNode(gateNodes,7,pos1) |
|
101 |
pos1.x=pos1.x+1 |
|
102 |
addGateNode(gateNodes,8,pos1) |
|
103 |
pos1.x=pos1.x-2 |
|
104 |
addGateNode(gateNodes,9,pos1) |
|
105 |
end |
|
106 |
if dir==0 then |
|
107 |
addGateNode(gateNodes,1,pos1) |
|
108 |
pos1.x=pos1.x+1 |
|
109 |
addGateNode(gateNodes,3,pos1) |
|
110 |
pos1.x=pos1.x-2 |
|
111 |
addGateNode(gateNodes,2,pos1) |
|
112 |
pos1.x=pos1.x+1 |
|
113 |
pos1.y=pos1.y+1 |
|
114 |
addGateNode(gateNodes,4,pos1) |
|
115 |
pos1.x=pos1.x+1 |
|
116 |
addGateNode(gateNodes,6,pos1) |
|
117 |
pos1.x=pos1.x-2 |
|
118 |
addGateNode(gateNodes,5,pos1) |
|
119 |
pos1.x=pos1.x+1 |
|
120 |
pos1.y=pos1.y+1 |
|
121 |
addGateNode(gateNodes,7,pos1) |
|
122 |
pos1.x=pos1.x+1 |
|
123 |
addGateNode(gateNodes,9,pos1) |
|
124 |
pos1.x=pos1.x-2 |
|
125 |
addGateNode(gateNodes,8,pos1) |
|
126 |
end |
|
127 |
for i=1,9,1 do |
|
128 |
local node=minetest.env:get_node(gateNodes[i].pos) |
|
129 |
if node.name ~= "air" then return false end |
|
130 |
end |
|
131 |
minetest.env:set_node(gateNodes[1].pos,{name="stargate:gatenode8_off", param1=0, param2=dir}) |
|
132 |
minetest.env:set_node(gateNodes[2].pos,{name="stargate:gatenode7_off", param1=0, param2=dir}) |
|
133 |
minetest.env:set_node(gateNodes[3].pos,{name="stargate:gatenode9_off", param1=0, param2=dir}) |
|
134 |
minetest.env:set_node(gateNodes[4].pos,{name="stargate:gatenode5_off", param1=0, param2=dir}) |
|
135 |
minetest.env:set_node(gateNodes[5].pos,{name="stargate:gatenode4_off", param1=0, param2=dir}) |
|
136 |
minetest.env:set_node(gateNodes[6].pos,{name="stargate:gatenode6_off", param1=0, param2=dir}) |
|
137 |
minetest.env:set_node(gateNodes[7].pos,{name="stargate:gatenode2_off", param1=0, param2=dir}) |
|
138 |
minetest.env:set_node(gateNodes[8].pos,{name="stargate:gatenode1_off", param1=0, param2=dir}) |
|
139 |
minetest.env:set_node(gateNodes[9].pos,{name="stargate:gatenode3_off", param1=0, param2=dir}) |
|
140 |
local meta = minetest.env:get_meta(gateNodes[1].pos) |
1d101c
|
141 |
meta:set_string("infotext", "Stargate\nOwned by: "..player_name) |
773382
|
142 |
meta:set_string("gateNodes",minetest.serialize(gateNodes)) |
R |
143 |
meta:set_int("gateActive",0) |
|
144 |
meta:set_string("owner",player_name) |
e7b7eb
|
145 |
meta:set_string("dont_destroy","false") |
92c9f6
|
146 |
stargate.registerGate(player_name,gateNodes[1].pos,dir) |
773382
|
147 |
return true |
R |
148 |
end |
|
149 |
|
|
150 |
function removeGate (pos) |
|
151 |
local meta = minetest.env:get_meta(pos) |
e7b7eb
|
152 |
if meta:get_string("dont_destroy") == "true" then return end |
773382
|
153 |
local player_name=meta:get_string("owner") |
R |
154 |
local gateNodes=minetest.deserialize(meta:get_string("gateNodes")) |
|
155 |
for i=2,9,1 do |
|
156 |
minetest.env:remove_node(gateNodes[i].pos) |
|
157 |
end |
|
158 |
stargate.unregisterGate(player_name,gateNodes[1].pos) |
|
159 |
end |
|
160 |
|
1d101c
|
161 |
function activateGate (pos) |
773382
|
162 |
local node = minetest.env:get_node(pos) |
R |
163 |
local dir=node.param2 |
|
164 |
local meta = minetest.env:get_meta(pos) |
|
165 |
local gateNodes=minetest.deserialize(meta:get_string("gateNodes")) |
|
166 |
meta:set_int("gateActive",1) |
e7b7eb
|
167 |
meta:set_string("dont_destroy","true") |
R |
168 |
minetest.sound_play("gateOpen", {pos = pos, gain = 1.0,loop = false, max_hear_distance = 72,}) |
773382
|
169 |
swap_gate_node(gateNodes[1].pos,"stargate:gatenode8",dir) |
R |
170 |
swap_gate_node(gateNodes[2].pos,"stargate:gatenode7",dir) |
|
171 |
swap_gate_node(gateNodes[3].pos,"stargate:gatenode9",dir) |
|
172 |
swap_gate_node(gateNodes[4].pos,"stargate:gatenode5",dir) |
|
173 |
swap_gate_node(gateNodes[5].pos,"stargate:gatenode4",dir) |
|
174 |
swap_gate_node(gateNodes[6].pos,"stargate:gatenode6",dir) |
|
175 |
swap_gate_node(gateNodes[7].pos,"stargate:gatenode2",dir) |
|
176 |
swap_gate_node(gateNodes[8].pos,"stargate:gatenode1",dir) |
|
177 |
swap_gate_node(gateNodes[9].pos,"stargate:gatenode3",dir) |
e7b7eb
|
178 |
meta:set_string("dont_destroy","false") |
773382
|
179 |
end |
R |
180 |
|
1d101c
|
181 |
function deactivateGate (pos) |
773382
|
182 |
local node = minetest.env:get_node(pos) |
R |
183 |
local dir=node.param2 |
|
184 |
local meta = minetest.env:get_meta(pos) |
|
185 |
local gateNodes=minetest.deserialize(meta:get_string("gateNodes")) |
|
186 |
meta:set_int("gateActive",0) |
e7b7eb
|
187 |
meta:set_string("dont_destroy","true") |
R |
188 |
minetest.sound_play("gateClose", {pos = pos, gain = 1.0,loop = false, max_hear_distance = 72,}) |
773382
|
189 |
swap_gate_node(gateNodes[1].pos,"stargate:gatenode8_off",dir) |
R |
190 |
swap_gate_node(gateNodes[2].pos,"stargate:gatenode7_off",dir) |
|
191 |
swap_gate_node(gateNodes[3].pos,"stargate:gatenode9_off",dir) |
|
192 |
swap_gate_node(gateNodes[4].pos,"stargate:gatenode5_off",dir) |
|
193 |
swap_gate_node(gateNodes[5].pos,"stargate:gatenode4_off",dir) |
|
194 |
swap_gate_node(gateNodes[6].pos,"stargate:gatenode6_off",dir) |
|
195 |
swap_gate_node(gateNodes[7].pos,"stargate:gatenode2_off",dir) |
|
196 |
swap_gate_node(gateNodes[8].pos,"stargate:gatenode1_off",dir) |
|
197 |
swap_gate_node(gateNodes[9].pos,"stargate:gatenode3_off",dir) |
e7b7eb
|
198 |
meta:set_string("dont_destroy","false") |
773382
|
199 |
end |
R |
200 |
|
|
201 |
gateCanDig = function(pos,player) |
|
202 |
local player_name = player:get_player_name() |
|
203 |
local meta = minetest.env:get_meta(pos) |
e7b7eb
|
204 |
if meta:get_string("dont_destroy") == "true" then return end |
773382
|
205 |
local owner=meta:get_string("owner") |
R |
206 |
if player_name==owner then return true |
|
207 |
else return false end |
|
208 |
end |
|
209 |
|
|
210 |
sg_selection_box = { |
|
211 |
type = "fixed", |
|
212 |
fixed={{-1.5,-0.5,-1/20,1.5,2.5,1/20},}, |
|
213 |
} |
|
214 |
sg_selection_box_empty = { |
|
215 |
type = "fixed", |
|
216 |
fixed={}, |
|
217 |
} |
|
218 |
sg_node_box = { |
|
219 |
type = "fixed", |
|
220 |
fixed={{-.5,-.5,0,.5,.5,0},}, |
|
221 |
} |
|
222 |
sg_groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1} |
|
223 |
sg_groups1 = {snappy=2,choppy=2,oddly_breakable_by_hand=2} |
|
224 |
|
|
225 |
minetest.register_node("stargate:gatenode1",{ |
|
226 |
description = "up1", |
|
227 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
228 |
{name="up3.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}, |
|
229 |
{name="up1.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}}, |
|
230 |
groups = sg_groups, |
|
231 |
paramtype2 = "facedir", |
|
232 |
paramtype = "light", |
|
233 |
light_source = 10, |
|
234 |
drawtype = "nodebox", |
|
235 |
selection_box = sg_selection_box_empty, |
|
236 |
node_box=sg_node_box, |
|
237 |
}) |
|
238 |
minetest.register_node("stargate:gatenode2",{ |
|
239 |
description = "up2", |
|
240 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
241 |
{name="up2.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}, |
|
242 |
{name="up2.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}}, |
|
243 |
groups = sg_groups, |
|
244 |
paramtype2 = "facedir", |
|
245 |
paramtype = "light", |
|
246 |
light_source = 10, |
|
247 |
drawtype = "nodebox", |
|
248 |
selection_box = sg_selection_box_empty, |
|
249 |
node_box=sg_node_box, |
|
250 |
}) |
|
251 |
|
|
252 |
minetest.register_node("stargate:gatenode3",{ |
|
253 |
description = "up3", |
|
254 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
255 |
{name="up1.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}, |
|
256 |
{name="up3.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}}, |
|
257 |
groups = sg_groups, |
|
258 |
paramtype2 = "facedir", |
|
259 |
paramtype = "light", |
|
260 |
light_source = 10, |
|
261 |
drawtype = "nodebox", |
|
262 |
selection_box = sg_selection_box_empty, |
|
263 |
node_box=sg_node_box, |
|
264 |
}) |
|
265 |
|
|
266 |
minetest.register_node("stargate:gatenode4",{ |
|
267 |
description = "mid1", |
|
268 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
269 |
{name="mid3.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}, |
|
270 |
{name="mid1.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}}, |
|
271 |
groups = sg_groups, |
|
272 |
paramtype2 = "facedir", |
|
273 |
paramtype = "light", |
|
274 |
light_source = 10, |
|
275 |
drawtype = "nodebox", |
|
276 |
selection_box = sg_selection_box_empty, |
|
277 |
node_box=sg_node_box, |
|
278 |
}) |
|
279 |
minetest.register_node("stargate:gatenode5",{ |
|
280 |
description = "mid2", |
|
281 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
282 |
{name="mid2.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}, |
|
283 |
{name="mid2.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}}, |
|
284 |
groups = sg_groups, |
|
285 |
paramtype2 = "facedir", |
|
286 |
paramtype = "light", |
|
287 |
light_source = 10, |
|
288 |
drawtype = "nodebox", |
|
289 |
selection_box = sg_selection_box_empty, |
|
290 |
node_box=sg_node_box, |
|
291 |
}) |
|
292 |
|
|
293 |
minetest.register_node("stargate:gatenode6",{ |
|
294 |
description = "mid3", |
|
295 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
296 |
{name="mid1.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}, |
|
297 |
{name="mid3.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}}, |
|
298 |
groups = sg_groups, |
|
299 |
paramtype2 = "facedir", |
|
300 |
paramtype = "light", |
|
301 |
light_source = 10, |
|
302 |
drawtype = "nodebox", |
|
303 |
selection_box = sg_selection_box_empty, |
|
304 |
node_box=sg_node_box, |
|
305 |
}) |
|
306 |
|
|
307 |
minetest.register_node("stargate:gatenode7",{ |
|
308 |
description = "down1", |
|
309 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
310 |
{name="down3.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}, |
|
311 |
{name="down1.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}}, |
|
312 |
groups = sg_groups, |
|
313 |
paramtype2 = "facedir", |
|
314 |
paramtype = "light", |
|
315 |
light_source = 10, |
|
316 |
drawtype = "nodebox", |
|
317 |
selection_box = sg_selection_box_empty, |
|
318 |
node_box=sg_node_box, |
|
319 |
}) |
|
320 |
|
|
321 |
minetest.register_node("stargate:gatenode8",{ |
|
322 |
description = "down2", |
|
323 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
324 |
{name="down2.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}, |
|
325 |
{name="down2.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}}, |
|
326 |
groups = sg_groups, |
|
327 |
drop="stargate:gatenode8_off", |
|
328 |
paramtype2 = "facedir", |
|
329 |
paramtype = "light", |
|
330 |
light_source = 10, |
|
331 |
drawtype = "nodebox", |
|
332 |
selection_box = sg_selection_box, |
|
333 |
node_box=sg_node_box, |
|
334 |
can_dig = gateCanDig, |
|
335 |
on_destruct = function (pos) |
|
336 |
removeGate(pos) |
|
337 |
end, |
e7b7eb
|
338 |
on_rightclick=stargate.gateFormspecHandler, |
773382
|
339 |
}) |
R |
340 |
|
|
341 |
minetest.register_node("stargate:gatenode9",{ |
|
342 |
description = "down3", |
|
343 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
344 |
{name="down1.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}, |
|
345 |
{name="down3.png",animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=1},}}, |
|
346 |
groups = sg_groups, |
|
347 |
paramtype2 = "facedir", |
|
348 |
paramtype = "light", |
|
349 |
light_source = 10, |
|
350 |
drawtype = "nodebox", |
|
351 |
selection_box = sg_selection_box_empty, |
|
352 |
node_box=sg_node_box, |
|
353 |
}) |
|
354 |
|
|
355 |
minetest.register_node("stargate:gatenode1_off",{ |
|
356 |
description = "up1_off", |
|
357 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
358 |
"up3_off.png","up1_off.png"}, |
|
359 |
groups = sg_groups, |
|
360 |
paramtype2 = "facedir", |
|
361 |
paramtype = "light", |
|
362 |
drawtype = "nodebox", |
|
363 |
selection_box = sg_selection_box_empty, |
|
364 |
node_box=sg_node_box, |
|
365 |
}) |
|
366 |
minetest.register_node("stargate:gatenode2_off",{ |
|
367 |
description = "up2_off", |
|
368 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
369 |
"up2_off.png","up2_off.png"}, |
|
370 |
groups = sg_groups, |
|
371 |
paramtype2 = "facedir", |
|
372 |
paramtype = "light", |
|
373 |
drawtype = "nodebox", |
|
374 |
selection_box = sg_selection_box_empty, |
|
375 |
node_box=sg_node_box, |
|
376 |
}) |
|
377 |
|
|
378 |
minetest.register_node("stargate:gatenode3_off",{ |
|
379 |
description = "up3_off", |
|
380 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
381 |
"up1_off.png","up3_off.png"}, |
|
382 |
groups = sg_groups, |
|
383 |
paramtype2 = "facedir", |
|
384 |
paramtype = "light", |
|
385 |
drawtype = "nodebox", |
|
386 |
selection_box = sg_selection_box_empty, |
|
387 |
node_box=sg_node_box, |
|
388 |
}) |
|
389 |
|
|
390 |
minetest.register_node("stargate:gatenode4_off",{ |
|
391 |
description = "mid1_off", |
|
392 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
393 |
"mid3_off.png","mid1_off.png"}, |
|
394 |
groups = sg_groups, |
|
395 |
paramtype2 = "facedir", |
|
396 |
paramtype = "light", |
|
397 |
drawtype = "nodebox", |
|
398 |
selection_box = sg_selection_box_empty, |
|
399 |
node_box=sg_node_box, |
|
400 |
}) |
|
401 |
minetest.register_node("stargate:gatenode5_off",{ |
|
402 |
description = "mid2_off", |
|
403 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
404 |
"mid2_off.png","mid2_off.png"}, |
|
405 |
groups = sg_groups, |
|
406 |
paramtype2 = "facedir", |
|
407 |
paramtype = "light", |
|
408 |
drawtype = "nodebox", |
|
409 |
selection_box = sg_selection_box_empty, |
|
410 |
node_box=sg_node_box, |
|
411 |
}) |
|
412 |
|
|
413 |
minetest.register_node("stargate:gatenode6_off",{ |
|
414 |
description = "mid3_off", |
|
415 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
416 |
"mid1_off.png","mid3_off.png"}, |
|
417 |
groups = sg_groups, |
|
418 |
paramtype2 = "facedir", |
|
419 |
paramtype = "light", |
|
420 |
drawtype = "nodebox", |
|
421 |
selection_box = sg_selection_box_empty, |
|
422 |
node_box=sg_node_box, |
|
423 |
}) |
|
424 |
|
|
425 |
minetest.register_node("stargate:gatenode7_off",{ |
|
426 |
description = "down1_off", |
|
427 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
428 |
"down3_off.png","down1_off.png"}, |
|
429 |
groups = sg_groups, |
|
430 |
paramtype2 = "facedir", |
|
431 |
paramtype = "light", |
|
432 |
drawtype = "nodebox", |
|
433 |
selection_box = sg_selection_box_empty, |
|
434 |
node_box=sg_node_box, |
|
435 |
}) |
|
436 |
|
|
437 |
--main gate node |
|
438 |
minetest.register_node("stargate:gatenode8_off",{ |
|
439 |
description = "Stargate", |
|
440 |
inventory_image = "stargate.png", |
|
441 |
wield_image = "stargate.png", |
|
442 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
443 |
"down2_off.png","down2_off.png"}, |
|
444 |
groups = sg_groups1, |
|
445 |
paramtype2 = "facedir", |
|
446 |
paramtype = "light", |
|
447 |
drawtype = "nodebox", |
|
448 |
selection_box = sg_selection_box, |
|
449 |
node_box=sg_node_box, |
|
450 |
can_dig = gateCanDig, |
|
451 |
on_destruct = function (pos) |
|
452 |
removeGate(pos) |
|
453 |
end, |
|
454 |
on_place = function(itemstack, placer, pointed_thing) |
|
455 |
local pos = pointed_thing.above |
|
456 |
if placeGate(placer,pos)==true then |
|
457 |
itemstack:take_item(1) |
|
458 |
return itemstack |
|
459 |
else |
|
460 |
return |
|
461 |
end |
|
462 |
end, |
|
463 |
on_rightclick=stargate.gateFormspecHandler, |
|
464 |
}) |
|
465 |
|
|
466 |
minetest.register_node("stargate:gatenode9_off",{ |
|
467 |
description = "down3_off", |
|
468 |
tiles = {"default_cobble.png","default_cobble.png","default_cobble.png","default_cobble.png", |
|
469 |
"down1_off.png","down3_off.png"}, |
|
470 |
groups = sg_groups, |
|
471 |
paramtype2 = "facedir", |
|
472 |
paramtype = "light", |
|
473 |
drawtype = "nodebox", |
|
474 |
selection_box = sg_selection_box_empty, |
|
475 |
node_box=sg_node_box, |
|
476 |
}) |
92c9f6
|
477 |
|
R |
478 |
minetest.register_abm({ |
|
479 |
nodenames = {"stargate:gatenode8"}, |
|
480 |
interval = 1, |
|
481 |
chance = 1, |
|
482 |
action = function(pos, node, active_object_count, active_object_count_wider) |
|
483 |
local meta = minetest.env:get_meta(pos) |
|
484 |
for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 1)) do |
|
485 |
if object:is_player() then |
|
486 |
local player_name = object:get_player_name() |
1d101c
|
487 |
local owner=meta:get_string("owner") |
R |
488 |
local gate=stargate.findGate (pos) |
|
489 |
if gate==nil then print("Gate is not registered!") return end |
92c9f6
|
490 |
local pos1={} |
R |
491 |
pos1.x=gate["destination"].x |
|
492 |
pos1.y=gate["destination"].y |
|
493 |
pos1.z=gate["destination"].z |
1d101c
|
494 |
local dest_gate=stargate.findGate (pos1) |
R |
495 |
if dest_gate==nil then |
|
496 |
gate["destination"]=nil |
|
497 |
deactivateGate(pos) |
|
498 |
stargate.save_data(owner) |
|
499 |
return |
|
500 |
end |
|
501 |
if player_name~=owner and gate["type"]=="private" then return end |
92c9f6
|
502 |
local dir1=gate["destination_dir"] |
R |
503 |
if dir1 == 0 then |
|
504 |
pos1.z=pos1.z+2 |
|
505 |
elseif dir1 == 1 then |
|
506 |
pos1.x=pos1.x+2 |
|
507 |
elseif dir1 == 2 then |
|
508 |
pos1.z=pos1.z-2 |
|
509 |
elseif dir1 == 3 then |
|
510 |
pos1.x=pos1.x-2 |
|
511 |
end |
1d101c
|
512 |
object:moveto(pos1,false) |
92c9f6
|
513 |
minetest.sound_play("enterEventHorizon", {pos = pos, gain = 1.0,loop = false, max_hear_distance = 72,}) |
R |
514 |
end |
|
515 |
end |
|
516 |
end |
|
517 |
}) |