From 61ab240ceac0ce20f19cbdccdecfd3028cf6893a Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 23 Mar 2016 22:09:55 +0100 Subject: [PATCH] Add //drain --- ChatCommands.md | 6 ++++++ worldedit_commands/init.lua | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/ChatCommands.md b/ChatCommands.md index d3ed7db..b11aaf0 100644 --- a/ChatCommands.md +++ b/ChatCommands.md @@ -291,6 +291,12 @@ Fixes the lighting in the current WorldEdit region. //fixlight +### `//drain` + +Removes any fluid node within the current WorldEdit region. + + //drain + ### `//hide` Hide all nodes in the current WorldEdit region non-destructively. diff --git a/worldedit_commands/init.lua b/worldedit_commands/init.lua index 83a127e..c93a760 100644 --- a/worldedit_commands/init.lua +++ b/worldedit_commands/init.lua @@ -838,6 +838,30 @@ minetest.register_chatcommand("/fixlight", { end), }) +minetest.register_chatcommand("/drain", { + params = "", + description = "Remove any fluid node within the current WorldEdit region", + privs = {worldedit=true}, + func = safe_region(function(name, param) + -- TODO: make an API function for this + local count = 0 + local pos1, pos2 = worldedit.sort_pos(worldedit.pos1[name], worldedit.pos2[name]) + for x = pos1.x, pos2.x do + for y = pos1.y, pos2.y do + for z = pos1.z, pos2.z do + local n = minetest.get_node({x=x, y=y, z=z}).name + local d = minetest.registered_nodes[n] + if d ~= nil and (d["drawtype"] == "liquid" or d["drawtype"] == "flowingliquid") then + minetest.remove_node({x=x, y=y, z=z}) + count = count + 1 + end + end + end + end + worldedit.player_notify(name, count .. " nodes updated") + end), +}) + minetest.register_chatcommand("/hide", { params = "", description = "Hide all nodes in the current WorldEdit region non-destructively",