Warn when "misaligned" schematics are created

The underlying issue is the size detection worldedit.allocate does
and can't be fixed or worked around in a simple way.
master
sfan5 2019-09-09 01:07:17 +02:00
parent 0919f7cab3
commit 68f7bcc728
1 changed files with 18 additions and 0 deletions

View File

@ -1097,6 +1097,23 @@ minetest.register_chatcommand("/restore", {
end),
})
local function detect_misaligned_schematic(name, pos1, pos2)
pos1, pos2 = worldedit.sort_pos(pos1, pos2)
-- Check that allocate/save can position the schematic correctly
-- The expected behaviour is that the (0,0,0) corner of the schematic stays
-- sat pos1, this only works when the minimum position is actually present
-- in the schematic.
local node = minetest.get_node(pos1)
local have_node_at_origin = node.name ~= "air" and node.name ~= "ignore"
if not have_node_at_origin then
worldedit.player_notify(name,
"Warning: The schematic contains excessive free space and WILL be "..
"misaligned when allocated or loaded. To avoid this, shrink your "..
"area to cover exactly the nodes to be saved."
)
end
end
minetest.register_chatcommand("/save", {
params = "<file>",
description = "Save the current WorldEdit region to \"(world folder)/schems/<file>.we\"",
@ -1112,6 +1129,7 @@ minetest.register_chatcommand("/save", {
end
local result, count = worldedit.serialize(worldedit.pos1[name],
worldedit.pos2[name])
detect_misaligned_schematic(name, worldedit.pos1[name], worldedit.pos2[name])
local path = minetest.get_worldpath() .. "/schems"
-- Create directory if it does not already exist