diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2020-06-09 17:44:13 +0200 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2020-06-09 17:44:13 +0200 |
commit | 00cd9d750f2ee5ce954426251ab97bb304d2e2a6 (patch) | |
tree | 3cbcc8738bbf56ffee295f94862376315b49163e /src/common/schems.lua | |
parent | 7cc0e9d41ffdd8dc873aff2fe0501b617322d490 (diff) | |
download | skycraft-00cd9d750f2ee5ce954426251ab97bb304d2e2a6.tar.xz |
Added Missing Files
Diffstat (limited to 'src/common/schems.lua')
-rw-r--r-- | src/common/schems.lua | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/common/schems.lua b/src/common/schems.lua new file mode 100644 index 0000000..ace1637 --- /dev/null +++ b/src/common/schems.lua @@ -0,0 +1,42 @@ +skycraft.schems = {} + +function skycraft.get_schem(schemname) + return skycraft.schems[schemname].data +end + +function skycraft.get_schem_raw(schemname) + return skycraft.schems[schemname].raw +end + +function skycraft.load_schem(schemname) + local schem = {} + local file = io.open(skycraft.modpath .. "/schems/" .. schemname .. ".we", "r") + schem.raw = file:read() + file:seek("set") + local _, _, contents = file:read("*number", 1, "*all") + file:close() + schem.data = minetest.deserialize(contents) + skycraft.schems[schemname] = schem +end + +function skycraft.check_schem(pos, schemname) + local schem = skycraft.get_schem(schemname) + for _, n in pairs(schem) do + if minetest.get_node(vector.add(pos, n)).name ~= n.name then + return false + end + end + return true +end + +function skycraft.remove_schem(pos, schemname) + local schem = skycraft.get_schem(schemname) + for _, n in pairs(schem) do + minetest.remove_node(vector.add(pos, n)) + end +end + +function skycraft.add_schem(pos, schemname) + local schem_raw = skycraft.get_schem_raw(schemname) + worldedit.deserialize(pos, schem_raw) +end |