blob: 07cab42f12809f38eb4ee91dc38cc8c22cf9b128 (
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
|
-- passive.lua
-- API to passive components, as described in passive_api.txt of advtrains_luaautomation
-- This has been moved to the advtrains core in turn with the interlocking system,
-- to prevent a dependency on luaautomation.
local deprecation_warned = {}
function advtrains.getstate(parpos, pnode)
local pos
if atlatc then
pos = atlatc.pcnaming.resolve_pos(parpos)
else
pos = advtrains.round_vector_floor_y(parpos)
end
if type(pos)~="table" or (not pos.x or not pos.y or not pos.z) then
debug.sethook()
error("Invalid position supplied to getstate")
end
local node=pnode or advtrains.ndb.get_node(pos)
local ndef=minetest.registered_nodes[node.name]
local st
if ndef and ndef.advtrains and ndef.advtrains.getstate then
st=ndef.advtrains.getstate
elseif ndef and ndef.luaautomation and ndef.luaautomation.getstate then
if not deprecation_warned[node.name] then
minetest.log("warning", node.name.." uses deprecated definition of ATLATC functions in the 'luaautomation' field. Please move them to the 'advtrains' field!")
end
st=ndef.luaautomation.getstate
else
return nil
end
if type(st)=="function" then
return st(pos, node)
else
return st
end
end
function advtrains.setstate(parpos, newstate, pnode)
local pos
if atlatc then
pos = atlatc.pcnaming.resolve_pos(parpos)
else
|