Add support to select node /set and /replace
parent
58c47c4e5a
commit
50a456ddfb
|
@ -45,9 +45,10 @@ Currently supported commands are:
|
|||
- sets the node for the player
|
||||
- uses wielditem if nodename isnt specified
|
||||
- /set
|
||||
- no parameters
|
||||
- optional parameter: nodename
|
||||
- sets the region specified by position 1 & 2 to the the selected node
|
||||
- selects the wielditem if no node is selected
|
||||
- nodename will be selected if given
|
||||
- /stop
|
||||
- no parameters
|
||||
- stops the running command of the player or removes the command for the
|
||||
|
@ -59,10 +60,11 @@ Currently supported commands are:
|
|||
- no parameters
|
||||
- continues the paused command of the player
|
||||
- /replace
|
||||
- optional parameter: nodename
|
||||
- optional parameter: nodename or nodename nodename
|
||||
- replaces the given node with the selected node in the region specified by
|
||||
position 1 & 2
|
||||
- uses wielditem if nodename isnt specified
|
||||
- selects second nodename if given
|
||||
- /fixlight
|
||||
- no parameters
|
||||
- fixes light in the region specified by position 1 & 2 by digging air in it
|
||||
|
|
50
init.lua
50
init.lua
|
@ -515,22 +515,30 @@ minetest.register_chatcommand("select", {
|
|||
})
|
||||
|
||||
minetest.register_chatcommand("set", {
|
||||
params = "<none>",
|
||||
params = "<none> | <nodename>",
|
||||
description = "Sets nodes in area",
|
||||
privs = {worldedit = true},
|
||||
func = function(playername, param)
|
||||
init_player(playername)
|
||||
if check_running(playername) then return end
|
||||
|
||||
if not wpp.data[playername].node then
|
||||
local item = minetest.env:get_player_by_name(playername):get_wielded_item():get_name()
|
||||
if minetest.registered_nodes[item] then
|
||||
wpp.data[playername].node = item
|
||||
send_player(playername, "Selecting wielditem")
|
||||
else
|
||||
send_player(playername, "No node selected and wielditem is not a node")
|
||||
if param ~= "" then
|
||||
if not minetest.registered_nodes[param] then
|
||||
send_player("Unknonwn node: "..param)
|
||||
return
|
||||
end
|
||||
wpp.data[playername].node = param
|
||||
else
|
||||
if not wpp.data[playername].node then
|
||||
local item = minetest.env:get_player_by_name(playername):get_wielded_item():get_name()
|
||||
if minetest.registered_nodes[item] then
|
||||
wpp.data[playername].node = item
|
||||
send_player(playername, "Selecting wielditem")
|
||||
else
|
||||
send_player(playername, "No node selected and wielditem is not a node")
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
if not wpp.data[playername].p1 then
|
||||
send_player(playername, "Position 1 not set")
|
||||
|
@ -571,17 +579,13 @@ minetest.register_chatcommand("dig", {
|
|||
})
|
||||
|
||||
minetest.register_chatcommand("replace", {
|
||||
params = "<none> | <nodename>",
|
||||
params = "<none> | <nodename> | <nodename> <nodename>",
|
||||
description = "Replaces node with selected node",
|
||||
privs = {worldedit = true},
|
||||
func = function(playername, param)
|
||||
init_player(playername)
|
||||
if check_running(playername) then return end
|
||||
|
||||
if not wpp.data[playername].node then
|
||||
send_player(playername, "No node selected")
|
||||
return
|
||||
end
|
||||
if not wpp.data[playername].p1 then
|
||||
send_player(playername, "No position 1 set. Please set one with /p1")
|
||||
return
|
||||
|
@ -591,11 +595,21 @@ minetest.register_chatcommand("replace", {
|
|||
return
|
||||
end
|
||||
if param ~= "" then
|
||||
if not minetest.registered_nodes[param] then
|
||||
send_player(playername, "Unknonwn node: "..param)
|
||||
local n1, n2 = string.match(param, "^([a-zA-Z0-9_:]*) ([a-zA-Z0-9_:]*)$")
|
||||
local node = n1 or param
|
||||
if not minetest.registered_nodes[node] then
|
||||
send_player(playername, "Unknonwn node: "..node)
|
||||
return
|
||||
end
|
||||
wpp.data[playername].replace = param
|
||||
wpp.data[playername].replace = node
|
||||
if n2 then
|
||||
if not minetest.registered_nodes[n2] then
|
||||
send_player(playername, "Unknonwn node: "..n2)
|
||||
return
|
||||
end
|
||||
send_player(playername, "Node selected: "..n2)
|
||||
wpp.data[playername].node = n2
|
||||
end
|
||||
else
|
||||
local item = minetest.env:get_player_by_name(playername):get_wielded_item():get_name()
|
||||
if minetest.registered_nodes[item] then
|
||||
|
@ -605,6 +619,10 @@ minetest.register_chatcommand("replace", {
|
|||
return
|
||||
end
|
||||
end
|
||||
if not wpp.data[playername].node then
|
||||
send_player(playername, "No node selected")
|
||||
return
|
||||
end
|
||||
if wpp.data[playername].replace == wpp.data[playername].node then
|
||||
send_player(playername, "Nodes don't differ")
|
||||
return
|
||||
|
|
Loading…
Reference in New Issue