358
359
360
361
362
363
364
365
|
end
return i, false
end
else
return function(i) return i, false end
end
end;
}
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
|
end
return i, false
end
else
return function(i) return i, false end
end
end;
autopreserve = function(id, tbl)
tbl.drop = tbl.drop or {
max_items = 1;
items = {
{ items = {id} };
};
}
local next_apn = tbl.after_place_node
tbl.after_place_node = function(...) local pos, who, stack = ...
minetest.get_meta(pos):from_table(stack:get_meta():to_table())
if next_apn then return next_apn(...) end
end
local next_pm = tbl.preserve_metadata
tbl.preserve_metadata = function(...) local pos, node, meta, drops = ...
drops[1]:get_meta():from_table({fields = meta})
if next_pm then return next_pm(...) end
end
return tbl
end;
reg_autopreserve = function(id, tbl)
minetest.register_node(id, sorcery.lib.node.autopreserve(id, tbl))
end;
}
|