]> git.lizzy.rs Git - worldedit.git/commitdiff
Randomized set
authorCy <whatever>
Mon, 30 Jun 2014 23:13:44 +0000 (16:13 -0700)
committerCy <whatever>
Mon, 30 Jun 2014 23:13:44 +0000 (16:13 -0700)
Can /set node node2 node3 and it will randomly choose between those
three.

worldedit/manipulations.lua
worldedit_commands/init.lua

index 1d4c6dc2096a1c04e3ff387513be56eb7d9eaf3a..40915ed5799746d4a675b0095cf2b257ad545fa8 100644 (file)
@@ -24,7 +24,11 @@ worldedit.volume = function(pos1, pos2)
 end\r
 \r
 --sets a region defined by positions `pos1` and `pos2` to `nodename`, returning the number of nodes filled\r
-worldedit.set = function(pos1, pos2, nodename)\r
+worldedit.set = function(pos1, pos2, nodenames)\r
+    if type(nodenames) == 'string' then\r
+        nodenames = {nodenames}\r
+    end\r
+\r
        local pos1, pos2 = worldedit.sort_pos(pos1, pos2)\r
 \r
        --set up voxel manipulator\r
@@ -40,9 +44,12 @@ worldedit.set = function(pos1, pos2, nodename)
        end\r
 \r
        --fill selected area with node\r
-       local node_id = minetest.get_content_id(nodename)\r
+       local node_ids = {}\r
+    for i,v in ipairs(nodenames) do\r
+        node_ids[i] = minetest.get_content_id(nodenames[i])\r
+    end\r
        for i in area:iterp(pos1, pos2) do\r
-               nodes[i] = node_id\r
+               nodes[i] = node_ids[math.random(#node_ids)]\r
        end\r
 \r
        --update map nodes\r
index 2bbfeed3886542e98d77056f7aae9c1f3ef82010..04f2f4c25a4490f01de09b77064b247536b0412c 100644 (file)
@@ -278,22 +278,26 @@ minetest.register_chatcommand("/volume", {
        end,\r
 })\r
 \r
-local check_set = function(name, param)\r
-       local node = get_node(name, param)\r
-       if not node then return nil end\r
-       return check_region(name, param)\r
-end\r
-\r
 minetest.register_chatcommand("/set", {\r
        params = "<node>",\r
        description = "Set the current WorldEdit region to <node>",\r
        privs = {worldedit=true},\r
        func = safe_region(function(name, param)\r
+        local nodes = {}\r
+\r
+        for nodename in param:gmatch("[^%s]+") do\r
+            local node = get_node(name, nodename)\r
+            if not node then\r
+                worldedit.player_notify(name, 'Could not identify node "'..name..'"')\r
+                return\r
+            end\r
+            nodes[#nodes+1] = node\r
+        end\r
+\r
                local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]\r
-               local node = get_node(name, param)\r
-               local count = worldedit.set(pos1, pos2, node)\r
+               local count = worldedit.set(pos1, pos2, nodes)\r
                worldedit.player_notify(name, count .. " nodes set")\r
-       end, check_set),\r
+       end, check_region),\r
 })\r
 \r
 local check_replace = function(name, param)\r