mirror of
https://github.com/Uberi/Minetest-WorldEdit.git
synced 2024-12-25 18:20:38 +01:00
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.
This commit is contained in:
parent
0919f7cab3
commit
68f7bcc728
@ -1097,6 +1097,23 @@ minetest.register_chatcommand("/restore", {
|
|||||||
end),
|
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", {
|
minetest.register_chatcommand("/save", {
|
||||||
params = "<file>",
|
params = "<file>",
|
||||||
description = "Save the current WorldEdit region to \"(world folder)/schems/<file>.we\"",
|
description = "Save the current WorldEdit region to \"(world folder)/schems/<file>.we\"",
|
||||||
@ -1112,6 +1129,7 @@ minetest.register_chatcommand("/save", {
|
|||||||
end
|
end
|
||||||
local result, count = worldedit.serialize(worldedit.pos1[name],
|
local result, count = worldedit.serialize(worldedit.pos1[name],
|
||||||
worldedit.pos2[name])
|
worldedit.pos2[name])
|
||||||
|
detect_misaligned_schematic(name, worldedit.pos1[name], worldedit.pos2[name])
|
||||||
|
|
||||||
local path = minetest.get_worldpath() .. "/schems"
|
local path = minetest.get_worldpath() .. "/schems"
|
||||||
-- Create directory if it does not already exist
|
-- Create directory if it does not already exist
|
||||||
|
Loading…
Reference in New Issue
Block a user