mirror of
https://github.com/HybridDog/we_undo.git
synced 2025-01-07 13:17:35 +01:00
Update README and support replace and replaceinverse
This commit is contained in:
parent
7ba4e30ff6
commit
6d08b6ce7e
57
README.md
57
README.md
@ -9,22 +9,71 @@ Related issues:
|
|||||||
* https://forum.minetest.net/viewtopic.php?p=296543#p296543
|
* https://forum.minetest.net/viewtopic.php?p=296543#p296543
|
||||||
|
|
||||||
Supported chatcommands:
|
Supported chatcommands:
|
||||||
* /pos1
|
* /pos1 and /1
|
||||||
* /pos2
|
* /pos2 and /2
|
||||||
* /p
|
* /p
|
||||||
* /set
|
* /set and /s
|
||||||
|
* /replace and /r
|
||||||
|
* /replaceinverse and /ri
|
||||||
* /load
|
* /load
|
||||||
* /y
|
* /y
|
||||||
* /n
|
* /n
|
||||||
|
|
||||||
Ignored chatcommands:
|
Ignored chatcommands:
|
||||||
|
* /lua
|
||||||
|
* /luatransform
|
||||||
|
* /clearobjects
|
||||||
* /fixlight
|
* /fixlight
|
||||||
* /volume
|
|
||||||
* /save
|
* /save
|
||||||
|
* /mtschemcreate
|
||||||
|
* /mtschemprob
|
||||||
|
* /inspect /i
|
||||||
|
* /mark /mk
|
||||||
|
* /unmark /umk
|
||||||
|
* /volume and /v
|
||||||
|
* /about
|
||||||
|
|
||||||
|
Not yet implemented:
|
||||||
|
* /fixedpos /fp
|
||||||
|
* /reset /rst
|
||||||
|
* /shift
|
||||||
|
* /expand
|
||||||
|
* /contract
|
||||||
|
* /outset
|
||||||
|
* /inset
|
||||||
|
* /mix
|
||||||
|
* /hollowsphere /hspr
|
||||||
|
* /sphere /spr
|
||||||
|
* /hollowdome /hdo
|
||||||
|
* /dome /do
|
||||||
|
* /hollowcylinder /hcyl
|
||||||
|
* /cylinder /cyl
|
||||||
|
* /hollowpyramid /hpyr
|
||||||
|
* /pyramid /pyr
|
||||||
|
* /spiral
|
||||||
|
* /copy
|
||||||
|
* /move
|
||||||
|
* /stack
|
||||||
|
* /stack2
|
||||||
|
* /scale
|
||||||
|
* /transpose
|
||||||
|
* /flip
|
||||||
|
* /rotate
|
||||||
|
* /orient
|
||||||
|
* /drain
|
||||||
|
* /hide
|
||||||
|
* /suppress
|
||||||
|
* /highlight
|
||||||
|
* /restore
|
||||||
|
* /allocate
|
||||||
|
* /mtschemplace
|
||||||
|
* /deleteblocks
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
* Add parameters to undo and redo: undo the last n
|
* Add parameters to undo and redo: undo the last n
|
||||||
* Allow undoing changes which happened before other changes (considered unsafe)
|
* Allow undoing changes which happened before other changes (considered unsafe)
|
||||||
e.g. //undo ~1 to undo the change before the latest one
|
e.g. //undo ~1 to undo the change before the latest one
|
||||||
|
* Add times to the changes, show in //show_journal
|
||||||
* Implement more commands
|
* Implement more commands
|
||||||
|
34
init.lua
34
init.lua
@ -12,7 +12,7 @@ local max_memory_usage = tonumber(
|
|||||||
minetest.settings:get"we_undo.max_memory_usage") or 2^25
|
minetest.settings:get"we_undo.max_memory_usage") or 2^25
|
||||||
|
|
||||||
|
|
||||||
----------------- Journal and chatcommands -------------------------------------
|
----------------- Journal and we_undo chatcommands -----------------------------
|
||||||
|
|
||||||
local command_invoker
|
local command_invoker
|
||||||
|
|
||||||
@ -229,6 +229,7 @@ minetest.register_chatcommand("/show_journal", {
|
|||||||
|
|
||||||
if remember_innocuous then
|
if remember_innocuous then
|
||||||
|
|
||||||
|
-- short commands (/1 in this case) are automatically supported
|
||||||
override_chatcommand("/pos1",
|
override_chatcommand("/pos1",
|
||||||
function()
|
function()
|
||||||
add_to_history{
|
add_to_history{
|
||||||
@ -452,8 +453,7 @@ end
|
|||||||
|
|
||||||
----------------------- World changing commands --------------------------------
|
----------------------- World changing commands --------------------------------
|
||||||
|
|
||||||
local we_set = worldedit.set
|
local function we_nodeset_wrapper(func, pos1, pos2, ...)
|
||||||
local function my_we_set(pos1, pos2, ...)
|
|
||||||
assert(command_invoker, "Player not known")
|
assert(command_invoker, "Player not known")
|
||||||
pos1, pos2 = worldedit.sort_pos(pos1, pos2)
|
pos1, pos2 = worldedit.sort_pos(pos1, pos2)
|
||||||
-- FIXME: Protection support isn't needed
|
-- FIXME: Protection support isn't needed
|
||||||
@ -464,7 +464,7 @@ local function my_we_set(pos1, pos2, ...)
|
|||||||
local data_before = manip:get_data()
|
local data_before = manip:get_data()
|
||||||
|
|
||||||
we_data = nil
|
we_data = nil
|
||||||
local rv = we_set(pos1, pos2, ...)
|
local rv = func(pos1, pos2, ...)
|
||||||
|
|
||||||
local ystride = pos2.x - pos1.x + 1
|
local ystride = pos2.x - pos1.x + 1
|
||||||
local zstride = (pos2.y - pos1.y + 1) * ystride
|
local zstride = (pos2.y - pos1.y + 1) * ystride
|
||||||
@ -504,8 +504,15 @@ local function my_we_set(pos1, pos2, ...)
|
|||||||
index_bytes = index_bytes,
|
index_bytes = index_bytes,
|
||||||
compressed_data = compressed_data
|
compressed_data = compressed_data
|
||||||
}, command_invoker)
|
}, command_invoker)
|
||||||
-- Note: param1, param2 and metadata are not changed by worldedit.set
|
|
||||||
return rv
|
return rv
|
||||||
|
-- Note: param1, param2 and metadata are not changed by worldedit.set and
|
||||||
|
-- similar functions
|
||||||
|
end
|
||||||
|
|
||||||
|
local we_set = worldedit.set
|
||||||
|
local function my_we_set(pos1, pos2, ...)
|
||||||
|
return we_nodeset_wrapper(we_set, pos1, pos2, ...)
|
||||||
end
|
end
|
||||||
override_cc_with_confirm("/set",
|
override_cc_with_confirm("/set",
|
||||||
function()
|
function()
|
||||||
@ -516,6 +523,23 @@ override_cc_with_confirm("/set",
|
|||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|
||||||
|
local we_replace = worldedit.replace
|
||||||
|
local function my_we_replace(pos1, pos2, ...)
|
||||||
|
return we_nodeset_wrapper(we_replace, pos1, pos2, ...)
|
||||||
|
end
|
||||||
|
-- both commands share the same function
|
||||||
|
local replace_cmds = {"/replace", "/replaceinverse"}
|
||||||
|
for i = 1,2 do
|
||||||
|
override_cc_with_confirm(replace_cmds[i],
|
||||||
|
function()
|
||||||
|
worldedit.replace = my_we_replace
|
||||||
|
end,
|
||||||
|
function()
|
||||||
|
worldedit.replace = we_replace
|
||||||
|
end
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
undo_funcs.nodeids = function(name, data)
|
undo_funcs.nodeids = function(name, data)
|
||||||
local pos1 = data.pos1
|
local pos1 = data.pos1
|
||||||
local pos2 = data.pos2
|
local pos2 = data.pos2
|
||||||
|
Loading…
Reference in New Issue
Block a user