Differences From
Artifact [75e0d781d2]:
64 64 z = pos.z + r(0 - range, range);
65 65 }
66 66 end
67 67 for name, inv in pairs(meta.inventory) do
68 68 if only and not lib.tbl.has(only,name) then goto skip end
69 69 for _, item in pairs(inv) do
70 70 if not item:is_empty() then
71 - minetest.add_item(offset(pos,0.4), item)
71 + core.add_item(offset(pos,0.4), item)
72 72 end
73 73 end
74 74 ::skip::end
75 75 end;
76 76
77 77 local force = function(pos,preload_for)
78 - local n = minetest.get_node_or_nil(pos)
78 + local n = core.get_node_or_nil(pos)
79 79 if preload_for then lib.node.preload(pos,preload_for) end
80 80 if n then return n end
81 81
82 - minetest.load_area(pos)
83 - return minetest.get_node(pos)
82 + core.load_area(pos)
83 + return core.get_node(pos)
84 84 end;
85 85
86 86 local amass = function(startpoint,names,directions)
87 87 if not directions then directions = ofs.neighbors end
88 88 local check = function(n)
89 89 return lib.tbl.has(names, n.name, function(check,against)
90 90 return lib.item.groupmatch(against,check)
................................................................................
123 123 until i > #stack
124 124 return nodes, positions
125 125 end;
126 126
127 127 local is_air = function(pos)
128 128 local n = force(pos)
129 129 if n.name == 'air' then return true end
130 - local d = minetest.registered_nodes[n.name]
130 + local d = core.registered_nodes[n.name]
131 131 if not d then return false end
132 132 return (d.walkable == false) and (d.drawtype == 'airlike' or d.buildable_to == true)
133 133 end;
134 134
135 135 local is_clear = function(pos)
136 136 if not lib.node.is_air(pos) then return false end
137 - local ents = minetest.get_objects_inside_radius(pos,0.5)
137 + local ents = core.get_objects_inside_radius(pos,0.5)
138 138 if #ents > 0 then return false end
139 139 return true
140 140 end;
141 141
142 142 local function boxwarp(nb, mogrifier, par)
143 143 if nb == nil then
144 144 return
................................................................................
184 184 end
185 185 end;
186 186
187 187 is_air = is_air;
188 188 is_clear = is_clear;
189 189
190 190 insert = function(item, slot, npos, user, inv)
191 - inv = inv or minetest.get_meta(npos):get_inventory()
191 + inv = inv or core.get_meta(npos):get_inventory()
192 192 if inv:room_for_item(slot,item) then
193 193 inv:add_item(slot,item)
194 194 else repeat
195 195 if user then
196 196 local ui = user:get_inventory()
197 197 if ui:room_for_item('main', item) then
198 198 ui:add_item('main', item)
199 199 break
200 200 end
201 201 end
202 - minetest.add_item(npos, item)
202 + core.add_item(npos, item)
203 203 until true end
204 204 end;
205 205
206 206 install_bed = function(bed, where, dir)
207 207 local bottom = bed .. '_bottom'
208 208 local top = bed .. '_top'
209 209 local d
210 210 if type(dir) == 'number' then
211 211 d = dir
212 - dir = minetest.facedir_to_dir(d)
212 + dir = core.facedir_to_dir(d)
213 213 else
214 - d = minetest.dir_to_facedir(dir)
214 + d = core.dir_to_facedir(dir)
215 215 end
216 216 if not is_clear(where) and is_clear(where - dir) then return false end
217 - minetest.set_node(where, {name = top, param2 = d})
218 - minetest.set_node(where - dir, {name = bottom, param2 = d})
217 + core.set_node(where, {name = top, param2 = d})
218 + core.set_node(where - dir, {name = bottom, param2 = d})
219 219 return true
220 220 end;
221 221
222 222 get_arrival_point = function(pos)
223 223 local try = function(p)
224 224 local air = lib.node.is_clear
225 225 if air(p) then
................................................................................
236 236 end
237 237 end;
238 238
239 239
240 240 forneighbor = function(pos, n, fn)
241 241 for _,p in pairs(n) do
242 242 local sum = vector.add(pos, p)
243 - local n = minetest.get_node(sum)
243 + local n = core.get_node(sum)
244 244 if n.name == 'ignore' then
245 - minetest.load_area(sum)
246 - n = minetest.get_node(sum)
245 + core.load_area(sum)
246 + n = core.get_node(sum)
247 247 end
248 248 if fn(sum, n) == false then break end
249 249 end
250 250 end;
251 251
252 252 amass = amass;
253 253
................................................................................
258 258 x = math.floor(pos.x / 16);
259 259 y = math.floor(pos.y / 16);
260 260 z = math.floor(pos.z / 16);
261 261 }
262 262 end;
263 263
264 264 preload = function(pos, user)
265 - minetest.load_area(pos)
265 + core.load_area(pos)
266 266 user:send_mapblock(lib.node.blockpos(pos))
267 267 end;
268 268
269 269 discharger = function(pos)
270 270 local below = force(vector.subtract(pos,{x=0,y=1,z=0}))
271 271 if below.name == 'hopper:hopper'
272 272 or below.name == 'hopper:hopper_side' then
273 - local hopper = minetest.get_meta(below):get_inventory()
273 + local hopper = core.get_meta(below):get_inventory()
274 274 return function(i)
275 275 if hopper:room_for_item('main',i) then
276 276 return hopper:add_item('main',i), true
277 277 end
278 278 return i, false
279 279 end
280 280 else
................................................................................
287 287 max_items = 1;
288 288 items = {
289 289 { items = {id} };
290 290 };
291 291 }
292 292 local next_apn = tbl.after_place_node
293 293 tbl.after_place_node = function(...) local pos, who, stack = ...
294 - minetest.get_meta(pos):from_table(stack:get_meta():to_table())
294 + core.get_meta(pos):from_table(stack:get_meta():to_table())
295 295 if next_apn then return next_apn(...) end
296 296 end
297 297 local next_pm = tbl.preserve_metadata
298 298 tbl.preserve_metadata = function(...) local pos, node, meta, drops = ...
299 299 drops[1]:get_meta():from_table({fields = meta})
300 300 if next_pm then return next_pm(...) end
301 301 end
302 302 return tbl
303 303 end;
304 304 reg_autopreserve = function(id, tbl)
305 - minetest.register_node(id, lib.node.autopreserve(id, tbl))
305 + core.register_node(id, lib.node.autopreserve(id, tbl))
306 306 end;
307 307
308 308 boxwarp = boxwarp;
309 309 boxwarped = boxwarped;
310 310 }