//mix: Add node weighting support

This commit is contained in:
Starbeamrainbowlabs 2018-10-12 21:06:01 +01:00 committed by sfan5
parent f7256633c0
commit b37605943b
2 changed files with 15 additions and 6 deletions

View File

@ -121,14 +121,16 @@ Set the current WorldEdit region to `<node>`.
Set the param2 value of all nodes in the current WorldEdit region to `<param2>`. Set the param2 value of all nodes in the current WorldEdit region to `<param2>`.
### `//mix <node1> ...` ### `//mix <node1> [<count1>] <node2> [<count2>]...`
Fill the current WorldEdit region with a random mix of `<node1>`, `...`. Fill the current WorldEdit region with a random mix of `<node1>`, `<node2>`, `...`. Weightings can be optionally specified via a number after a node name.
//mix air //mix air
//mix cactus stone glass sandstone //mix cactus stone glass sandstone
//mix Bronze //mix Bronze
//mix default:cobble air //mix default:cobble air
//mix stone 3 dirt 2
//mix cobblestone 8 stoneblock 2 stonebrick
### `//replace <search node> <replace node>` ### `//replace <search node> <replace node>`

View File

@ -425,15 +425,22 @@ minetest.register_chatcommand("/param2", {
}) })
minetest.register_chatcommand("/mix", { minetest.register_chatcommand("/mix", {
params = "<node1> ...", params = "<node1> [<weighting1>] [<node2> [<weighting2>]] ...",
description = "Fill the current WorldEdit region with a random mix of <node1>, ...", description = "Fill the current WorldEdit region with a random mix of <node1>, ...",
privs = {worldedit=true}, privs = {worldedit=true},
func = safe_region(function(name, param) func = safe_region(function(name, param)
local nodes = {} local nodes = {}
for nodename in param:gmatch("[^%s]+") do for nodename in param:gmatch("[^%s]+") do
local node = get_node(name, nodename) if tonumber(nodename) ~= nil and #nodes > 0 then
if not node then return end local last_node = nodes[#nodes]
nodes[#nodes + 1] = node for i = 1, tonumber(nodename) do
nodes[#nodes + 1] = last_node
end
else
local node = get_node(name, nodename)
if not node then return end
nodes[#nodes + 1] = node
end
end end
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name] local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]